目标检测中的分类和定位冲突问题
点击上方“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,一个用于分类,另一个用于定位。
Faster RCNN结构
其实,分类和定位这两个task,对feature有着不同的要求,存在一定的冲突。这个特征冲突问题,有大佬在《目标检测中的特征冲突与不对齐问题》中已经很好地分析了。我再结合CVPR20的几篇工作,简述一下。
一. 特征冲突问题
在Faster RCNN中,可以从三个角度来分析分类和定位任务之间的冲突问题。
1.1 分类和定位对特征的要求
分类要求特征具有平移和尺度不变性(invariance),不管object在图片中是什么位置,是什么类别就是什么类别,学到的feature,不会因为尺度、旋转和位置等变换发生改变。而定位是一个position-sensitive的任务,object所在的位置不同,尺度不同,学到的feature肯定是不一样的。举一个例子,下图是RPN产生的两个Proposals,对于分类任务,它们都应该分类成person,应该产生相同的分类特征 ;但是对于定位任务,它们应该预测出不同的offset,所以应该有不同的定位特征 。
RPN产生的proposals
从这个角度考虑,送入两个sibling head的1024-dim feature vector,最好是不共享的。
1.2 分类和定位的sensitive map不同
根据文章TSD[1]的motivation,分类的sensitive区域是物体的salient areas,也就是最具有判别性的地方;而定位任务的sensitive区域是在物体的边缘区域。简而言之,这两个task响应的区域是不同的。
TSD的motivation
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世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
目标检测中的分类和定位冲突问题相关推荐
- 【论文阅读】目标检测中的分类回归特征解耦
论文来源:知网 以下仅仅是学习过程中的部分笔记,用作自己复习. 摘要 ..... 目标检测不仅需要判别图像中存在的目标的类别,还需要回归目标在图像中的位置. 特征耦合具体表现:分类和回归部分的网络共享 ...
- 浅谈目标检测中的特征冲突与不对齐问题
点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 作者:黄飘 知乎链接:https://zhuanlan.zhihu.com/p/11470 ...
- 目标检测中的特征冲突与不对齐问题
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|深度学习这件小事 前言 昨天看到一篇商汤的刷榜文< ...
- CVPR2020 | MAL:联合解决目标检测中的定位与分类问题,自动选择最佳anchor
点击上方"AI算法修炼营",选择"星标"公众号 精选作品,第一时间送达 本文是收录于CVPR2020的工作,其实文章在去年就挂在了网上,整体思路还算不错.具体来 ...
- 目标检测 | 盘点目标检测中的特征融合技巧(根据YOLO v4总结)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 特征融合分类 在深度学习的很多工作中(例如目标检测.图像分割),融 ...
- OpenImage冠军方案:在物体检测中为分类和回归任务使用各自独立的特征图
点击上方"深度学习技术前沿",关注公众号,选择加"星标"或"置顶" 导读 这篇文章来自商汤科技,是OpenImage竞赛的冠军方案,本文对物 ...
- 目标检测中特征融合技术(YOLO v4)(下)
目标检测中特征融合技术(YOLO v4)(下) ASFF:自适应特征融合方式 ASFF来自论文:<Learning Spatial Fusion for Single-Shot Object D ...
- 目标检测中特征融合技术(YOLO v4)(上)
目标检测中特征融合技术(YOLO v4)(上) 论文链接:https://arxiv.org/abs/1612.03144 Feature Pyramid Networks for Object De ...
- 综述:解决目标检测中的样本不均衡问题
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨SFXiang 来源丨AI算法修炼营 编辑丨极市平台 极市导 ...
最新文章
- php使用ssh远程调用另一个服务器执行命令(python脚本)
- lintcode480- Binary Tree Paths- easy
- php 设置时区_为什么没有 Asia/Beijing 时区?
- JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦
- 8.Struts2类型转换器
- 生命周期共有那几个阶段_用产品生命周期 6 个阶段来思考
- Linux系统信息与系统资源
- python 除数总是提示为0_python负数求余不正确?——取模 VS 取余
- OpenCV中鼠标交互-绘制矩形框
- 【Flink】Flink kafka producer 分区策略 (flink写入数据不均匀 与 数据写入 分区无数据 )
- 网页中使用任意字体之实际操作
- vue.3.0 dom赋值_Vue3.0的几大新特性
- unity lookat导致物体颠倒怎么解决_Unity草地交互的实现
- input框,需要隐式显示的时候,不让它自动填充的办法
- 修改Linux系统最大TCP连接数限制
- 字符转 ASCII 码
- 罗马数字转换python_罗马数字转整数 python
- java生成三位随机数_java工具类(三)之生成若干位随机数
- 排除AP无法上线原因
- 微服务架构分布式全局唯一ID生成策略及算法
热门文章
- 关于站在主管的角度来看企业用人的一些规则
- (七)STM32的RTC简单操作
- SQL Servr 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
- 网游放缓页游疾进 客户端游戏会被取代吗?
- 敏捷(Agile)与精益(Lean)对比
- 用Scrum敏捷开发工具Leangoo做Sprint迭代管理
- 深入理解 Linux 的 epoll 机制
- 某年轻程序员吐槽大龄程序员“太水”:技术水平低,经验都过时,看不起新人,不服从管理!...
- Spring Security 中最流行的权限管理模型!
- Java是如何实现Future模式的?万字详解!