目标检测(anchor-free) --- FCOS: 全卷积单阶段目标检测

全卷积单阶段目标检测

  • FCOS: Fully Convolutional One-Stage Object Detection
    • 基于anchor的目标检测的缺点
    • 一些anchor-free框架的缺点
    • FCOS的关键概念
      • center-ness
    • 实验部分还没看,以后有空再看
    • 引用

FCOS: Fully Convolutional One-Stage Object Detection

取fullyz convolutional这样的名字是说明这个真的全是卷积,没有像其他一样还要计算anchor和目标box的iou等。

center-based的anchor-free的目标检测方法,中文也就是基于中心的不需要anchor的目标检测方法。
预测的时候就像是做语义分割一样,每个像素预测,并且不需要定义anchor,就也不需要在过程中计算iou这些东西了,减少了很多的计算量,计算速度更快了,也更加简单了,后处理只需要非极大值抑制(NMS)。

基于anchor的目标检测的缺点

基于anchor的目标检测有很多缺点:

  1. 检测的精度和预先定义的anchor的大小、长宽比、还有数量有关。这些参数对于不一样大小的目标的检测任务时常常需要改动。
  2. 第二个其实也是anchor的问题,一旦anchor的大小、长宽比、数量缺点了以后,就固定了,所以碰上目标尺度变化较大的任务时,性能常常会下降。
  3. anchor的样本不平衡问题,因为需要对目标有较高的召回率,所以都要设置非常密集的,非常多的anchor,不这样设置的话可能会有目标分配不到anchor。所以负样本的anchor会非常多,这给训练带来了困难。
  4. 计算量大,anchor越多计算量越大,例如给anchor打标签的时候就需要计算大量的IOU。

基于anchor的目标检测,最开始是来自于传统的滑窗检测,当然anchor boxes可以被看做预先定义好的滑窗。In anchor-based detectors, the anchor boxes can be viewed as pre-defined sliding windows or proposals, which are classified as pos- itive or negative patches, with an extra offsets regression to refine the prediction of bounding box locations。Therefore, the anchor boxes in these detectors may be viewed as training samples.

所以说anchor boxes可以看做训练样本。

一些anchor-free框架的缺点

例如YOLO-v1,yolo-v1的缺点就是召回率低,因为一个格子只预测理他最近的一个物体,格子又少,所以他的召回率其实非常低。

然后比如cornerNet,它检测box的一对角并将它们分组以形成最终检测到的box。 CornerNet需要更复杂的后处理,才能将属于同一实例的corner进行分组。 为了分组的目的,学习了额外的距离度量。

FCOS的关键概念

  • 包围框内的点都是正样本,这样正负样本不平衡的问题就得到了缓和。
  • 特征图上的每个点对应原图上的一个点,所以这就是物体的“中心”了,所以不需要再去回归中心的坐标;
  • 这里的中心可以理解为物体包围框(box)内的点。但是离目标包围框中心越远的点的权重(置信度)肯定是越低的,他回归出的边界距离的质量肯定也是较低的.
  • 中心并不是box的中心,而是特征图上对应原图上的一个点,可以的特征图就是用来回归的那个特征图;
  • 需要回归中“中心”到四个边的距离,因为这里的中心并不是box的真正的中心,所以这个中心到四个边的距离可以是不一样的,如果是真正的中心那么中心到左右是距离一样的(也就是宽的一半);
  • 落在目标box内的点就是正样本;
  • 如果点落在多个box内,则划分给面积小的物体;
  • FCOS也使用FPN,也是不同的层预测不同尺寸大小的物体,这样也解决了大小物体重叠分配的问题.
  • 不同层的分支是不共享卷积参数的,retinanet中是共享的.
  • 其他的fpn参数和retinanet差不多,这里就不解释了。

center-ness

因为有了离目标中心越进的点(特征图上的点映射到原图)回归出的边界框的可信度越高的思想,所以这里还加了一个分支预测一个值,这个值就是离中心越近则越大,可视化出来以后就类似于一张热图.相当于这个分支预测一个热图出来,这个图里面可以是有很多目标.

目标检测(anchor-free) --- FCOS: 全卷积单阶段目标检测_第1张图片
目标检测(anchor-free) --- FCOS: 全卷积单阶段目标检测_第2张图片
这里预测类别是和retinanet里面是一样的,用的是focal loss,然后用的是binary crossentropy交叉熵,所以激活函数应该也是sigmoid。所以这里最后的类别得分是这个center-ness预测的热图的值乘以分类的值。

其实文章还提高,可以有别的方式替代这个center-ness效果也很好,既然你说离中心很远的预测得到的边界宽不准,那么我们把离中心某个距离半径的圆内的才作为正样本就好了,而不是一个矩阵内的都是正样本。

最后看一下这个网络结构:
和retinanet看起来差不多,主要的区别和难点是在如何做正样本和负样本,这些在网络结构里面是看不出来的。
目标检测(anchor-free) --- FCOS: 全卷积单阶段目标检测_第3张图片

实验部分还没看,以后有空再看

已经半夜了。。。

引用

  • FCOS: Fully Convolutional One-Stage Object Detection

你可能感兴趣的:(机器视觉,论文,深度学习,深度学习)