IoU-balanced Loss Functions for Single-stage Object Detection 论文笔记

IoU-balanced Loss Functions for Single-stage Object Detection 论文笔记

大致Motivation和结论

Single-stage的检测虽然有效,但是作者发现目前single-stage用的loss函数对于精确的定位来说并不是最优的. 用于分类的CE是和定位任务无关的, 这样就在训练中可能会导致正样本学到尽可能高的分类得分而忽略了位置的准确性,因此可能出现 低的IOU但是分类的分很高和低分高IOU的情况。但是有低分高IOU的框在用NMS的时候会被抑制。另外在bbox回归中常用的SmoothL1函数,梯度大多是由那些hard的样本来主导,作者认为这对位置的准确性是不好的。直观上理解,那些不是很准的框更应该学习才对,即应该增加其梯度,但是最近的两个和Loss函数相关的工作,都得出提高easy的样本的梯度对精度会有帮助.先不care具体的细节,先从直观上理解合不合理. 举个例子,有10个班级互相通过考试来比赛,老师要在考前下决定了,

  1. “放弃”差生,任其自由发展,把精力和资源都投入到好的学生中去,想希望这些成绩好的学生给班级带来荣誉.

  2. 好学生都比较自觉,暂时先不放那么多精力在上面了,最终他们也不会差到哪去。把精力投入到差生上面去,免得给班级拖后腿.

那么之前SmoothL1的方针可以认为是第2种,即inliners内的梯度变得更小了,有个平方.而外面的就是全部卡到一个固定的值,防止梯度blow up. 根据最近的这两个工作来看似乎这种效果并不是最好的,而第一种方案带来了提点.

Libra-RCNN 提高了inliners内的easy样本的梯度,而对于outliners的并没有改动,而这个工作是不仅把inliners内的easy样本的梯度增加还要把outliners的梯度降一些,即好的更好,差的就让它差去吧.

Introduction

single-stage的检测器虽然运行快, 但是精度却落后于multi-stage的检测器,一个主要的原因就是类别不平衡问题,这在RetinaNet中用focal-loss得到了改进.除此之外, single-stage的检测器由于大多只用了一次回归,回归的也不太好,所以像RefineDet 中提出两步的回归可以提升准确性.这在two-stage中也有应用,比如Cascade-RCNN.

作者claim 加强分类和定位这两个任务的联系对于精确的定位是非常重要的,还claim 提升inclines的梯度并同时降低outliners的梯度也非常重要.

基于这些重要的发现,作者提出了IOU-balanced 的classification loss 和 IOU-balanced localiation loss. 前者主要是把注意力放在具有高IOU的正样本上面去,即正样本的IOU越大,那它对于分类loss的贡献就应该越多(这和我之前的认知刚好相反.), 作者认为如果这样的话,那么正样本就会提供更大的梯度,然后就能够获得更高的分类得分,能够加强分类任务和回归任务之间的关系(这里的IOU是预测的框与gt的iou,还是指的anchor与gt的iou,这一点要确认, 感觉上应该是后者.)

  • contributions
  1. 证明了标准的CE和SmoothL1对于single-stage的检测器不是最好

  2. 提出IOU-balanced classification loss

  3. 提出IOU-balanced localization loss

上面两个loss都不需要改变网络结构.

结果图

avator

这个是IOU-balanced SmoothL1和SmoothL1的对比,可以看出很明显的差别.即inliners增大,outliers抑制.下面是在分类和回归任务上的具体的表现.

avator avator

打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦