Acquistion Location Confidence for accurate object detection

本论文主要是解决一下两个问题:

1、分类得分高的预测框与IOU不匹配,(我猜应该是训练数据集导致的)

2、基于回归的边框修正是非单调的,缺乏可解释性。

贡献点

  1. IoU-guided NMS
  2. Optimization refine
  3. PRpooling

1、IoU-guided NMS

(1)传统 NMS :  根据边界框的分类置信度排序,每次选择cls score最大的框,并对与它IoU大于阈值的框抑制。定位准确的边界框中有很大一部分会被错误抑制,这是由分类置信度和定位准确度之间的不匹配造成的,

(2)IoU-NMS : 使用预测得到的IoU来对预测框进行排序,每次选择IoU最大的框并对与它IoU大于一定阈值的框抑制。

(3)soft-NMS:NMS基础上,IoU 大于阈值的框不将其分类置信度置为0。

为了使用IoU来指导排序,但在在测试的时候没有GroundTruth信息,于是设计一个网络来

估计边框与GroundTruth的IoU。如下图所示。

虚线框的是IoU-Net。

输入:Jittered-RoIs:通过对groundtruth 随机变换得到一系列的候选框(而不采用RPN输出的RoIs)

损失:smooth-L1 LOSS

输出:候选框与GroundTruth的IoU交并比(用于后续的IoU-guided NMS和优化修正算法)

2、提出的PrPooling代替了原来的RoI pooling

因为RPN网络输出的bounding box的坐标是浮点数,

  1. RoI Pooling:有量化误差
  2. RoI Align:不用量化,利用双线性插值计算出对应点的特征值。 但N=4固定,ROI大小不固定。
  3. PrRoI Pooling:利用双线性插值计算出对应点的特征值,该函数连续可导,有益于后续的基于优化的边框修正。

论文中的不足之处,缺少PrRoI-pooling的对照实验。在Mask-RCNN中的RoIAlign的精度相对于RoIPool明显提高。

The code is released at: https://github.com/vacancy/PreciseRoIPooling

3、基于优化的边框修正

问题:

基于回归的边界框精修非单调,对输入的分布变化敏感,不同的预测框迭代次数没法自适应。

解决方法:

通过每次修正得到的边界框预测得到IoU来修正。

基于优化的算法部分:

每次迭代对不同的预测框都做一次修正,因为PrRoI-Pool是连续可导的,所以通过梯度上升的方式进行优化,计算出边界框的变换。当变换后的边界框送入IoU-Net得到新的IoU与旧的IoU区别小于一定值或者出现退化,该边界框就不在修正。

基于回归的方法:如图第一排随着迭代次数的增加,红色的预测越来越偏离GroundTruth

基于优化的方法:如图第二排随着迭代次数增加,预测框越来越精确。

4、实验细节

(1)数据集:

80类别的MS-COCO 80k张训练图像和35k张验证图像,5k张验证图像做测试。

(2)训练参数设置:

输入图像裁剪为1200*800的大小

IoU-Net的训练数据是另外产生的。对于IoU-Net的 IoU标签通过正则化变为【-1,1】之间。

每层的参数设置为mean=0,标准差=0.01或0.001的高斯分布,batchsize大小为16,在推理部分,先还是使用了一次边框回归来初始化坐标,为了加快推理,对所有检测框做IoU -NMS前100个最大分类置信度的边框再使用基于优化的算法进行微调。

5、实验结果比较

相比于soft-NMS,采用了IoU-NMS的结果在AP90上明显提高了。

问题:AP50的结果较差。

问题原因:因为较小的IoU的框与GroundTruth的特征差异大,导致了IoU预测器不精确,修正也退化了。

解决方法:通过采集更多小IoU的来训练就可以解决

IoU-Net相较于FPN、Mask-RCNN速度下降了一点,但精度有所提升,时间耗费应该主要是在基于优化的边框修正上

最新文章

  1. Spring单例模式与线程安全
  2. 技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)
  3. static静态结合&符号理解
  4. sell-- wordPOI
  5. Reporting Service报表项默认可见+号和-号的显示问题
  6. Android 使用dagger2进行依赖注入(基础篇)
  7. SMTP邮件发送命令
  8. Django的templates模版
  9. linux中读写锁的rwlock介绍-nk_ysg-ChinaUnix博客
  10. C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息二
  11. 16.3Sum Closet
  12. django启动server报错Error: That port is already in use.
  13. Spring Boot(一):环境搭建,建立简单项目
  14. 【软件需求工程与建模 - 小组项目】第6周 - 成果展示2 - 软件需求规格说明书V4.3
  15. C#控件绘图恢复最小化后不自动重绘问题
  16. [译]使用mediatR的notification来扩展的的应用
  17. 使用asp.net MVC的 HtmlHelper 时遇到的小问题,报错:Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
  18. 【容斥】Four-tuples @山东省第九届省赛 F
  19. localStorage,sessionStorage,cookie使用场景和区别
  20. js 弹窗的实现

热门文章

  1. solr学习篇(三) solr7.4 连接MySQL数据库
  2. Leetcode Tags(4)Stack & Queue
  3. django-URL之path标准语法(三)
  4. 如何把当前时间戳转化为时间格式HH:MM:SS
  5. Vue---mock.js 使用
  6. 替换word中的数据,并给导入word的图片添加水印
  7. MongoDB的基础命令
  8. [无用]LNC李纳川的日常NC操作
  9. 【工利其器】Android Lint篇——为Android量身定做的静态代码审查工具
  10. generator和promise配合解决js异步地狱问题