基于anchor free的目标检测方法

  • (一)背景与定义
    • 1.1 anchor-based的特征
    • 1.2 anchor的好处?
    • 1.3 anchor的局限?
    • 1.4 anchor-free 与anchor-based的区别
  • (二)概述
  • (三)早期探索型
    • DenseBox
      • 背景(人脸检测任务)
      • 检测流程
      • 先进思想
      • ground truth定义:
      • 多任务学习
      • 评价
  • (四)基于关键点系列(源于姿态估计)
    • CornerNet
      • 背景
      • 总体流程与架构
      • heatmaps是如何找到corner的?
      • embeddings是如何匹配corner的?
      • 为什么需要offset?
      • 评价
    • CornerNet-Lite
    • ExtremeNet
      • 背景
      • 流程
      • 与CornerNet的区别
      • 评价
    • CenterNet
      • 背景
      • 与CornerNet/ExtrmeNet的对比
      • 与acnhor-based的对比
      • 评价
    • CircleNet
      • 背景
      • 流程
      • 与CenterNet的相同点
  • (五)基于密集型系列(源于语义分割)
    • FCOS
      • 背景与思路
      • 网络结构
      • 多尺度分支结构
      • 多尺度分支分配
      • center-ness分支
      • 评价
    • FoveaBox
      • 概述
      • 正负样本定义
      • 预测选择
      • 坐标映射
      • 网络架构
      • 评价
  • (六)总结与思考
    • Keypoints-based(CornerNet、CenterNet和ExtremeNet)的目标检测方法的异同点
    • Dense-predicted(FSAF、FCOS和Foveabox)的目标检测方法的异同点


说明:本文仅供学习

(一)背景与定义

1.1 anchor-based的特征

前面我们讲的都是anchor-based方法,那么anchor-based methods总的特征就是在同一像素点上生成多个不同大小和比例的候选框(one-stage模型通常采用滑窗等(聚类)方式生成,而two-stage模型更多的是采用RPN来生成),并对其进行筛选,然后再进行分类和回归。一定程度上它能够解决目标尺度不一和遮挡的问题,提高检测精度。

1.2 anchor的好处?

  • 网络可直接在anchor上进行分类及回归任务。(有更高的分辨率,提取到的特征更加丰富)
  • 加入先验知识,使模型更加稳定和鲁棒。(由于加入了人为先验分布,同时在训练的时候prediction(尤其是regression)的值域变化范围实际上是比较小的,这就使得anchor-based的网络更加容易训练也更加稳定)。
  • 可以提高召回率,尤其是对小目标检测。
  • 一定程度上解决了物体遮挡和尺度不一致的问题。

1.3 anchor的局限?

  • 依赖过多的手动设计!
  • 训练和预测过程过于低效!(产生预选框所需要的耗时和算力大大增大)
  • 正负样本不均衡问题!

既然anchor的设计(初始化)对网络模型的影响这么大,我们是不是可以去除掉anchor来进行检测呢?基于上述的思考,anchor-free也开始迎来了自己的发展。那么anchor-free与anchor-based的区别是什么?

1.4 anchor-free 与anchor-based的区别

  • anchor-based的方法是通过anchor和对应的编码信息来表示物体的。(需要在图像的特征图中每个位置预先设置一定数量的anchor,然后对每个anchor进行分类和回归)
  • anchor-free的方法主要是通过多个关键点(角点)或者通过中心点与对应得边界信息来表示物体的。(不需要预先设定anchor,直接对图像进行目标检测)
  • 两者之间的区别在于是否使用anchor来生成候选框proposal,也可以说,两者之间的区别在于解空间的不同。

(二)概述


实际上我们前面讲的YOLO算法anchor free中比较早期的模型,所以anchor free并不是一个比较新的概念。早期的anchor-free模型可以追溯到15年CVPR的DenseBox,算是Anchor Free的起源吧。比同期的Faster-RCNN系列提前数月,但是论文直到9月才在arxiv上发布(YOLO是16年5月,比YOLO还早)。所以,anchor free的发展历史也可以说是相对久的。截止目前,anchor-free模型的发展主要可以分为早期探索、基于点和基于密集预测的。(这里只罗列出一部分比较有代表性的模型)

由于时间和内容的限制,这里我只介绍时间轴上的这些模型。其中,因为DenseBox对后期密集预测的anchor free模型有较大的影响,所以早期探索的模型只介绍DenseBox模型。

(三)早期探索型

DenseBox

背景(人脸检测任务)

在图像上进行卷积等同于使用滑窗分类,为何不能使用全卷积对整个图像进行目标检测呢?如何将全卷积网络FCN应用到目标检测?

检测流程

  • 首先经过图像金字塔生成多个尺度的图片。
  • 图片经过FCN得到最终的输出featuremap。
  • 将输出featuremap进行回归与分类,并用NMS后处理。

先进思想

虽然DenseBox是比较早期的论文,但个人感觉DenseBox论文里面很多思想都是那个时期相对比较超前的:

  • DenseBox使用全卷积网络,任务类似于语义分割,实现了端到端的训练与识别,这点R-CNN直到Faster R-CNN中使用了RPN代替了Selective Search才开始实现端到端训练的,而和语义分割的结合更是等到了2017年的Mask R-CNN才开始。
  • DenseBox利用了多尺度融合的特征,conv3_4、conv4_4,在网络中引入了上采样操作,将低层和高层的特征融合以得到更大尺度的feature map输出而R-CNN系列直到FPN才开始使用,SSD。
  • DenseBox使用了OHEM做负样本的难例挖掘。(DenseBox做了样本均衡Balance Sampling,主要采用了两个方法:第一个方法是忽略正负样本过度区域,称为gray zone,是以正样本区域边缘的两个像素范围内的区间来定义的。第二个方法是Hard Negative Mining,首先将负样本像素中的loss按loss大小排序,选取前面的1%为hard-negative,然后保证每张图片中正负样本的数量是1:1,负样本的50%来源于hard-negative,另外的50%从non-hard negative中随机选取。这两种方法都是通过新增一个binary mask for each output pixel to indicate whether it is selected in training。
  • 利用了圆形描述,这在当时深度学习检测也算是早的。

ground truth定义:

1、单一尺度图片进行训练,多尺度测试。
2、不采用全图训练,大量背景浪费计算资源,crop出有人脸和足够背景的patches。
3、输入图片:crop and resize 240*240,face在中间位置,且有50像素的高度。
4、输出的ground truth经过4倍下采样得到60x60x5的map,第一个channel,positive labeld区域位于边界框的中心。半径位与bounding box中心,大小与box成比例(文中设置系数是box size的0.3),剩余四个channel代表该位置与最近gt box左上角及右下角的距离。
5、patch有多个目标,将位于patch中心(0.8至1.25)区域的目标记为正样本,1channel像素值为1,其余为负样本,1channel像素值为0。

多任务学习

DenseBox中增加landmark定位分支(通过增加若干全卷积分支实现),以提升目标检测准确度的工作,并可以联合landmark热度图和人脸得分热度图进一步提升目标检测精准度。加入关键点检测分支之后,DenseBox根据关键点的置信度图和boudning box的置信度图构成了新的检测损失,并将其命名为Refine Network。

左图为landmark定位新增了一个分支,如果要输出N个landmark,那么landmark定位分支共输出N通道的feature map,feature map上每个像素表示该位置为一个特定landmark的概率(each pixel represent the confidence score of being a landmark at that location);从这点上来看,landmark分支的gt feature map和检测分支的gt feature map是非常相似的,二者的区别在于:检测分支的gt feature map是四通道,landmark分支的gt feature map是N通道,N对应要输出的landmark数目;---- 有多少landmark点,就输出多少通道即可。(人脸是72个关键点,而车辆是作者自己标注的8个关键点)。

评价

  • DenseBox优点
    在FCN的基础上提出DenseBox直接检测目标,不依赖候选框。证明了单FCN(全卷积网络)可以实现检测遮挡和不同尺度的目标;在FCN结构中添加少量层引入landmark localization,将landmark heatmap和score map融合能够进一步提高检测性能。
  • DenseBox缺点
    使用embeddings进行角点匹配效果不好,导致某个物体左上角匹配到另一个物体右下角。

(四)基于关键点系列(源于姿态估计)

CornerNet

背景

对于姿态估计和分割的任务,它们的ground truth就是给点打标签。借此启发,CornerNet的作者认为对于目标检测来说,目标检测的框实际上就等同于左上角和右上角的点,因此,CornerNet摒弃了原本anchor-based的思想,采用keypoint-based的思路来进行检测。CornerNet作者之所以选择角点的原因和比较简单(因为角点相比中心点更容易训练与回归,比如说角点只与两条边相关,而中心点与四条边相关。)

总体流程与架构


CornerNet采用Hourglass(沙漏网络)作为主干网络来提取特征,然后分成两个支路分别预测左上角和右下角坐标。每个支路文章称之为Prediction Module。在每个Prediction Module之前都会先过一个Corner Pooling(这也是CornerNet文章的一个亮点), 再分成三个子支路Heatmaps、Embeddings、Offsets。【heatmaps某位置是角点的概率、offsets实际角点相对于该位置的偏移、embeddings嵌入向量,角点配对】

heatmaps是如何找到corner的?

在CornerNet中,heatmaps主要通过扩大学习区域并进行corner pooling来确定哪些点是我们所要寻找的corner。

  • Reduce penalty:要值得注意地是,在训练时,如何我们只是单纯地将两个角点对应的像素标注为正样本,其余为负样本时,我们的ground truth就是一个二值mask,那么负样本的点都将被舍弃掉,这个惩罚力度太大,对模型的训练非常不利。所以,作者希望通过以角点像素为中心,以微小半径为圆形区域(微小扰动所形成的bbox从直观感受并不会带来带过的干扰,更何况不同的人标注之间也存在这种现象,可以使网络更加的鲁棒),利用高斯分布来填充所扩大角点像素值的覆盖范围,以此获取更多的正样本,从而降低负样本对模型的惩罚力度。
  • Corner pooling:以往的max pooling更多的是将物体的信息集中到物体的中心区域,但CornerNet期望的是物体的信息可以集中在角点,因此,作者就设计了Corner Pooling来融合某点在两个轴线方向上(水平和垂直)的信息。(如左图,以左上角为例子的话,corner pooling是分别将目标点垂直轴线以下的位置提取最大值,然后对水平轴线以右的位置提取最大值,将两个最大值相加即为该点池化后的结果,实际应用时可以从右向左、从下向上进行更新计算,减小复杂度,提高计算效率。)

embeddings是如何匹配corner的?

在人体姿态估计中,相对应的角点也会互相匹配,因此,CornerNet也借鉴了这种思想,认为属于同一目标的corner embedding应该具有较高的相似度,而不同物体之间的corner embedding应该具有较远的距离。(寻找一个特征空间来区分不同object之间的corner)

为什么需要offset?

在卷积的过程中是存在下采样的过程的,这就不可避免的是一些点的坐标产生一些偏移,这样就从原始图的输入到最后特征图的输出过程,这些误差就会累计,对于小目标的误差就不可接受了,所以需要引入offset偏移量来修正它。

评价


检测精度可以与anchor-based的方法相媲美,基于关键点检测的方法是有效的。但物体的特征一般集中在物体内部,左上、右下两个点的特征并不明显,不容易确定位置。而且日哟导致同类别不同目标的角点容易错误地组合起来形成误检框。检测速度还有较大的优化空间。

CornerNet-Lite


CornerNet-Lite是两个CornerNet变种的组合:
CornerNet-Saccade——注意机制消除了对图像的所有像素进行处理的需要(通过关注子区域的像素来减少处理量),将cornernet单阶段检测器变为两阶段检测器,attention maps作用类似与fasterrcnn中的rpn但又有所不同,将roi区域crop下来进行第二阶段的精细检测,该网络与cornernet相比达到精度提升;
CornerNet-Saccade中的 saccades是single type and multi-object,也就是通过attention map找到合适大小的前景区域,然后crop出来作为下一阶段的精检图片。CornerNet-Saccade 检测图像中可能的目标位置周围的小区域内的目标。它使用缩小后的完整图像来预测注意力图和粗边界框;两者都提出可能的对象位置,然后,CornerNet-Saccade通过检查以高分辨率为中心的区域来检测目标。它还可以通过控制每个图像处理的较大目标位置数来提高效率。主要分为两个阶段估计目标位置和检测目标。

CornerNet-Squeeze——引入一个新的、紧凑的基础网络架构,reducing the amount of processing per pixel,主干网络实为hourglass network、mobilenet、squeezenet结构的变体,在实时检测器领域达到速度和精度的双重提升。CornerNet-Saccade适合离线处理,在不损失检测精度的情况下检测速度提高了6倍,CornerNet-Squeeze是实时检测器,在COCO数据集上其检测速度和精度相比YOLOv3都有提高。在COCO数据集上,43.2% AP at 190ms for CornerNet-Saccade,34.4% AP at 34ms for CornerNet-Squeeze,总而言之,CornerNet-Lite提高了关键点检测器的效率。
CornerNet-Squeeze ideas:SqueezeNet通过将3x3的卷积替换为1x1的卷积,减少3x3卷积的通道数,以及后续的下采样操作来减少网络的参数量。SqueezeNet中的building block及fire module包含前两个思想,Fire Module首先会通过包含一系列1x1卷积核来减少输入的通道数,然后,将结果送到包含1x1及3x3卷积核的扩张层中。

ExtremeNet

背景


前面我们也说了,左上与右下角点的特征不足以代表目标物体的特征,而且大多的角点都不在目标物体上。因此,单纯地依赖角点进行目标检测,模型可能不能很好地理解目标物体的特征。所以,ExtremeNet把左上与右下角点替换成目标的中心点以及其在四个正方向上的极值点(extreme points)来实现检测。ExtremeNet的极点在对象上,是视觉可分的,有一致的局部外观特征(如人的最上面的是头)。

流程

通过预测每个对象类别的4个heatmaps,得到4个极值点,再利用center heatmap检测中心极值点,匹配算法对所有极值点进行组合,并验证组合中是否存在中心极值点。首先为四个边界方向分别生成一个关键点热图以及一个目标中心的热图。当且仅当四个极值点呈几何对其,且该四个极值点组成的边界框的中心在预测的中心点热图上有较大的响应时才认为该生成的边界框有效。

Center Grouping算法,用来进行匹配的: 对于一个category,去除其中四个方位的heatmap,使用ExtractPeak算法去除其中大于阈值(实验中阈值为0.1)的pixel位置,对这四个集合中的点,进行简单的暴力方法遍历(为O(n^4)的复杂度),四个点组成一个框,然后满足基本的四个点的相对位置后,求出这四个点的中心点位置,那么如果这个中心点的center point heatmap上的值如果大于阈值(实验中阈值为0.1),那么就是一个合格的候选框,框的cls score就是五个点的heatmap值的均值。

与CornerNet的区别


ExtremeNet使用HourglassNet检测每个类的5个关键点,offset预测与类别无关,与极值点有关,中心点没有offset预测,所以网络的输出是5C个热图和4∗2个偏移图。

  • CornerNet通过预测角点来检测目标的,而ExtremeNet通过预测极值点和中心点来检测目标的。其中,CornerNet中的角点通常位于目标外,ExtremeNet中的极值点位于目标上,其能够反映物体的表观特征。
  • CornerNet通过角点embedding之间的距离来判断是否为同一组关键点(基于几何关系分组),而ExtremeNet通过暴力枚举极值点、经过中心点判断4个极值点是否为一组(基于目标外观分组),实验证明后者更加有效。

评价

  • ExtremeNet的优点
    延续CornerNet的检测新思路,将角点检测改为极值点检测,更加稳定,在muti-scale的测试下效果更好。
  • ExtremeNet的缺点:
    1)无法规避的硬伤,ghost box 在实际场景中(并行的车辆)很可能出现。
    2)从效果上看,并没有比CorNerNet有明显的提升。
    3)速度很慢,主干网络计算量太大。

CenterNet

背景

与ExtremeNet类似,CenterNet也是基于中心点来实现目标的检测。但CornerNet和ExtremeNet都需要匹配(配对分组)目标特征点,这个过程仍然略显繁复。所以,CenterNet只考虑使用中心点来定义目标,并通过中心点直接预测目标的特性,比如宽高信息,类别,3维位置和朝向等。(直接回归其所指向的目标类别以及以当前点为中心构建的目标最小外接矩形)

与CornerNet/ExtrmeNet的对比

  • 都采用相似的关键点检测思路,均使用heatmap思想和focal loss进行训练
  • 都采用相似的offset分支来弥补下采样点的位置误差
  • CenterNet不需要对关键进行分组匹配操作

与acnhor-based的对比

  • 我们分配的锚点仅仅是放在位置上,没有尺寸框。而单阶段YOLOv3中每个cell的中心点包含anchor shape信息。
  • 每个目标仅仅有一个正的锚点,因此不会用到NMS,我们提取关键点特征图上局部峰值点(local peaks)。NMS通过计算bbox间的IOU来删除同个目标的重复检测框,这种后处理很难区分和训练,因此大多检测器都非端到端可训练的。
  • 分配正样本的时候仅仅依赖位置而不依赖overlap,没有手动设置的阈值做前后景分类。(像Faster RCNN会将与GT IOU >0.7的作为前景,<0.3的作为背景,其他不管)。
  • 相比较传统目标检测而言(缩放16倍尺度),使用更大分辨率的输出特征图(缩放了4倍),因此无需用到多重特征图锚点。

评价


CenterNet优点:

  • 模型结构设计简单
  • 对于其他视觉任务有较好的拓展性
  • 去除NMS后处理利于加速模型预测

CenterNet缺点:

  • 训练时间长,COCO数据集需要训练140epoch
  • 回归监督信息仅通过中心点位置产生,会发生中心点重合的冲突

CircleNet

背景


CircleNet是基于肾小球背景下提出来,而肾小球是细胞。通常这种细胞都比较偏向圆形,因此,使用基于圆形的定义比矩形的定义要好,也更加贴合细胞的形态,而且具有旋转不变性!

流程


通过特征提取网络提取图像的特征,而后分别采用三个输出模块预测(1)heatmap,用来表示circle的中心点;(2)local offset,用来修正circle的中心点位置;(3)circle radius:用来表达circle的半径。

与CenterNet的相同点

CenterNet和CircleNet中的冲突是目标框的中心点重合(基于输出特征层计算的中心点),作者从COCO数据集的统计信息来看,这种重合框的比例非常少,不到0.1%,基本上不会对训练稳定产生太大影响,因此没有针对这个进行解决。(肾小球数据集不存在中心重叠的问题)

(五)基于密集型系列(源于语义分割)

FCOS

背景与思路

前面讲到的CornerNet、CenterNet等都是基于关键点来检测的,而接下来讲的FCOS则是基于分割的思想来进行检测的。而FCN算是语义分割的鼻祖算法,通过一系列的卷积与反卷积实现了对像素级的分类。FCN在语义分割和姿态估计等领域都取得比较不错的效果。之前的目标检测受制于anchor的使用,所以就没有在FCN上进行进一步的探索。而基于关键点检测的anchor-free存在中心重叠检测的问题,因此,FCOS就使用FCN网络直接对图中的每一个像素点的位置到真实物体四边的距离进行一个回归(预测的话就是四个距离回归加上一个目标分类)。换句话说,FCOS的训练对象跟语义分割的是一样的,也就是我们说的像素点。从总体的思路来看,FCOS可以理解为是 DenseBox(基于FCN) 的改进版。

不管是CenterNet的中心重叠问题,还是语义分割的问题,都是像素点类label只有一个的问题。而且FCOS主要是在行人检测,车辆检测的背景下提出来的。所以上面的问题就更加明显了(23.16%)。因此,FCOS在面临多个目标框重叠时,重叠部分的点的监督信息就有多个,但模型训练时监督信息肯定只能有一个,因此通过引入图中金字塔FPN网络来解决。通过不同尺度的特征图分支头来实现不同物体的检测(简而言之,就是FCOS通过多尺度检测来缓解目标重叠问题)。

但语义分割跟目标检测还是不一样的,比如左边这个图(人与羽毛球拍)。在语义分割中,每个像素点只有一个类别的label,但在目标检测中如果发生物体区域重叠的现象,那么一个像素点就不仅只有一个类别label,可能是两个甚至更多个。

网络结构

FCOS的网络架构,其中C3, C4, C5表示骨干网络的特征图,P3到P7是用于最终预测的特征级别。这五层的特征图后分别会跟上一个head,head中包括了三个分支,分别用于分类、中心点置信度、回归的预测。FCOS网络最后的输出层包含**(4+C)个通道,分别对应预测C个类别得分4维包围框参数**。整体的架构非常简洁,有很多人通过修改FCOS的输出分支,用于解决实例分割、关键点检测、目标追踪等其他任务。

  • 核心思想:检测点和点到真实框四边的距离。
  • 分类+回归分支真实框内的点均为正样本通过点到四边距离的最大值决定层级
  • 中心度分支去除离中心点较远的低质量的预测框像素点离中心点越远,中心度越小

多尺度分支结构

在FCOS中使用FCN多层预测多尺度的物体,可以有效解决这个模糊性的问题。换言之,重叠的物体就可以不用一张图去预测了,就可以把大物体放在一个深的特征图上,小物体放在一个浅的特征图上去预测了。(这点更YOLOv3中引入多个分支不同分支采用不同的anchor的思想相类似)。同样的,FCOS中分类损失仍然采用Fcoal loss,而回归损失则不再采用点的L1 loss了,而是通过回归四边的距离得到对应真实物体的四个顶角,进而采用IOU loss来进行优化。

多尺度分支分配

因为多尺度结构的存在,就需要确定这个真实框box分配给哪个层级呢?传统的FPN做法是会根据这个box的面积进行分配,而FCOS,就会根据Box中点到四边的最大距离来分配,也就是上面公式的四个分量,怎么分配呢?我们会给每一个层级分配阈值范围,然后看四个分类的最大值落在哪个区间就分配给哪个层级。

center-ness分支

FCOS内,我们会把目标框内所有的点平等的作为正样本,这样就会导致产生一个离目标框中心距离远的低质量的目标框。于是,在FCOS中就提出了中心度的概念,也就是center-ness分支,来抑制这些低质量的目标框。center-ness作用于网络中,和分类分支是并行的,是用来预测每个点的中心度。训练的时候,使用二值交叉熵loss,测试的时候,就会把中心度的得分和分类分支的得分做一个相乘,作为某一个点的最终得分。这样每一个位置就有了权重得分了。真正远离中心点的点就会被削弱。后面就可以用NMS的方法将这些点过滤掉了。

评价

我们可以看到较大物体的AP显著提高,这就是由于较大物体的中心偏离比较严重,总体AP提高了有3点。

  • FCOS的优点

    1.将检测和FCN进行结合,可充分利用思想。

    2.proposal free和anchor free,减少了超参的设计。

    3.不使用trick,达到了单阶段检测的最佳性能。

    4.模块化,对其他视觉任务具有较大的可扩展性。

  • FCOS的缺点
    FCOS没有很明确确定中心点,它是依赖于标注信息的。box预测的分配不是很合理。

FoveaBox

概述

作为与FCOS和FSAF同期的Anchor-free论文,FoveaBox在整体结构上也是基于DenseBox加FPN的策略,主要差别在于FoveaBox只使用目标中心区域进行预测且回归预测的是归一化后的偏移值,还有根据目标尺寸选择FPN的多层进行训练。
但FoveaBox的整体实现方案太纯粹了,与其它Anchor-free方法很像,所以一直投稿到2020才中…

正负样本定义

在FoveaBox中,正样本区域(fovea)的选择并不是真实框所包围的全部像素,而是原区域的一个衰减区域(可以看作是目标的中心区域,缩放因子是人为设定的),这个与DenseBox的设置一样,这样设置的原因是为了防止语义区域的相互交叠!

预测选择

网络的目标是预测目标的边界,直接预测是不稳定的,因为目标尺寸的跨度很大。为此,论文将目标尺寸归为多个区间,对应特征金字塔各层,各层负责特定尺寸范围的预测。(用于控制特征金字塔每层的回归尺寸范围的缩放因子也是人为设定的)

坐标映射

与DenseBox和UnitBox不同,FoveaBox并不是直接学习目标中心到四个边的距离,而是去学习一个预测坐标与真实坐标的映射关系。

网络架构


主干网络采用特征金字塔的形式,每层接一个预测Head,包含分类分支和回归分支。论文采用较简单的Head结构,使用更复杂的Head可以获得更好的性能。论文提出了特征对齐的trick,主要是对预测Head进行改造。

评价

  • 目标区域的明确定义
  • 对任意形状的包围盒更加鲁棒(从左下图)
    基于锚的方法在实际应用中,回归器是为正样本锚框(positive anchors)训练的,破坏了预测形状更任意的目标的通用性。在 FoveaBox 中,每个预测位置都不与特定的参考形状相关联,它直接预测目标的 ground-truth 框。由于 FoveaBox 允许任意的纵横比,它能够更好地捕捉那些非常高或非常宽的对象.
  • FoveaBox整体设计思路为anchor-free,不需要人为的去定义anchor的参数,但仍然需要手工的去设置参数,比如每层的area的范围,以及正样本区域的缩放因子的参数。

(六)总结与思考

和anchor-base进行比较,anchor-free最大的优势就在于其检测器的检测速度,因为不需要预设anchor,只需要对不同尺度的特征图的目标中心点和宽高进行回归,极大的减少了耗时和需要的算力。其缺点则是在于它的精度并不能达到anchor-base方法的SOTA。近两年还提出了一些结合anchor-base和anchor-free的检测器。

各种anchor-free方法的关键在于它们的ground truth是如何定义的。合适的ground truth更加贴合物体真实形态的分布,因此,从先验上来看,模型的检测精度也会对应的提高。走在前端(时间轴)的anchor-free方法灵感大多来源于人体姿态估计和语义分割的处理思想。由此对应地衍生出了我们前面所讲的Keypoint-based和Dense-predicted的anchor-free模型,这两种方法的本质将anchor转换成了point或者说是region来实现物体的检测。

Keypoints-based(CornerNet、CenterNet和ExtremeNet)的目标检测方法的异同点

  • 相同点

    • 都采用Hourglass网络作为主干网络用于特征提取
    • 都采用haetamaps(高斯模型)来泛化keypoint的区域
    • 都采用Fcocal loss来平衡正负样本
    • 都使用offset分支来修正下采样带来的坐标偏差
    • 都使用L1 loss或者IOU loss来作为box的回归指标
  • 不同点
    • 关键点的定义不同:CornerNet将bbox的两个角点作为关键点。ExtremeNet检测所有目标的四个极值点(最顶部、最左侧、最底部、最右侧)和一个中心点;均需经一关键点grouping阶段,降低算法速度。CenterNet仅提取目标中心点,无需对关键点进行grouping或后处理。
    • 匹配分组的原则不同:CornerNet为embedding距离,ExtremNet为中心点heatmaps的响应,CenterNet无需匹配。

Dense-predicted(FSAF、FCOS和Foveabox)的目标检测方法的异同点

  • 相同点

    • 都采用FPN来进行多尺度目标检测。
    • 都将分类和回归解耦成2个子网络来处理。
    • 都采用Fcocal loss来平衡正负样本。
    • 都是通过密集预测(像素级)进行分类和回归的
    • 都使用L1 loss或者IOU loss来作为box的回归指标
  • 不同点
    • FSAF和FCOS的回归预测的是到4个边界的距离,而FoveaBox的回归预测的是一个坐标转换。
    • FSAF通过在线特征选择的方式,选择更加合适的特征来提升性能,FCOS通过center-ness分支剔除掉低质量bbox来提升性能,FoveaBox通过只预测目标中心区域来提升性能。
    • FoveaBox是直接选取分类score高于某阈值的像素点;FCOS除了预测分类score外还对centerness进行了预测,选取的是centerness较高的像素点;CenterNet则是把分类score的heatmap中的peak点。但在某像素点的分类score最高,未必代表该像素点就最适合去回归。
    • FoveaBox和FCOS都是预测中心点到box的四条边的距离,但前者采用了L1 loss,后者采用了unitbox的IoU loss。在具体计算的时候,都会除以感受野来排除尺寸的影响。

CornerNet、CenterNet等基于关键点的anchor-free模型通过高斯模型泛化关键点区域来定义正样本数据点(heatmap定义),减少模型负样本的惩罚力度;FCOS定义bbox内的像素点均为正样本,而FoveaBox通过衰减因子将bbox缩放,并将缩放后区域FoveaBox内的像素点定义为正样本。

anchor-free的方法能够在精度上媲美 anchor-based的方法,最大的功劳应该归于 FPN,其次归于Focal Loss。在每个位置只预测一个框的情况下,FPN 的结构对尺度起到了很好的弥补,FocalLoss则是对中心区域的预测有很大帮助。
目标检测的gt是一个矩形框,然而用这个矩形框信息来检测目标显然是不合理的,因为矩形框内只有一小部分是目标,而剩下的是背景,这可能会导致检测器的精度下降,而anchor-free改变了gt的定义。gt重新定义之后,需要检测的目标语义变得更加明确了,有利于分类和回归。

目标检测算法回顾之Anchor free篇章相关推荐

  1. 最新目标检测算法回顾2022笔记

    目标检测算法回顾2022笔记[附PPT] 总目录 篇章1:目标检测的应用与需求 篇章2:目标检测的定义与挑战 篇章3:目标检测损失函数的进展 篇章4:目标检测IOU的发展历程 篇章5:目标检测评价指标 ...

  2. 目标检测算法回顾之传统算法

    传统的目标检测算法 总体回顾 基于特征 基于分割 一般流程 经典算法 Harr+Adaboost 流程 Harr特征 Adaboost算法 HOG + SVM 概述 方法 HOG特征的优缺点 DPM ...

  3. 目标检测算法回顾之发展概览

    目标检测算法的发展时间线 发展历史轴(时间轴线图) 算法方法概览(思维导图) 说明:本文仅供学习 发展历史轴(时间轴线图) 目标检测的算法发展可以追溯到很久之前,这里我根据前两年的综述论文加上这两年的 ...

  4. 目标检测算法回顾之应用场景篇

    目标检测应用场景 目录 应用场景 总结 说明:本文仅供学习 目录 第一部分我们主要回答两个问题:目标检测在实际中有哪些应用以及为什么我们需要研究它的原因. 应用场景 在我们日常生活中有哪些可以想到的目 ...

  5. 目标检测算法回顾之定义与挑战

    目标检测的定义与挑战 目标检测任务的地位 定义 核心问题 理想检测器 关键挑战 从精度角度看挑战 从效率角度看挑战 一个挑战解决方法的例子 目标检测任务的地位 目标检测与分类.分割并称为CV的三大主要 ...

  6. 目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等

    目标检测算法发展移步:目标检测算法 本文从算法改进的方向,进行横向比较,包括backbone,特征融合.loss.proposal/anchor/heatmap.NMS.正负样本设置等 Referen ...

  7. (20)目标检测算法之YOLOv5计算预选框、详解anchor计算

    目标检测算法之YOLOv5计算预选框.详解anchor计算 单节段目标检测算法中:预选框的设定直接影响最终的检测精度 众所周知,yolov5中采用自适应调整预选框anchor的大小,但万事开头难,配置 ...

  8. 目标检测算法——anchor free

    一.anchor free 概述 1.先要知道anchor 是什么(这需要先了解二阶段如faster rcnn,一阶检测器如YOLO V2以后或SSD等). 在过去,目标检测通常被建模为对候选框的分类 ...

  9. 目标检测算法基础概念:边框回归和NMS

    关注上方"深度学习技术前沿",选择"星标公众号", 技术干货,第一时间送达! [导读]前面我们详细介绍了目标检测领域常用的一些评价指标.详情见:[目标检测基础积 ...

最新文章

  1. 如何设计秒杀服务器的限流策略
  2. 查看suse系统版本
  3. 行为模式之Strategy模式
  4. 前端学习记录 CSS
  5. 过度封装的ZeroMQ
  6. 三个表格居中纵向html,前端技巧集:图与表三步垂直居中
  7. PHP的array_column
  8. JupyterLab 配置远程python、R环境(与Jupyter兼容)
  9. 如何进行服务器选购[转]
  10. html5录像功能限制时间,HTML5拍照和摄像机功能实战详解
  11. grunt之Gruntfile(1)
  12. 无线时代来临,谁来管理我的无线AP?
  13. apache comments io包IOUtils方法简单介绍
  14. Axure插件axure-chrome-extension安装(非常方便)
  15. 从无到有 win10建window xp虚拟机之总结
  16. 锦鱼课堂:跪着赚快钱,一年20W你愿意吗?
  17. 移动云迁移工具:Hyper-V虚拟化迁移到移动云
  18. 2020-12-09 blastp参数学习
  19. Excel使用---excel2016___一般操作(搬,侵删)
  20. bytebuffer获得byte[]的操作

热门文章

  1. TClientDataSet学习笔记
  2. Powerpoint2010也能直接截图
  3. RecyclerView拖拽卡顿
  4. 大后天就开学了,今天Django的学习总结一下
  5. 读取XML空节点出现缺少对象错误的解决办法
  6. Java-面向对象练习-01
  7. 仿煎蛋iOS项目的准备(0)
  8. 编写程序,完成找零钱任务
  9. vue----label中for作用
  10. 解决 The run destination 设备 is not valid for Testing the Xcode doesn’t support iPhone4s’s iOS 15.1