目标检测精读系列

1. 概述

目标检测是一个比较活跃的领域,其目标是通过算法检测出图像中的感兴趣目标。目前,基本上最先进的目标检测算法都是基于神经网络。

在深度学习之前,基本上是提取特定角点(SIFT,HOG等)去检测目标,或是利用划窗的方式结合SVM等经典分类器去检测目标,这类传统的算法的检测效果不佳。随着卷积神经网络的出现,目标检测的效果被提升了一大截,远远超过了传统的算法。

最开始是R-CNN,然后是Fast R-CNN, Faster R-CNN, 然后发展出了YOLO,SSD,接着是FCOS,CenterNet等目标检测算法。目前,目标检测算法基本可以分为两类:Anchor-based和Anchor-free。
Anchor-based

  • one stage : RetinaNet, YOLO, SSD
  • two stage : Faster R-CNN, Lighthead R-CNN, Mask R-CNN
  • multi stage : Cascade R-CNN

Anchor-free

  • keypoint-based : CornerNet, CenterNet
  • center-based : FCOS, TTFNet

两类网络最大的不同点,就是是否利用anchor机制。Anchor本质上就是一些预先定义在特征图上面的框,Anchor-based的算法,就是在这些框的基础上进行分类和回归。而Anchor-free算法舍弃了anchor的设定,通过检测关键点或是概率图的方式,直接获得物体的位置和边界框等信息。

一般而言,Anchor-based算法的精度更高,Anchor-free算法的推理速度更快。但是,目前出现的Anchor-free算法,如FCOS,其精度比RetinaNet等Anchor-based的算法精度更高。ATSS(Adaptive Training Sample Selection)算法[1],讨论了Anchor-based算法和Anchor-free算法精度差异的原因,指出两者本质的差别在于正负样本的选择。如果采用ATSS的正负样本选择方式,RetinaNet和FCOS几乎能够达到相同的精度。

2. Anchor-based

Anchor-based网络的机制是基于anchor点进行分类和回归。anchor点是特征图上的一个个点,其上面预先定义了一些大小(anchor_scale)和比例(anchor_ratio)框。然后通过这些框去和目标真值框判断这些框的正负性。对于正样本,还需要去计算这个框和真值框之间的差距。网络对框的回归目标,就是去回归这些差值。至于这些差值是如何定义的,RetinaNet以及Faster R-CNN [2] 都是采用中心点偏差和长宽比例的对数值。

所以,本质上Anchor-based算法就是去学习anchor预定义框和真值框之间的偏差,然后在inference阶段,利用这些偏差和anchor预定义框去反解出目标的边界框。

anchor

3. Anchor-free

Anchor-free算法则是完全扔掉了anchor的机制,认为anchor机制是需要预定义框的,理论上,每个数据集目标大小的分布不一样,那么最佳anchor预定义框应该也是不一样的,所以何不放弃这种目标检测的方式。Anchor-free算法目前主要发展出两个方向:一个是keypoint-based的方式,另一个是center-based的方式。

keypoint-based的算法,参考了keypoint的检测思路,认为目标检测中存在一些特殊点,例如目标框的左上角点和右下角点,以及目标的中心点等。于是,这类算法直接去获得左上角点和右下角点,然后利用一些embedding空间等方法将这些关键点组合起来,获得目标检测的边界框。比较有代表性的是:CornerNet [3], CenterNet等。
CornerNet检测左上角点和右下角点

center-based的算法,相比而言就更加简洁一些,认为目标检测框应该可以由目标中心和目标中心到四条边界的距离构成。所以,这类算法一般会从特征层分出两个分支,一个分支是获得物体在图像中的位置(一般是物体的中心点),另一个分支是回归中心点位置到四条边界之间的距离。在inference阶段,通过中心点位置和四条边的距离,就能够获得目标检测框。这类算法中,比较典型的有FCOS [4],TTFNet等。
FCOS检测物体中心点,然后回归到四条边的距离

4. 其它

以上只是从模型上对目标检测算法进行了一个大致分类。从具体问题出发,样本平衡,小目标检测,检测实时性等角度,也可以有新的一些划分方式和解决方法,如Focal_loss, SNIP, Mobilenet等。

目标检测算法现在依旧是一个比较活跃的领域,时不时都有新的论文出现。且随着目标检测发展,尤其是Anchor-free算法的发展,检测速度和检测效果进一步提升,也引起了其它相关领域的发展。例如:实例分割领域,PolarMask、BlendMask等网络都是基于FCOS网络进行实例分割的

接下来,我将会从三个方面进行:

  • 对几种经典的算法的机制进行剖析,从细节处把握每类算法背后的原理;
  • 分析最新的论文,了解最新目标检测的发展趋势;
  • 目标检测中的一些工具、资源、注意事项等;
参考

[1] Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection
[2] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
[3] CornerNet: Detecting Objects as Paired Keypoints
[4] FCOS: Fully Convolutional One-Stage Object Detection

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值