点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者:steven Li | 来源:知乎 https://zhuanlan.zhihu.com/p/150339896 本文仅做学术分享,如有侵权,请联系删除。Object detection就是在回答where和what问题,对应的是定位和分类两个任务。拿大家耳熟能详的Faster RCNN为例,在RoI Pooling之后,通过两个shared fc layers得到1024-dim的feature vector,再送入两个sibling head,一个用于分类,另一个用于定位。 其实,分类和定位这两个task,对feature有着不同的要求,存在一定的冲突。这个特征冲突问题,有大佬在《目标检测中的特征冲突与不对齐问题 》中已经很好地分析了。我再结合CVPR20的几篇工作,简述一下。
一. 特征冲突问题
在Faster RCNN中,可以从三个角度来分析分类和定位任务之间的冲突问题。 1.1 分类和定位对特征的要求 分类要求特征具有平移和尺度不变性(invariance),不管object在图片中是什么位置,是什么类别就是什么类别,学到的feature,不会因为尺度、旋转和位置等变换发生改变。而定位是一个position-sensitive的任务,object所在的位置不同,尺度不同,学到的feature肯定是不一样的。举一个例子,下图是RPN产生的两个Proposals,对于分类任务,它们都应该分类成person,应该产生相同的分类特征 ;但是对于定位任务,它们应该预测出不同的offset,所以应该有不同的定位特征 。 从这个角度考虑,送入两个sibling head的1024-dim feature vector,最好是不共享的。 1.2 分类和定位的sensitive map不同 根据文章TSD[1]的motivation,分类的sensitive区域是物体的salient areas,也就是最具有判别性的地方;而定位任务的sensitive区域是在物体的边缘区域。简而言之,这两个task响应的区域是不同的。 1.3 fc层不适合做localization 根据文章Double-Head[2]的分析,fc层具有spatially sensitive的特性,因为fc层对不同的输入元素,会连有不同的参数,所以更适合于,从part feature来分类出整个object。而conv层具有参数共享的特性,对输入的所有元素,用相同的conv kernel去卷积,这样卷积得到的feature,有更强的spatial correlation,更容易区分出哪些是pixel是object,哪些pixel是background.二. 已有工作
下面简述一下CVPR20的三篇文章,都是在Faster RCNN的基础上,将分类和定位这两个任务解耦,但是具体解耦的方法又各有千秋。 2.1 Double-Head 印象里,这个工作在arxiv上挂了一些时日了。在这个工作中,给了很多insight,分析出了fc层比较spatially sensitive,更适合做分类;而conv层有更强的spatial correlation,更适合做定位,所以在RoI Pooling之后,没有再用shared fc layers,而是直接分出了两个分支,一个分支是接了2个fc层,用于分类;另一个是接了5个residual block,用于定位,结构图如下。这种用fc做分类,conv做定位的操作,在Grid RCNN中也被用到。 文章中,作者对两个task是否共享参数,以及每个task是使用fc还是conv,基本都做了一遍实验,结果见下表。此外,文章还尝试了unfocused task,也会带来一些性能提升,具体见文章。 2.2 Task-aware Spatial Disentanglement 商汤的Task-aware spatial disentanglement (TSD),分析了分类和定位这两个task对特征空间的敏感区域是不同的。分类对salient areas比较敏感,而定位对物体边缘比较敏感,所以这两个task需要解耦。解耦的方法和Double-Head不一样,在RoI Pooling之前就把两个分支解耦开了,每一个分支有各自的RoI Pooling。根据任务驱动的方式,两个分支对proposal进行了不同的特征变换,从而得到task-aware features,再分别送入分类和定位分支。对分类任务,使用Deformable RoI Pooling,对每一个grid都学了一个offset,是point-wise的变换,最终得到proposal的discriminative features,更适合于分类;而对于定位任务,采用了proposal-wise变换,从proposal的feature中,学到整个proposal的offset,从而修正proposal的位置,使得proposal覆盖的区域是更适合定位的,如覆盖更多的物体边缘区域。根据分类和定位这两个task的具体需要,对proposal进行了相应的特征变换,从而使得输入每个task的特征都是最优的。 2.3 D2Det D2Det[3]受到Grid RCNN的启发,将分类和定位解耦,用全连接做分类,用全卷积结构来做定位,也是在RoI Pooling之前就将两个task解耦。文章发现Grid RCNN做定位的时候,只能在proposal内检测关键点,对于large scale object,有时候proposal不能覆盖住整个物体,所以这种在proposal内检测关键点的方法,会受到proposal region的约束,不是很有效。基于这个发现,作者提出了dense local regression,对proposal内的每个feature point,都回归一个box,是一种dense prediction;然后对所有回归出来的box取平均,得到最终的box结果。这种回归坐标的方式,和检测关键点相比,就不会受到proposal region的约束,回归的坐标可以在proposal外面,所以比Grid RCNN的检测关键点的方式有效。对于分类这个分支,也是通过Deformable RoI Pooling的方式,找到更加discriminative的features来进行分类。 上面三个工作都是在two-stage detector上做的,从RPN得到proposal之后,根据分类和定位两个任务的具体需求,对proposal做了相应的变换。在one-stage detector上,应该也同样存在两个task冲突的问题,目前我还没看到相关工作,欢迎补充。参考
- ^https://arxiv.org/abs/2003.07540
- ^https://arxiv.org/abs/1904.06493
- ^http://openaccess.thecvf.com/content_CVPR_2020/html/Cao_D2Det_Towards_High_Quality_Object_Detection_and_Instance_Segmentation_CVPR_2020_paper.html
推荐阅读:
- 专辑|相机标定
- 专辑|3D点云
- 专辑|SLAM
- 专辑|深度学习与自动驾驶
- 专辑|结构光
- 专辑|事件相机
- 专辑|OpenCV学习
- 专辑|学习资源汇总
- 专辑|招聘与项目对接
- 专辑|读书笔记
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。
▲长按加微信群或投稿▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口: