(二十七)论文阅读 | 目标检测之MAL


简介

在这里插入图片描述

图1:论文原文

该论文是发表在 C V P R   2020 {\rm CVPR\ 2020} CVPR 2020上的一篇关于目标检测的论文,针对以往目标检测算法在分类和回归时都是使用的同一组 a n c h o r {\rm anchor} anchor,文章提出一种在分类和回归阶段动态采样 A n c h o r {\rm Anchor} Anchor的思路。文章将其定义为多 a n c h o r {\rm anchor} anchor学习,在每一次迭代中选择最优 A n c h o r {\rm Anchor} Anchor来更新模型,然后使用该模型去选择下一次迭代所使用的 A n c h o r {\rm Anchor} Anchor。如此反复下去直到得到最优的 A n c h o r {\rm Anchor} Anchor和最优模型。论文原文 源码


0. Abstract

在基于深度学习的目标检测算法中,分类器和回归器往往通过同一组 A n c h o r {\rm Anchor} Anchor优化,作者由于分类和回归的任务性质不相同,这种做法会降低模型整体的性能。论文提出一种多实例学习的方法 M A L {\rm MAL} MAL,通过在迭代过程选择不同的 A n c h o r {\rm Anchor} Anchor来共同优化分类器和回归器。作者基于 R e t i n a N e t {\rm RetinaNet} RetinaNet模型,在 M S   C O C O {\rm MS\ COCO} MS COCO数据集上达到了 S O T A {\rm SOTA} SOTA

论文贡献:(一)提出的 M A L {\rm MAL} MAL通过动态地评估和选择 A n c h o r {\rm Anchor} Anchor来共同优化分类器和回归器;(二)提出 A n c h o r {\rm Anchor} Anchor抑制策略避免模型陷入局部最优解;(三) M A L {\rm MAL} MAL达到了 S O T A {\rm SOTA} SOTA


1. Introduction

近来,基于深度学习的目标检测算法将分类和定位整合,从而可以共享卷积特征,通常使用总 L o s s {\rm Loss} Loss完成分器和回归器的优化。通常,为了应对图像目标的多样性,算法往往在图像上铺设足够多的 A n c h o r {\rm Anchor} Anchor,以期充分覆盖图像中的目标。但是,通过一组固定的手工设定的 A n c h o r {\rm Anchor} Anchor来共同优化分类器和回归器会降低模型的整体性能。如, I o U {\rm IoU} IoU往往作为正负 A n c h o r {\rm Anchor} Anchor采样的唯一标准,而这时如果没有置信度的约束的话,就会出现以下情况:在这里插入图片描述

图2:Baseline和MAL

如上图 ( a ) {\rm (a)} (a)是没有使用 M A L {\rm MAL} MAL的结果。在第一幅图中存在两个候选框,第一个黄色框的置信度较低,而和真实框的交并比较大;第二个红色框的置信度较高,而和真实框的交并比较小。直观上,我们认为应该选择黄色框作为最终的检测结果,但经由 N M S {\rm NMS} NMS处理产生的最终的检测结果为红色框。图 ( b ) {\rm (b)} (b) M A L {\rm MAL} MAL处理后得到的正确的检测结果。

论文提出的 M A L {\rm MAL} MAL是一种自动学习 A n c h o r {\rm Anchor} Anchor的方法。在训练阶段,基于 A n c h o r {\rm Anchor} Anchor与真实框的交并比,为每个目标产生一个 A n c h o r {\rm Anchor} Anchor袋(形象化的说法,其实就是一组 A n c h o r {\rm Anchor} Anchor)。然后,通过分类置信度和交并比共同决定正样本,使用该组 A n c h o r {\rm Anchor} Anchor更新模型;模型又通过以上规则选择下一组 A n c h o r {\rm Anchor} Anchor,如此重复下去直到得到最优 A n c h o r {\rm Anchor} Anchor和最优模型。


2. Related Work

2.1 Anchor-Based Method

传统的如 F a s t e r {\rm Faster} Faster- R C N N {\rm RCNN} RCNN F P N {\rm FPN} FPN S S D {\rm SSD} SSD等方法基于 I o U {\rm IoU} IoU A n c h o r {\rm Anchor} Anchor分类。如果某 A n c h o r {\rm Anchor} Anchor与某真实框的交并比大于设定的正样本阈值,则将其确定为正样本;如果与任何真实框的交并比均小于设定的负样本阈值,则将其确定为负样本。在推理阶段,使用 N M S {\rm NMS} NMS处理一组与某个目标均有较大交并比的候选框。前人也有许多工作优化每次用于训练的 A n c h o r {\rm Anchor} Anchor

2.2 Anchor-Free Method

近来,出现了大量 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free的目标检测方法, F C O S {\rm FCOS} FCOS C o r n e r N e t {\rm CornerNet} CornerNet R e p P o i n t s {\rm RepPoints} RepPoints等,它们不依赖于人工设定的 A n c h o r {\rm Anchor} Anchor。但作者指出,由于缺乏 A n c h o r {\rm Anchor} Anchor的指导,这类方法中的边界框回归仍是一个值得关注的问题。


3. The Proposed Approach

M A L {\rm MAL} MAL基于 R e t i n a N e t {\rm RetinaNet} RetinaNet实现,它在此基础上优化了 R e t i n a N e t {\rm RetinaNet} RetinaNet中的 A n c h o r {\rm Anchor} Anchor选择方案。 R e t i n a N e t {\rm RetinaNet} RetinaNet的结构如下:
在这里插入图片描述

图3:RetinaNet

3.1 RetinaNet Revisit

如图 3 3 3 R e t i n a N e t {\rm RetinaNet} RetinaNet的左端是一个 F P N {\rm FPN} FPN。对于 F P N {\rm FPN} FPN的每一层,使用一个分类分支和回归分支用于预测物体的类别和位置。同时,针对前景背景类别的极不平衡性, R e t i n a N e t {\rm RetinaNet} RetinaNet使用 F o c a l   L o s s {\rm Focal\ Loss} Focal Loss作为损失函数。现令 x ∈ X x\in \mathcal{X} xX表示输入图像,它的标注类别为 y ∈ Y y\in \mathcal{Y} yY。其中 X \mathcal{X} X表示训练数据集集合, Y \mathcal{Y} Y表示标注类别信息集合。 B B B为标注的边界框,任一边界框 b i ∈ B b_i\in B biB由其类别 b i c l s b_i^{cls} bicls和位置 b i l o c b_i^{loc} biloc组成。 A n c h o r {\rm Anchor} Anchor a j a_j aj对应的置信度预测和位置预测分别为 a j c l s a_j^{cls} ajcls a j l o c a_j^{loc} ajloc。同时,当 A n c h o r {\rm Anchor} Anchor与标注框的交并比大于给定的正样本阈值,则确定其为正样本 a j + a_{j+} aj+;否则为负样本 a j − a_{j-} aj。则网络的学习由如下函数监督: θ ∗ = arg ⁡ max ⁡ θ ( f θ ( a j + , b i c l s ) − γ f θ ( a j − , b i c l s ) ) (1) \theta^*=\arg \max_\theta(f_{\theta}(a_{j+},b_i^{cls})-\gamma f_{\theta}(a_{j-},b_i^{cls}))\tag{1} θ=argθmax(fθ(aj+,bicls)γfθ(aj,bicls))(1)

其中, f θ ( ⋅ ) f_{\theta}(·) fθ()表示分类程序, γ \gamma γ用于平衡正负样本。上式对应于 R e t i n a N e t {\rm RetinaNet} RetinaNet中的分类损失部分。同时, R e t i n a N e t {\rm RetinaNet} RetinaNet中的回归损失可以表示如下: θ ∗ = arg ⁡ max ⁡ θ g θ ( a j + , b i l o c ) (2) \theta^*=\arg \max_{\theta}g_{\theta}(a_{j+},b_i^{loc})\tag{2} θ=argθmaxgθ(aj+,biloc)(2)

注意回归损失只涉及正样本的计算。上式中的 θ \theta θ均表示网络的参数, g θ ( ⋅ ) g_{\theta}(·) gθ()表示回归程序。对于上式 ( 1 ) (1) (1)和式 ( 2 ) (2) (2),通常分别使用 F o c a l   L o s s {\rm Focal\ Loss} Focal Loss S m o o t h L 1   L o s s {\rm SmoothL1\ Loss} SmoothL1 Loss,即表示为 L c l s = ( a j , b i c l s ) \mathcal{L}_{cls}=(a_j,b_i^{cls}) Lcls=(aj,bicls) L l o c = ( a j , b i l o c ) \mathcal{L}_{loc}=(a_j,b_i^{loc}) Lloc=(aj,biloc)

在训练 R e t i n a N e t {\rm RetinaNet} RetinaNet的整个过程中,每个采样的 A n c h o r {\rm Anchor} Anchor独立地监督网络学习目标的分类和定位,而没有使用二者之间的相关性。这可能导致产生的结果具有很高的定位精度,但是由于具有较低的置信度而被 N M S {\rm NMS} NMS筛选掉。

3.2 Multiple Anchor Learning

为了解决上述问题,论文提出多 A n c h o r {\rm Anchor} Anchor学习的策略,如下图:在这里插入图片描述

图4:MAL的整体流程

在每次迭代过程中, M A L {\rm MAL} MAL A n c h o r {\rm Anchor} Anchor袋中挑选出高得分 A n c h o r {\rm Anchor} Anchor的用于更新模型,然后模型会评估具有新的置信度的 A n c h o r {\rm Anchor} Anchor用于构建下一次迭代所使用的 A n c h o r {\rm Anchor} Anchor袋。注意这是一个交替优化的过程:首先使用最优化的 A n c h o r {\rm Anchor} Anchor去更新参数得到最优化的模型;然后最优化的模型反过来选择最优化的 A n c h o r {\rm Anchor} Anchor。如此下去得到最终的优化结果。具体流程如下:对于物体 i t h i^{th} ith,为其建立一个 A n c h o r {\rm Anchor} Anchor A i A_i Ai A i A_i Ai中包含了与物体 i t h i^{th} ith具有最高交并比的 k k k A n c h o r {\rm Anchor} Anchor。然后, M A L {\rm MAL} MAL基于分类和回归置信度共同评估 A i A_i Ai中的 A n c h o r {\rm Anchor} Anchor,该置信度主要用于确定 A n c h o r {\rm Anchor} Anchor的选择。基于 R e t i n a N e t {\rm RetinaNet} RetinaNet M A L {\rm MAL} MAL的目标函数定义如下: { θ ∗ , a i ∗ } = arg ⁡ max ⁡ θ , a j ∈ A i F θ ( a j , b i ) = arg ⁡ max ⁡ θ , a j ∈ A i f θ ( a j , b i c l s ) + β g θ ( a j , b i l o c ) (3) \begin{aligned} \{\theta^*,a_i^*\} &=\arg \max_{\theta,a_j\in A_i}F_{\theta}(a_j,b_i)\\ &=\arg \max_{\theta,a_j\in A_i}f_{\theta}(a_j,b_i^{cls})+\beta g_{\theta}(a_j,b_i^{loc}) \end{aligned}\tag{3} {θ,ai}=argθ,ajAimaxFθ(aj,bi)=argθ,ajAimaxfθ(aj,bicls)+βgθ(aj,biloc)(3)

上式可以为物体 i t h i^{th} ith找到最优 A n c h o r {\rm Anchor} Anchor a i ∗ a_i^* ai,同时为模型找到最优参数为 θ ∗ \theta^* θ。则 M A L {\rm MAL} MAL的损失函数可写作: { θ ∗ , a i ∗ } = arg ⁡ min ⁡ θ , a j ∈ A i L d e t ( a j , b i ) = arg ⁡ min ⁡ θ , a j ∈ A i L c l s ( a j , b i c l s ) + β L r e g ( a j , b i l o c ) (4) \begin{aligned} \{\theta^*,a_i^*\} &=\arg \min_{\theta,a_j\in A_i}\mathcal{L}_{det}(a_j,b_i)\\ &=\arg \min_{\theta,a_j\in A_i}\mathcal{L}_{cls}(a_j,b_i^{cls})+\beta \mathcal{L}_{reg}(a_j,b_i^{loc})\tag{4} \end{aligned} {θ,ai}=argθ,ajAiminLdet(aj,bi)=argθ,ajAiminLcls(aj,bicls)+βLreg(aj,biloc)(4)

3.3 Selection-Depression Optimization

随机梯度下降是一种非凸函数的优化方法,它可能得到次优解。为了在每次迭代中选择最优的 A n c h o r {\rm Anchor} Anchor M A L {\rm MAL} MAL通过扰动 A n c h o r {\rm Anchor} Anchor的特征来降低选择 A n c h o r {\rm Anchor} Anchor时的置信度。

3.3.1 Anchor Selection

传统的 M I L {\rm MIL} MIL算法倾向于选择得分最高的一组 A n c h o r {\rm Anchor} Anchor。但是在目标检测中,很难直接从每个 A n c h o r {\rm Anchor} Anchor袋中选择出得分最高的 A n c h o r {\rm Anchor} Anchor。论文提出的方法是,在学习过程中线性地降低 A n c h o r {\rm Anchor} Anchor袋的数量,从 ∣ A i ∣ |A_i| Ai 1 1 1。这里,令 λ = t / T \lambda=t/T λ=t/T,其中 t t t T T T表示当前迭代次数和总的迭代次数; ϕ ( λ ) \phi(\lambda) ϕ(λ)表示最高得分的 A n c h o r {\rm Anchor} Anchor的索引且 ∣ ϕ ( λ ) ∣ = ∣ A i ∣ ∗ ( 1 − λ ) + 1 |\phi(\lambda)|=|A_i|*(1-\lambda)+1 ϕ(λ)=Ai(1λ)+1。则上式 ( 3 ) {\rm (3)} (3)可写作: { θ ∗ , a i ∗ } = arg ⁡ max ⁡ θ , a j ∈ A i ∑ j ∈ ϕ ( λ ) F θ ( a j , b i ) (5) \{\theta^*,a_i^*\} =\arg \max_{\theta,a_j\in A_i}\sum_{j\in \phi(\lambda)}F_{\theta}(a_j,b_i)\tag{5} {θ,ai}=argθ,ajAimaxjϕ(λ)Fθ(aj,bi)(5)

基于上式, M A L {\rm MAL} MAL在前期模型利用众多 A n c h o r {\rm Anchor} Anchor来更新学习。最后,随着迭代的进行,最终得到的一个 A n c h o r {\rm Anchor} Anchor即为当前目标所对应的最优 A n c h o r {\rm Anchor} Anchor

3.3.2 Anchor Depression

基于 I A N {\rm IAN} IAN M A L {\rm MAL} MAL提出 A n c h o r {\rm Anchor} Anchor抑制模块来扰动其特征,从而降低 A n c h o r {\rm Anchor} Anchor的置信度。如下图:
在这里插入图片描述

图5:Anchor Depression

为了进一步优化训练损失函数, M A L {\rm MAL} MAL基于选择的 A n c h o r {\rm Anchor} Anchor学习更加丰富的特征。设卷积特征图和注意力特征图分别为 U U U M M M,其中 M = ∑ l w l ∗ U l M=\sum_{l}w_l*U_l M=lwlUl w w w表示全局平均池化、 l l l为通道索引。通过将最高得分的 A n c h o r {\rm Anchor} Anchor设置为零后得到一个新的抑制后的特征图 M ′ = ( 1 − 1 P ) ∗ M M^{'}=(1-1_{P})*M M=(11P)M,其中 P P P表示高置信度的位置。则特征图变为: V = ( 1 + M ′ ) ∘ U l (6) V=(\bold 1+M^{'})\circ U_l\tag{6} V=(1+M)Ul(6)

其中 1 \bold 1 1表示单位矩阵、 ∘ \circ 表示对应位置元素相乘。结合本节内容,上式 ( 6 ) (6) (6)变为: V = ( 1 + ( 1 − 1 ψ ( λ ) ) ∗ M ) ∘ U l (7) V=(\bold 1+(1-1_{\psi(\lambda)})*M)\circ U_l\tag{7} V=(1+(11ψ(λ))M)Ul(7)

3.4 Implementation

M A L {\rm MAL} MAL基于 R e t i n a N e t {\rm RetinaNet} RetinaNet,不同的是 M A L {\rm MAL} MAL在前向传播的过程中,首先计算每个 A n c h o r {\rm Anchor} Anchor的检测置信度,然后选择 t o p top top- k k k A n c h o r {\rm Anchor} Anchor组成 A n c h o r {\rm Anchor} Anchor袋。然后通过 3.3 3.3 3.3节的内容抑制 A n c h o r {\rm Anchor} Anchor的分数,接着使用最佳 A n c h o r {\rm Anchor} Anchor更新模型。最后重复以上过程直到完成整个检测流程。 M A L {\rm MAL} MAL的推理过程与 R e t i n a N e t {\rm RetinaNet} RetinaNet基本相同。

3.5 Optimization Analysis

A n c h o r {\rm Anchor} Anchor选择-抑制策略类似于一个对抗过程 A n c h o r {\rm Anchor} Anchor选择的目的是找到最高分数的 A n c h o r {\rm Anchor} Anchor来最小化 L d e t \mathcal L_{det} Ldet;然后 A n c h o r {\rm Anchor} Anchor抑制的目的是扰乱特征使其置信度降低,从而会使 L d e t \mathcal L_{det} Ldet增大。但同时这一过程也有助于 M A L {\rm MAL} MAL在非凸函数中找到最优解。如下图:在这里插入图片描述

图6:Anchor选择-抑制


4. Experiments

在这里插入图片描述

图7:MAL和RetinaNet

上图第一行和第三行是 R e t i n a N e t {\rm RetinaNet} RetinaNet的可视化结果,第二行和第四行是 M A L {\rm MAL} MAL的可视化结果。由结果图对比可知, M A L {\rm MAL} MAL能够抑制大多数无关的背景信息,同时保留更多的前景信息。
在这里插入图片描述

图8:消融实验

在这里插入图片描述

图9:与其他目标检测方法的对比


5. Conclusion

论文提出一种动态 A n c h o r {\rm Anchor} Anchor的概念,在训练的迭代过程中使用的 A n c h o r {\rm Anchor} Anchor不尽相同,这主要取决于上一轮 A n c h o r {\rm Anchor} Anchor所更新的模型。同时在选择 A n c h o r {\rm Anchor} Anchor时,抑制得分最高的 A n c h o r {\rm Anchor} Anchor,以避免模型陷入次优解。这个 A n c h o r {\rm Anchor} Anchor的选择和抑制的过程像是是一个对抗的过程。而整个 M A L {\rm MAL} MAL的训练过程是一个循环迭代的过程。


参考

  1. Ke W, Zhang T, Huang Z, et al. Multiple Anchor Learning for Visual Object Detection[C]//Proceedingags of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 10206-10215.
  2. https://blog.csdn.net/sinat_17456165/article/details/106798986.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值