点击上方“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冲突的问题,目前我还没看到相关工作,欢迎补充。

参考

  1. ^https://arxiv.org/abs/2003.07540

  2. ^https://arxiv.org/abs/1904.06493

  3. ^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天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

目标检测中的分类和定位冲突问题相关推荐

  1. 【论文阅读】目标检测中的分类回归特征解耦

    论文来源:知网 以下仅仅是学习过程中的部分笔记,用作自己复习. 摘要 ..... 目标检测不仅需要判别图像中存在的目标的类别,还需要回归目标在图像中的位置. 特征耦合具体表现:分类和回归部分的网络共享 ...

  2. 浅谈目标检测中的特征冲突与不对齐问题

    点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 作者:黄飘 知乎链接:https://zhuanlan.zhihu.com/p/11470 ...

  3. 目标检测中的特征冲突与不对齐问题

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|深度学习这件小事 前言 昨天看到一篇商汤的刷榜文< ...

  4. CVPR2020 | MAL:联合解决目标检测中的定位与分类问题,自动选择最佳anchor

    点击上方"AI算法修炼营",选择"星标"公众号 精选作品,第一时间送达 本文是收录于CVPR2020的工作,其实文章在去年就挂在了网上,整体思路还算不错.具体来 ...

  5. 目标检测 | 盘点目标检测中的特征融合技巧(根据YOLO v4总结)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 特征融合分类 在深度学习的很多工作中(例如目标检测.图像分割),融 ...

  6. OpenImage冠军方案:在物体检测中为分类和回归任务使用各自独立的特征图

    点击上方"深度学习技术前沿",关注公众号,选择加"星标"或"置顶" 导读 这篇文章来自商汤科技,是OpenImage竞赛的冠军方案,本文对物 ...

  7. 目标检测中特征融合技术(YOLO v4)(下)

    目标检测中特征融合技术(YOLO v4)(下) ASFF:自适应特征融合方式 ASFF来自论文:<Learning Spatial Fusion for Single-Shot Object D ...

  8. 目标检测中特征融合技术(YOLO v4)(上)

    目标检测中特征融合技术(YOLO v4)(上) 论文链接:https://arxiv.org/abs/1612.03144 Feature Pyramid Networks for Object De ...

  9. 综述:解决目标检测中的样本不均衡问题

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨SFXiang 来源丨AI算法修炼营 编辑丨极市平台 极市导 ...

最新文章

  1. php使用ssh远程调用另一个服务器执行命令(python脚本)
  2. lintcode480- Binary Tree Paths- easy
  3. php 设置时区_为什么没有 Asia/Beijing 时区?
  4. JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦
  5. 8.Struts2类型转换器
  6. 生命周期共有那几个阶段_用产品生命周期 6 个阶段来思考
  7. Linux系统信息与系统资源
  8. python 除数总是提示为0_python负数求余不正确?——取模 VS 取余
  9. OpenCV中鼠标交互-绘制矩形框
  10. 【Flink】Flink kafka producer 分区策略 (flink写入数据不均匀 与 数据写入 分区无数据 )
  11. 网页中使用任意字体之实际操作
  12. vue.3.0 dom赋值_Vue3.0的几大新特性
  13. unity lookat导致物体颠倒怎么解决_Unity草地交互的实现
  14. input框,需要隐式显示的时候,不让它自动填充的办法
  15. 修改Linux系统最大TCP连接数限制
  16. 字符转 ASCII 码
  17. 罗马数字转换python_罗马数字转整数 python
  18. java生成三位随机数_java工具类(三)之生成若干位随机数
  19. 排除AP无法上线原因
  20. 微服务架构分布式全局唯一ID生成策略及算法

热门文章

  1. 关于站在主管的角度来看企业用人的一些规则
  2. (七)STM32的RTC简单操作
  3. SQL Servr 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
  4. 网游放缓页游疾进 客户端游戏会被取代吗?
  5. 敏捷(Agile)与精益(Lean)对比
  6. 用Scrum敏捷开发工具Leangoo做Sprint迭代管理
  7. 深入理解 Linux 的 epoll 机制
  8. 某年轻程序员吐槽大龄程序员“太水”:技术水平低,经验都过时,看不起新人,不服从管理!...
  9. Spring Security 中最流行的权限管理模型!
  10. Java是如何实现Future模式的?万字详解!