目标检测研究现状调研

近期在调研目标检测的研究现状,包括two-stage和one-stage,以及anchor-based和anchor-free。

把用到的一些链接记录一下 ,方便查阅。

机器之心的一篇文章:

从锚点到关键点,最新的目标检测方法发展到哪了

这篇文章介绍了目标检测方法从anchor-based到anchor-free的发展,并指出anchor-free将会是比较有前景的研究方向。文章是以一篇综述为基础展开介绍的。Recent Advances in Deep Learning for Object Detection这篇综述是2019年的论文。

Faster-RCNN

YOLOv3

FCOS:Fully Convolutional One-Stage Object Detection

这是比较新的一篇anchor-free的one-stage目标检测方法,整体结构图如下图所示。首先是用FPN来抽取不同multi-level的特征。然后在feature map的每个点上回归,训练bounding box和class。训练阶段还单独训练了center-ness分支,以计算center-ness,使得离中心较远的bounding box有较低的置信度。test阶段即抽取特征,然后给出bounding box和label,confidence是由center-ness和classification的置信度相乘得出的。

1.FCOS回归目标和Loss

把每张feature map的每个坐标都可以映射回原输入图像。如果某个feature map的坐标落在某个ground truth的框内,那么这就是一个正样本,可以拿来做训练。首先做个映射,计算feature map中的这个点,到ground truth的距离。如下图所示,这就是训练阶段的回归目标。

从这里我们可以看到,由于采用了FPN和逐像素匹配,FCOS可以尽可能多地利用ground truth,而且所有送入训练的样本都是正样本。这与anchor-based检测器不同,anchor-based detectors仅考虑IOU较高的作为正样本,作者认为这可能是FCOS表现高于一些anchor-based检测器的原因之一。

在网络输出阶段,FCOS是直接将分类和回归分支接到FPN和4个conv后面,没有anchor的生成过程和修正过程,因此减少了参数量和计算量。

损失函数如下所示。前半部分是分类的focal loss(这篇文章都是在和RetinaNet做对比,很多参数设置和它一样),后半部分是IOU loss。

2.multi-level prediction with FPN

在FCOS中使用FPN主要是考虑了目标重叠的问题,而且用不同level的特征检测不同大小的目标,能很大程度上提高精度。在不同的feature map中,都去找合适的(这部分存疑)文中提到的head是涉及RetinaNet的,看完RetinaNet再理解这篇应该会容易多。

3.center-ness

center-ness是由于,检测出的许多低质量的bounding box都是由于边框离中心太远了。所以提出center-ness可以将这部分的bounding box的confidence降低(center-ness越小说明边框离中心点越远)。这个公式是在训练过程中计算的,如果在test阶段就直接从该branch得到计算后的center-ness,然后直接与label的置信度相乘,得到最终的置信度。

4.实验及结果

作者做了很多很多对比实验,来说明FPN,center-ness等组件的作用,而且绝大多数超参数都是直接用的RetinaNet的。而且效果也被证明挺不错。

RetinaNet

RetinaNet: Focal loss在目标检测中的应用

这篇文章是2018年Kaiming的提出focal loss的文章,是为了解决类别不平衡的问题。

FPN:Feature Pyramid Networks

FPN网络的结构并不复杂,包括bottom-up pathway和top-down pathway、lateral connections。通过横向连接,使得FPN在后面的预测阶段能够结合了之前的特征抽取阶段的特征。

在resnet等网络中,后面的高层语义同样也与前面的底层特征相连接。既然抽取特征的阶段也是一层一层抽取的,为什么不直接在每层顺便做预测或者后续的检测等任务呢?下面这篇文章的一句话给出了解释。因为在抽取特征阶段,不同层对应的是不同层次的语义信息。如果直接做预测,这就强行让不同层学习同样的语义信息了,效果可能不是很好。

CVPR 2017论文解读:特征金字塔网络FPN

在FPN原文中,作者把FPN分别应用在RPN和fast RCNN两步,都取得了不错的效果。

R-FCN

https://blog.csdn.net/wfei101/article/details/79284512

听名字就知道,这个full conv network为基础的检测网络,没有全连接层。如下图所示,在backbone提取的feature maps上,用k^2(C+1)个卷积核,得到一个score maps。然后利用FPN找到ROI,做ROI pooling。这种方法不像faster rcnn,需要对每个ROI分别再单独计算。

发布了56 篇原创文章 · 获赞 49 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/IBelieve2016/article/details/99847499