Libra R-CNN阅读重点
Libra R-CNN原论文地址 https://arxiv.org/pdf/1904.02701.pdf
Introduction
comman training paradigm
主流目标检测算法,流程都是3个步骤:
- 选择候选区域
- 提取特征
- 在标准多任务损失函数的引导下分类和调整定位(回归)
three key aspects
基于这种流程,目标检测训练成功与否取决于3个方面:
- 选择的候选区域是否有代表性?
- 提取的特征是否充分利用?
- 设计的目标函数是否是最优的?
Issues and Resolutions
由此论文中提出了3个level的不平衡问题,分别是:
- 样本level(如上图右a所示),解决方法是IoU-balanced sampling
- 特征level(如上图右b所示),解决方法是balanced featurepyramid
- 目标level(如上图右c所示),解决方法是balanced L1 loss
Iou-balanced Sampling
假设有M个侯选框和N个难样本,根据IoU将这N个难样本分成K个部分,每个部分候选区域采样数目为Mk个,上图公式(2)就是IoU-balanced Sampling公式。
论文中取了3种不同的k值做了实验,发现IoU-balanced Sampling中对k的取值不敏感。
Balanced Feature Pyramid
特征level的不平衡解决办法就是Integrate+Refine。
1.获取平衡的语义特征
2.调整平衡的语义特征
Obtaining balanced semantic features
高层特征提取语义信息,低层特征提取细节信息。为了合并多个层次的特征同时并保存它们的语义层次,首先将高层和低层的特征都resize到中间层的feature maps的大小,并做插值和最大池化处理,然后再作加和取平均操作。这样就能获取平衡的语义特征。
Refining balanced semantic features
然后还可以进一步的调整上一步获得的平衡语义特征。单独的一个卷积是相对local的,为了达到non local效果,可以使用Gaussian non-local attention,利用xi附近的xj信息从而得到yi(附近可以是时间维度的也可以是空间维度的)。
Balanced L1 Loss
本来的loss函数如【公式(4)】所示,用λ平衡分类和定位损失,但是λ一般对难样本影响较大,最终使得梯度爆炸。于是将定位损失换成了【公式(5)】,它遵循【公式(6)】的准则,由【公式(7)】计算得到公式(8),最后为了函数的连续性,x=1时需满足Lb(1)=y【公式(9)】。
上图是梯度曲线和loss曲线,可以看到用balanced L1 Loss替换smooth L1 Loss之后,效果要好很多。
Results
在不同的目标检测算法上应用这3种平衡方法之后,发现它们的精度基本都能提升2个点左右。
Ablation Experiments
上图是针对这3种平衡方法的消融研究,验证了3种方法都对提升精度有作用。
注:本页面绝大多数图片来自原论文,小部分图片来自网络博客,引用本博文请注明出处。