MAL 用于视觉目标检测的多锚点学习
论文地址:https://arxiv.org/abs/1912.02252
开源代码: https://github.com/KevinKecc/MAL
本文亮点:
- 提出了一种多anchor学习的方法,以object-anchor匹配的角度出发,通过联合优化目标定位与分类,得到最佳的anchor。
——具体操作: 通过结合分类与定位置信度,选出分数比较高的anchor,然后用这些anchor来更新模型参数,再用更新后的模型重新评估被选择的anchor的分类和定位置信度,不断重复以上过程,直至得出最优的anchor和模型参数。 - 为了消除次优选择,提出了selection-depression优化策略,以保证anchor的选择不会掉入到局部最小值中。
——具体操作: 通过selection最小化损失函数,使得陷入到局部最优,然后通过depression增加损失函数跳出局部最优,不断重复上面过程,最终可得到一个最优解。
Abstract
- 基于anchor的方法中,检测器是利用目标与anchor之间的IoU作为分配anchor的标准,每个被分配的anchor独立地监督网络学习,并进行分类和位置回归。
- 手动设置的anchor存在被限制优化的问题:
分类和位置回归是联合固定使用的,但是这两个模块之间并没有交互,如果一个预测结果的回归精度比较高,但分类置信度比较低时,那么就有可能在NMS操作中被过滤掉了。 - 提出的解决办法:
为了解决这个问题,作者提出了使用多anchor学习(MAL) 来选择anchor并联合优化基于CNN的目标检测器中的两个模块,这是一种可以自动学习anchor的方法,通过anchor-object相匹配来联合优化分类和位置回归。
1 Introduction
- 为解决分类与回归相互独立的问题,已经提出了IoU-Net和freeachor方法,但是训练时两者依然是独立的。
- 本文提出了一种自动anchor学习(MAL)的方法,从anchor-object匹配的角度出发,联合优化目标分类与定位。
- MAL具体流程:
- 在MAL训练阶段,通过anchor-object bbox之间的IoU进行排序,选择IoU位于前面的anchor,用它们构造一个属于该目标的anchor bag。
- 然后,通过结合分类和定位分数,来评估每个anchor bag中的正样本anchor。
- 在每次训练迭代中,MAL使用所有的正样本anchor来优化训练损失,选择得分最高的anchor作为最终的anchor。——分类分数与定位分数就能同时达到最高。
- selection-depression优化策略:
每次迭代中选择分数最高的anchor可能不会达到最好的效果,有可能目标的一部分被错误地定位,但因为分类分数比较高,导致最终分数也比较高。
为解决此问题,提出了selection-depression优化策略,通过扰动分数较高的anchor特征,来反复降低该anchor的置信度,使得所选择的anchor是最优的。
图解:
- 上图是基于NMS前后的baseline检测器与MAL对比效果图。
- (a)baseline检测器(RetinaNet):
NMS之前,该检测器可能会产生具有低分类分数高位置回归IoU的边界框(黄色bbox)或者具有高分类分数的低位置回归IoU(红色bbox)。 - (b)多anchor学习(MAL):
MAL会产生具有高分类和位置回归的bbox,使得NMS后的检测效果更好。
本文的贡献:
- 提出了一种多anchor学习方法(MAL),通过评估和选择anchor来联合优化目标检测的分类和定位模块。
- 提出一种选择-抑制优化策略,为防止MAL在检测训练过程中陷入次优解。
2 Related Work
2.1 Anchor-Based Method
Anchor-Based Detection:
Faster R-CNN,FPN,RetinaNet,SSD,DSSD,YOLO。
Anchor Assignment(分配):
- 上述检测器将大量的anchor分布在卷积特征图上,以便它们能够匹配不同长宽比和比例的目标。
- 训练阶段,anchors被分配给目标(正anchor) 或 背景(负anchor),其IoUs与gt的数值相同。
- 推理阶段,anchors独立地预测目标bbox,在NMS过程后保留分类得分最高的框。
- 这类方法在目标部分被遮挡或者不规则形状的情况下,是不可行的。
Anchor Optimization (优化):
- MetaAnchor: 学习从具有子网的任意自定义的先验框。
- GuidedAnchoring: 利用语义特征来引导anchor预测,同时用预测anchor替换dense anchor。
- FreeAnchor: 使用人制定的anchor匹配变成“自由”anchor匹配。
- 这类方法将检测器的训练作为最大的似然估计(MLE)过程 ,目的是学习从分类和局部两方面更好地解释一类目标的特性。
- IoU-Net: 在预测bbox和真实框之间的IoU,选择anchor。
- IoU-guided NMS: 两者相对比,IoU-Net减少了错误率。
- Gaussian YOLO: 引入定位不确定性,说明anchor/bbox的可靠性。该方法是利用推理过程中评估定位的不确定性,提高了分类和回归精度。
2.2 Anchor-Free Method
- FCOS: 利用单元级监督和中心bbox回归进行目标检测。
- CornerNet和CenterNet: 用关键点监督替代bbox监督。
- Extreme point和RepPoint: 使用点集来预测目标边界框。
3 The Proposed Approach
- MAL是基于RetinaNet网络结构修改的。通过找到升级RetinaNet找到最优的分类和局部anchors/features。
3.1 RetinaNet回顾
-
anchor 公式说明:
anchors 是用于监督网络学习的,公式如下:
positive anchors 用于优化目标定位,公式如下:
上述两个公式,是通过最小化Focal Loss L c l s ( a j , b i c l s ) L_{cls}(a_{j},b_{i}^{cls}) Lcls(aj,bicls)和 Smooth L1 Loss L l o c ( a j , b i l o c ) L_{loc}(a_{j},b_{i}^{loc}) Lloc(aj,biloc)实现的。 -
参数说明:
-
f θ ( ⋅ ) f_{\theta}(\cdot) fθ(⋅)表示分类函数。
-
g θ ( ⋅ ) g_{\theta}(\cdot) gθ(⋅)表示bbox回归函数。
-
γ \gamma γ表示平衡正负anchor重要性的一个参数。
-
θ \theta θ是网络参数。
-
x ∈ χ x\in \chi x∈χ是训练集。
-
y ∈ Y y\in Y y∈Y是类别标签集。
-
B定义为正样本中gt的bbox。
-
b i ∈ B b_{i}\in B bi∈B是由分类标签 b i c l s b_{i}^{cls} bicls和空间位置 b i l o c b_{i}^{loc} biloc组成。
-
a j c l s a_{j}^{cls} ajcls是anchor的分类置信度(分类); a j l o c a_{j}^{loc} ajloc是anchor输出的bbox(回归)。
-
a j + a_{j+} aj+(正anchor)表示当IoU的值大于设定的阈值。 a j − a_{j-} aj−(负anchor)表示当IoU的值小于设定的阈值。
-
总结:
在retinanet中,每个anchor节点独立监督地完成分类和定位任务,并不考虑两者的关联性。这就可能导致定位分数高而分类分数低的anchor被nms过滤掉。
3.2 Multiple Anchor Learning(MAL)
图解:
- 从特征金字塔中,挑选出anchor bags,使用MAL模块进行anchors选择,最后进行目标检测。
具体流程:
- 设定第 i i i个目标构建一个anchor bag A i A_{i} Ai。这个anchor bag 是根据 a n c h o r s anchors anchors与 g t gt gt之间的IoUs选出前 k k k个anchors放入 A i A_{i} Ai。
- 通过网络参数学习,MAL能够在 A i A_{i} Ai中评估出每个anchor的分类和定位置信度。这个置信度用于anchor选择,表明anchor在网络参数演化过程中的重要性。
- 这里仅对positive anchor进行计算,MAL的目标函数如下:
参数说明:
- f θ ( ⋅ ) f_{\theta}(\cdot) fθ(⋅)和 g θ ( ⋅ ) g_{\theta}(\cdot) gθ(⋅)分别表示分类和定位置信度。
- β \beta β是正则化因子。
- 通过MAL,最终要为目标 i i i选出最优的positive anchor a i ∗ a_{i}^{*} ai∗,并学习网络参数 θ ∗ \theta^{*} θ∗。
- 将目标函数公式(3)转化为损失函数,公式如下:
参数说明:(这是3.1中定义的损失)
- Focal Loss: L c l s ( a j , b i c l s ) L_{cls}(a_{j},b_{i}^{cls}) Lcls(aj,bicls)
- Smooth L1 Loss: L l o c ( a j , b i l o c ) L_{loc}(a_{j},b_{i}^{loc}) Lloc(aj,biloc)
3.3 Selection-Depression Optimization
- 问题提出:
优化公式(3)和(4)使用随机梯度下降(SGD)是一个非凸问题,可能会导致次优anchor选择的问题。 - 解决办法:
通过扰动相应特征来反复降低所选择anchor的置信度。
图解:
- 上图是MAL实现过程,在RetinaNet的基础上添加了anchor selection模块和anchor depression模块。
- U U U和 V V V分别表示抑制前和后的特征图; M M M和 M ′ M^{'} M′分别表示抑制前后的注意力图。
- Anchor Selection:
- 这部分采取了 “All-to-Top-1” anchor的选择策略。在学习过程中,线性降低 ∣ A i ∣ |A_{i}| ∣Ai∣中的anchor数量直至将为1。
- 假设
λ
=
t
/
T
\lambda=t/T
λ=t/T,其中
t
t
t是训练的当前迭代次数,
T
T
T是训练的总迭代次数。然后,让
ϕ
(
λ
)
\phi (\lambda )
ϕ(λ)表示high-ranked anchors(排名前几名)的索引,
∣
ϕ
(
λ
)
∣
=
∣
A
i
∣
∗
(
1
−
λ
)
+
1
|\phi (\lambda )|=|A_{i}|*(1-\lambda )+1
∣ϕ(λ)∣=∣Ai∣∗(1−λ)+1。因此,公式(3)改写为:
- MAL利用目标区域内的多个anchor来学习早期训练epochs的检测模型,并在最后一个epochs中使用一个最优的anchor使模型收敛。
- Anchor Depression:
模块作用: 给未被选择的anchor更多的机会使它参与训练。
模块具体流程:
(1)假设 U U U和 M M M分别为原始特征图和注意力图。
(2) M = ∑ l w l ∗ U l M=\sum_{l}^{ }w_{l}* U_{l} M=∑lwl∗Ul,其中 w w w是 U U U的全局平均池化, l l l是 U U U的通道索引。
(3)通过将比较高的值降低至0,生成新的depressed attention map: M ′ = ( 1 − I P ) ∗ M M^{'}=(1-\mathbb{I}_{P})*M M′=(1−IP)∗M,其中 I \mathbb{I} I是0-1的指数函数, P P P是high-value position。
所以,被扰动后的特征图 V V V如下:
其中, 1 1 1是单位矩阵, ◦ ◦ ◦表示元素乘法。
当使用延续策略,可以把公式(6)改写为:
其中, ψ ( λ ) \psi (\lambda ) ψ(λ)表示被扰动的像素数。
3.4 Implementation
- 基于RetinaNet上修改的,使用FPN作为backbone,与RetinaNet设置的anchor相同。
- anchor的范围是[32, 813]。
- MAL只在检测器训练过程中用于学习更具代表性的特征,测试和推理过程并不会参与。
3.5 Optimization Analysis
选择-抑制策略是一个对抗的过程。
Anchor Selection找出得到较高的anchor,从而最小化检测损失
L
d
e
t
L_{det}
Ldet;而Anchor Depression通过扰动这些被选择的anchor的特征,使这些anchor的置信度降低,从而使得
L
d
e
t
L_{det}
Ldet再一次上升。
图解:
- 第一幅图中,MAL选择次优的anchor并且陷入了损失函数的局部最小值。
- 第二幅图中,anchor depression增加了损失,使得局部最小值被“填充”,使得MAL能够继续进行优化。
- 填充后,得到第三幅图。
- 选择-抑制策略这种方式,能在最终收敛的时候,MAL得到更好的机会找到最优解。
4 Experiments
4.1 Experimental Setting
- backbone: ResNet-50,ResNet-101,和ResNeXt-101的FPN作为主干网。
- 数据集: COCO-minival
4.2 Ablation Study
图解:
- 第一行和第三行是RetinaNet的注意力图;第二行和第四行是MAL的注意力图。
- 从第90k那列看出,MAL可以检测出RetinaNet未注意力到的部分,和抑制非目标的部分。
- 10k到90k的过程,可以看出注意力部分从全局逐渐变成了某些关键部分。
Table-1: 在COCO minval数据集上,使用ResNet50作为backbone的比较。
图解:
- (a)表示每个anchor bag中不同anchor数k的检测性能。
结论: k=50是AP的最高得分,k=40,50,60的AP值都比较稳定。 - (b)表示Anchor selection策略
ϕ
(
λ
)
\phi (\lambda )
ϕ(λ)。其中,
S
S
S表示选择,选择了所有实例和all-top 1的实例。
结论: 当使用anchor bags代替retinanet的scattered anchors时,AP从35.6%提高到38.14%。当连续优化时,AP进一步提高到38.39%。 - (c)表示Anchor depression策略
ψ
(
λ
)
\psi (\lambda )
ψ(λ)。其中,
D
D
D表示抑制,比较恒定函数(在整个训练过程中保持相同的depression rate)、阶跃函数和对称阶跃函数。
结论:
(1)使用恒定函数时,会使得注意力图top-50%的像素点压缩,使得AP下降。原因是在训练初期,网络参数被随机初始化,抑制了对抗性学习。
(2)使用阶跃函数时,使凹陷部分从0.0%逐步增加到50%,因此性能提高到了35.88%。
(3)使用对称阶跃函数时,将凹陷部分从0.0%增加到50%,然后从50%降低到0.0%,使得性能提升到36.18%。
图解:
- S S S表示selection, D D D表示detection。
图解:
- 上图展示了类别(牙刷、风筝)定位结果的误差因子分析。
- 定位错误(Loc)阻碍了不规则形状物体(倾斜和细长物体)的检测性能。MAL可以降低这些目标的定位错误。
4.3 Comparison with State-of-the-Art Detectors
Table-2: 在MS-COCO test-dev数据集上,MAL与RetinaNet方法(单阶段)的性能比较。使用越深的backbone,性能提升得越快。
Table-3: 在MS-COCO test-dev数据集上,与目前一阶段和二阶段方法的比较。下面顺序是根据从小到大进行排序的。
5 Conclusion
- 提出了一种多anchor学习方法(MAL),通过评估和选择anchor来联合优化目标检测的分类和定位模块。
- 提出一种选择-抑制优化策略,为防止MAL在检测训练过程中陷入次优解。
参考博客:https://blog.csdn.net/qq_30146937/article/details/105725804