目录
本文是我的目标检测笔记的第四部分:Anchor-Free检测模型与方法,这部分给出了对Anchor-Free检测方法的归类与分析,参考了较多别人在这方面的解析,感谢。
anchor-free简介
在深度学习时代,物体检测问题通常都被建模成对一些候选区域进行分类和回归的问题。在单阶段检测器(如SSD,YOLO v3)中,这些候选区域就是通过滑窗方式产生的 anchor;在两阶段检测器中(如Faster R-CNN),候选区域是 RPN 生成的 proposal,但是 RPN 本身仍然是对滑窗方式产生的 anchor 进行分类和回归。
而在anchor-free 方法中,是通过另外的手段来解决检测问题的。主要有两种方法:(1)基于密集检测的方法:这种方法将目标检测分为两个子问题,即确定物体中心和对四条边框的预测,仍然遵循区域分类回归的思想。这两个子问题是通过密集预测(pixel level)的方法解决的,因此与Segmentation相通,代表作有FCOS,Foveabox和FSAF等;(2)基于关键点的方法:这种方法跳出了区域分类回归的思想,通过解决关键点定位组合问题来检测物体。代表作有CornerNet,CenterNet和ExtremeNet等
anchor-free方法的本质
目标检测的GT是一个矩形框,然而用这个矩形框信息来检测目标显然是不合理的,因为矩形框内只有一小部分是目标,而剩下的是背景,这可能会导致检测器的精度下降。
anchor-free模型其实是改变了gt的定义,比如cornernet定义为角点,extremenet定义为极值点和中心点,FSAF、FoveaBox定义为矩形框的中间区域,FCOS虽然是矩形框,但是经过center-ness抑制掉低质量的框,其实也是一种变相的将gt定义为矩形框中心区域。gt重新定义之后,需要检测的目标语义变得更加明确了,有利于分类和回归。
因此,anchor-free本质上是将anchor based转换成了keypoint based /region based。
anchor-free为什么能work
anchor-free 的方法能够在精度上媲美 anchor-based 的方法,最大的功劳我觉得应该归于 FPN,其次归于 Focal Loss。(内心OS:RetinaNet 赛高)。在每个位置只预测一个框的情况下,FPN 的结构对尺度起到了很好的弥补,FocalLoss 则是对中心区域的预测有很大帮助。当然把方法调 work 并不是这么容易的事情,相信有些细节会有很大影响,例如对重叠区域的处理,对回归范围的限制,如何将 target assign 给不同的 FPN level,head 是否 share 参数等等。
—— 物体检测的轮回: anchor-based 与 anchor-free - 陈恺的文章 - 知乎 https://zhuanlan.zhihu.com/p/62372897
anchor-free论文汇总
基于密集检测方法
FCOS
FCOS: Fully Convolutional One-Stage Object Detection
FSAF
Feature Selective Anchor-Free Module for Single-Shot Object Detection
FoveaBox
FoveaBox: Beyond Anchor-based Object Detector
基于关键点方法
CornerNet
CornerNet: Detecting Objects as Paired Keypoints
CenterNet
ExtremeNet
Bottom-up Object Detection by Grouping Extreme and Center Points
其他论文
RepPoints
RepPoints: Point Set Representation for Object Detection
参考
目标检测:Anchor-Free时代 - 陀飞轮的文章 - 知乎
物体检测的轮回: anchor-based 与 anchor-free - 陈恺的文章 - 知乎
目标检测论文阅读:RepPoints(Anchor Free) - 扬之水的文章 - 知乎
目标检测中的Anchor Free方法(二) - 扬之水的文章 - 知乎