Libra-RCNN论文笔记

Libra-RCNN论文笔记

Abstract

和模型结构相比,对于一个好的检测器来说,训练过程也是非常重要的,但是关注度却并不太高.这个paper中作者发现影响检测器效果的主要有三个不平衡,分别是 sample level, feature level, objective level, 做了这些改进了之后有2个多的长点.

Introduction

根据通常的检测器设计的模式,训练出一个好的检测器有三个方面的主要因素.

  1. 选择的 region samples表示能力是否强

  2. 提的feature是否能够被充分地利用

  3. 目标函数设计的是否好

作者的实验说明之前的一些模型针对这三个方面都有不平衡.

  • Sample level imblance

在训练一个检测器的时候,hard的samples是非常宝贵的,因为这些hard 的样本对于提升模型的效果非常有帮助,但是基于随机的采样的机制会被easy的样本所主导,常用的OHEM虽然能够把注意力focus到hard samples,但是对于干扰的Label比较敏感,而且也会带来额外的内存和时间costs.Focal-loss主要是在One-stage的网络中有效果,而在two-stage的网络中效果并不明显(估计two-stage的网络中已经控制了正负样本的比例) 以Faster-RCNN为例,有两个过程涉及到采样,第一个是在RPN中将anchor制作成训练集的时候, 这时候是将正负的anchor按照一定的比例进行采样的, 第二个是RPN得到rois之后并没有全部用于RCNN的训练,而是从中选择了一部分去做的训练. 在这个paper中,作者提到这种随机的采样其实不太好, 而且还给了证据.

avator

个人理解原因可能是,虽然是随机的从打过label的anchor中进行随机选,但是并不知道这些anchor的好坏,比如说,如果打1的anchor的和gt的iou大部分都是0.9以上的话,那么即便是随机采样,那么采的正的anchor也几乎都是非常好的.所以之前的随机采样是有一定的问题的,因此作者在这里提出一种基于IOU来采样的机制,大致的过程是先根据后选框的iou,将其投到不同的桶内,然后再均匀的从桶内取框,这样基本上是说保证每个范围内的iou的框都能够被采到.

  • feature level imbalance

当前的很多的模型基本上都会采用多层特征相结合的方式去做相关的预测, 比如FPN, PANet, 这些高低层的feature如何使用基本上很大程度上影响着一个检测器的好坏,但是最好的融合方式是什么呢?作者的研究提了一个观点: 即融合得到的feature应该从不同的像素水平的feature得到平衡的信息.那么在这个工作中作者提出的方法如下

avator

即前面得到的不层层的feaure, 先以某一个scale比如C4, 将其他的几个feature:C2,C3,C5,经过interpolate和maxpooling得到和C4同样大小的feature, 然后四个加起来取平均,得到的feature就是融合后的feature,这个过程叫作Integrate. 然后又经过一个non-local的module得到一个refine之后的feature, 之后又得到和之前同样大小的feature.整个过程看起来有些像decoder-encoder的结构. 作者在paper里面说这是一种让不同的level的信息均等交流的一种方式。而且这个过程中是没有参数学习的。这说明了这种信息结合的方式确实是有效的,因为如果有参数学习的话,就不是太直接能够说明这种方式的有效性了.作者证明了这种方式的有效性,而且这种只需要用某一个大小的feature支做predict,在速度上也比多level的预测的要快.

  • Objective level imbalance

检测的任务有两个,一是分类还是定位,作者认为如果两个任务没有好好的平衡的话,其中一个就会拖累另个一个,会导致两个的结果都不是太好, 作者在这方面提出了Balanced-L1的Loss函数。Balanced L1 loss是在SmoothL1的loss上面进行改进的。作者认为SmoothL1有一些不太好的地方,就是对于easy的样本,梯度过小,越easy的样本,提供的梯度越小,作者做了统计说easy的样本提供的梯度只有30%。作者认为这和分类回归这种Multi-task的网络设计理念有些不一致,因为不管对于easy的框还是hard的框,分类都是做了的,而easy的框的回归却占比很少。而且即便是easy的框,毕竟还不是gt, 也应该进行学习成为更accurate的框。所以应该在以前的基础上增加其梯度所占的比重.在种想法之下 ,作者提出了Balanced-L1loss,具体和SmoothL1的比较如下

avator

Balanced L1-loss值得思考, 在我目前的问题上也能够用到,有一些不一样的地方是,作者提出Balanced L1-loss想让已经很easy的样本继续学习下去,方法是通过增加其梯度,而之前我在自己的问题上面想的是让很easy的样本不再学习下去,把注意力放到hard的样本上面去学,方法是降低easy样本的梯度所占的比重,刚好和作者这里的想法相反.

有了这样的梯度图的话,再找对应的这样的函数, 最终作者给出的是

avator

打赏,谢谢~~

取消

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

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

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