opencv车牌定位_目标检测中的分类和定位冲突问题

本文探讨了在使用OpenCV进行车牌定位时遇到的特征冲突问题及其现有解决方案,引用了相关研究论文,并推荐了3D视觉、深度学习、自动驾驶等领域的学习资源。
摘要由CSDN通过智能技术生成

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

d957a68234387af14d618f908ba23a26.png

作者: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,一个用于分类,另一个用于定位。 7306509a78fd2cc6b28fedf50d036fa5.png
Faster RCNN结构
其实,分类和定位这两个task,对feature有着不同的要求,存在一定的冲突。这个特征冲突问题,有大佬在《目标检测中的特征冲突与不对齐问题 》中已经很好地分析了。我再结合CVPR20的几篇工作,简述一下。

一. 特征冲突问题

在Faster RCNN中,可以从三个角度来分析分类和定位任务之间的冲突问题。 1.1 分类和定位对特征的要求 分类要求特征具有平移和尺度不变性(invariance),不管object在图片中是什么位置,是什么类别就是什么类别,学到的feature,不会因为尺度、旋转和位置等变换发生改变。而定位是一个position-sensitive的任务,object所在的位置不同,尺度不同,学到的feature肯定是不一样的。举一个例子,下图是RPN产生的两个Proposals,对于分类任务,它们都应该分类成person,应该产生相同的分类特征  2abe5a57-8332-eb11-8da9-e4434bdf6706.svg  ;但是对于定位任务,它们应该预测出不同的offset,所以应该有不同的定位特征  2dbe5a57-8332-eb11-8da9-e4434bdf6706.svg  。
1eb9f02e12e805dcf4d37f45e7f19c3c.png RPN产生的proposals
从这个角度考虑,送入两个sibling head的1024-dim feature vector,最好是不共享的。 1.2 分类和定位的sensitive map不同 根据文章TSD[1]的motivation,分类的sensitive区域是物体的salient areas,也就是最具有判别性的地方;而定位任务的sensitive区域是在物体的边缘区域。简而言之,这两个task响应的区域是不同的。
ce161ca6e6ae25f4f062d64b7d39353b.png 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中也被用到。 380a346e176ffced95ec5935bf4b27ca.png 文章中,作者对两个task是否共享参数,以及每个task是使用fc还是conv,基本都做了一遍实验,结果见下表。此外,文章还尝试了unfocused task,也会带来一些性能提升,具体见文章。 955691170218cec64ed2a5eb2a84cf2a.png 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的特征都是最优的。 fd3bfbcb422a4af932dc15a940c1d349.png 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来进行分类。
0666ed08a58ba9d055a25f4296dee214.png
上面三个工作都是在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视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

e1d2f44e6ed196300973721e11caf4d6.png ▲长按加微信群或投稿

85d1882d5585e0e35f3206bb043da3ab.png

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款b2c1e57dcd100876f99874bffbc0ec21.png 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值