物体检测的轮回:Anchor-based 与 Anchor-free

2019 年 4 月 16 日 CVer

点击上方“CVer”,选择加"星标"或“置顶”

重磅干货,第一时间送达

作者:陈恺

https://zhuanlan.zhihu.com/p/62372897

本文已授权,未经允许,不得二次转载


YOLOv2 摸着 Faster R-CNN 的宝贝 anchor 道,真香。

RetinaNet 对 DenseBox 说,长大后我就成了你。

—— 瞎扯之题记

正文

随着 CVPR camera ready和 ICCV submission deadline的结束,一大批物体检测的论文在 arXiv 上争先恐后地露面。历史的车轮滚滚向前,这里有几篇 paper 有异曲同工之妙,开启了 anchor-based 和 anchor-free 的轮回。

1. Feature Selective Anchor-Free Module for Single-Shot Object Detection

参考:CVPR2019 | CMU提出Single-Shot目标检测最强算法:FSAF

2. FCOS: Fully Convolutional One-Stage Object Detection

参考:最新的Anchor-Free目标检测模型FCOS,现已开源!

3. FoveaBox: Beyond Anchor-based Object Detector

4. High-level Semantic Feature Detection: A New Perspective for Pedestrian Detection

这几篇论文不约而同地将矛头对准了 anchor 这个检测里面的基础模块,采用 anchor-free 的方法在单阶段检测器上达到了和 anchor-based 方法类似或者更好的效果。这里不打算详细讨论每一篇论文的方法,主要分享一下个人的想法。


我们首先看一下这几篇论文的框架图。

抛开 backbone 不说,可以发现这几种方法的 detection head 十分地相似。基本都是 2 个分支,一个预测类别,输出 HxWxK,另一个预测边框的相对坐标,输出大小为 HxWx4。方法 2 除了这两个分支之外,还增加了一个 regression branch 来预测每个点到 ground truth 中心的远近程度。方法 4 由于是二分类,所以类别预测分支只需要预测一个 heatmap 就可以。

anchor-free 和 anchor-based 区别几何

这个问题首先需要回答为什么要有 anchor。在深度学习时代,物体检测问题通常都被建模成对一些候选区域进行分类和回归的问题。在单阶段检测器中,这些候选区域就是通过滑窗方式产生的 anchor;在两阶段检测器中,候选区域是 RPN 生成的 proposal,但是 RPN 本身仍然是对滑窗方式产生的 anchor 进行分类和回归。

而在上面几篇论文的 anchor-free 方法中,是通过另外一种手段来解决检测问题的。同样分为两个子问题,即确定物体中心和对四条边框的预测。预测物体中心时,具体实现既可以像 1、3 那样定义一个 hard 的中心区域,将中心预测融入到类别预测的 target 里面,也可以像 2、4 那样预测一个 soft 的 centerness score。对于四条边框的预测,则比较一致,都是预测该像素点到 ground truth 框的四条边距离,不过会使用一些 trick 来限制 regress 的范围。

为什么 anchor-free 能卷土重来

anchor-free 的方法能够在精度上媲美 anchor-based 的方法,最大的功劳我觉得应该归于 FPN,其次归于 Focal Loss。(内心OS:RetinaNet 赛高)。在每个位置只预测一个框的情况下,FPN 的结构对尺度起到了很好的弥补,FocalLoss 则是对中心区域的预测有很大帮助。当然把方法调 work 并不是这么容易的事情,相信有些细节会有很大影响,例如对重叠区域的处理,对回归范围的限制,如何将 target assign 给不同的 FPN level,head 是否 share 参数等等。

anchor-free 和 single anchor

上面提到的 anchor-free 和每个位置有一个正方形 anchor 在形式上可以是等价的,也就是利用 FCN 的结构对 feature map 的每个位置预测一个框(包括位置和类别)。但 anchor-free 仍然是有意义的,我们也可以称之为 anchor-prior-free。另外这两者虽然形式上等价,但是实际操作中还是有区别的。在 anchor-based 的方法中,虽然每个位置可能只有一个 anchor,但预测的对象是基于这个 anchor 来匹配的,而在 anchor-free 的方法中,通常是基于这个点来匹配的。

anchor-free 的局限性

虽然上面几种方法的精度都能够与 RetinaNet 相媲美,但也没有明显优势(或许速度上有),离两阶段和级联方法相差仍然较远。和 anchor-based 的单阶段检测器一样,instance-level 的 feature representation 是不如两阶段检测器的,在 head 上面的花样也会比较少一些。顺便吐槽一下,上面的少数 paper 为了达到更好看的结果,在实验上隐藏了一些细节或者有一些不公平的比较。

anchor-free 的其他套路

anchor-free 除了上面说的分别确定中心点和边框之外,还有另一种 bottom-up 的套路,以 CornerNet 为代表。如果说上面的 anchor-free 的方法还残存着区域分类回归的思想的话,这种套路已经跳出了这个思路,转而解决关键点定位组合的问题。

anchor-free 和 anchor-based 的结合

这时候就要祭出(植入)Guided Anchoring 了,详细介绍见 港中大-商汤联合实验室等提出:Guided Anchoring: 物体检测器也能自己学 Anchor

这篇论文 release 稍微早一些,但也可以算同期工作。是不是感觉和上面的方法有些神似?如果只看 anchor 预测的部分,将其直接用于预测最终结果,同时不固定 anchor 的中心点,就和上述的一些方法比较像了。Guided Anchoring 可以看做是 anchor-prior-free,但是整体框架保持与 anchor-based 一致,所以可以插入到现有的 anchor-based 的方法里面,性能提升也会稍微明显一点。类似于在首先进行 anchor-free 的预测,然后以预测结果作为 anchor 进行进一步地修正。

展望

anchor-free 的方法由于网络结构简单,对于工业应用来说可能更加友好。对于方法本身的发展,我感觉一个是新的 instance segmentation pipeline,因为 anchor-free 天生和 segmentation 更加接近。一个是向两阶段或者级联检测器靠拢,进一步提高性能,如果能在不使用 RoI Pooling 的情况下解决 feature align 问题的话,还是比较有看头的。另外还有一个是新的后处理方法,同时也期待看到 anchor-free 的灵活性带来新的方法和思路。

Reference

[1] Zhu, Chenchen, Yihui He, and Marios Savvides. "Feature Selective Anchor-Free Module for Single-Shot Object Detection."arXiv preprint arXiv:1903.00621(2019).

[2] Tian, Zhi, Chunhua Shen, Hao Chen, and Tong He. "FCOS: Fully Convolutional One-Stage Object Detection." arXiv preprint arXiv:1904.01355 (2019).

[3] Kong, Tao, Fuchun Sun, Huaping Liu, Yuning Jiang, and Jianbo Shi. "FoveaBox: Beyond Anchor-based Object Detector."arXiv preprint arXiv:1904.03797(2019).

[4] Liu, Wei, Shengcai Liao, Weiqiang Ren, Weidong Hu, and Yinan Yu. "High-level Semantic Feature Detection: A New Perspective for Pedestrian Detection."arXiv preprint arXiv:1904.02948(2019).

[5] Wang, Jiaqi, Kai Chen, Shuo Yang, Chen Change Loy, and Dahua Lin. "Region proposal by guided anchoring."arXiv preprint arXiv:1901.03278(2019).


推荐阅读


目标检测:Anchor-Free时代

深度学习的目标检测算法是如何解决尺度问题的?

最新的Anchor-Free目标检测模型FCOS,现已开源!

周志华教授等新书:《演化学习:理论和算法的进展》正式上线!


CVer目标检测交流群


扫码添加CVer助手,可申请加入CVer-目标检测交流群。一定要备注:目标检测+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡)

▲长按加群


这么硬的总结,麻烦给我一个在看


▲长按关注我们

麻烦给我一个在看

登录查看更多
0

相关内容

【文献综述】深度学习目标检测方法及其主流框架综述
专知会员服务
119+阅读 · 2020年6月26日
基于深度学习的表面缺陷检测方法综述
专知会员服务
87+阅读 · 2020年5月31日
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
44+阅读 · 2020年4月17日
【CVPR2020-谷歌】多目标(车辆)跟踪与检测框架 RetinaTrack
专知会员服务
45+阅读 · 2020年4月10日
“取长补短”的RefineDet物体检测算法
深度学习大讲堂
5+阅读 · 2019年5月30日
最新Anchor-Free目标检测模型—FoveaBox
PaperWeekly
6+阅读 · 2019年4月29日
FoveaBox,超越Anchor-Based的检测器
极市平台
10+阅读 · 2019年4月22日
目标检测:Anchor-Free时代
极市平台
42+阅读 · 2019年4月17日
CVPR2019 | FSAF:来自CMU的Single-Shot目标检测算法
极市平台
41+阅读 · 2019年3月8日
CVPR2018 目标检测算法总览(最新的目标检测论文)
极市平台
21+阅读 · 2018年12月21日
论文笔记之Feature Selective Networks for Object Detection
统计学习与视觉计算组
21+阅读 · 2018年7月26日
Cascade R-CNN 论文笔记
统计学习与视觉计算组
8+阅读 · 2018年6月28日
基于深度学习的图像目标检测(下)
机器学习研究会
12+阅读 · 2018年1月1日
Arxiv
5+阅读 · 2019年4月8日
Scale-Aware Trident Networks for Object Detection
Arxiv
4+阅读 · 2019年1月7日
Arxiv
8+阅读 · 2018年5月17日
Arxiv
5+阅读 · 2018年4月17日
Arxiv
5+阅读 · 2016年12月29日
VIP会员
相关资讯
“取长补短”的RefineDet物体检测算法
深度学习大讲堂
5+阅读 · 2019年5月30日
最新Anchor-Free目标检测模型—FoveaBox
PaperWeekly
6+阅读 · 2019年4月29日
FoveaBox,超越Anchor-Based的检测器
极市平台
10+阅读 · 2019年4月22日
目标检测:Anchor-Free时代
极市平台
42+阅读 · 2019年4月17日
CVPR2019 | FSAF:来自CMU的Single-Shot目标检测算法
极市平台
41+阅读 · 2019年3月8日
CVPR2018 目标检测算法总览(最新的目标检测论文)
极市平台
21+阅读 · 2018年12月21日
论文笔记之Feature Selective Networks for Object Detection
统计学习与视觉计算组
21+阅读 · 2018年7月26日
Cascade R-CNN 论文笔记
统计学习与视觉计算组
8+阅读 · 2018年6月28日
基于深度学习的图像目标检测(下)
机器学习研究会
12+阅读 · 2018年1月1日
Top
微信扫码咨询专知VIP会员