简介
文本介绍的是 C V P R 2020 {\rm CVPR\ 2020} CVPR 2020的一篇关于目标检测的文章。论文的关注点是目标检测算法中的样本采样,提出一种加权采样的损失函数。该损失函数用于学习采样的权重,在分类损失、回归损失、交并比和置信度之间作了有效的平衡。论文主要以 F a s t e r R C N N {\rm Faster\ RCNN} Faster RCNN、 M a s k R C N N {\rm Mask\ RCNN} Mask RCNN和 R e t i n a N e t {\rm RetinaNet} RetinaNet为基础网络作对比,使用 S W N {\rm SWN} SWN后的模型均获得了提升。论文原文 源码
1. Introduction
目标检测是一个多任务的学习过程,主要由目标的分类和定位组成。其中涉及到区域采样(使用滑动窗口或 R P N {\rm RPN} RPN)、区域分类、区域回归和非极大值抑制等。基于区域采样,首先目标检测被转换成一个分类问题,旨在从大量区域中找到合适的区域用于分类和回归。根据不同的区域采样方法,目标检测可以分为一阶段检测算法和两阶段检测算法。通常,两阶段检测算法的精度更高,而一阶段检测算法的实时性更好。
在目标检测中,通常会遇到前景和背景的采样区域数量极不匹配的情况。两阶段检测算法的做法是采样固定比例的正负样本和难例挖掘;而由于一阶段算法中存在的大量易分样本(采样区域内仅包含背景),上述两种方法并不能很好地应用于其中。另一种解决样本不平衡的方法是从损失函数入手,其中典型的工作就是 F o c a l L o s s {\rm Focal\ Loss} Focal Loss,它通过对不同性质的样本损失赋予不同权重从而达到缓解不平衡问题的目的。
前面提到的难例是指那些分类损失较大的样本(难例挖掘就是采样那些损失较大的样本,模型容易将这些负样本分类成正样本。通过让网络去反复学习此类样本,以不断增强网络的鲁棒性),下图展示了论文提出的
S
W
N
{\rm SWN}
SWN的采样结果:
图 ( a ) {\rm (a)} (a)中的样本具有很高的损失,但它的权重很低(降低了难例样本的权重);而图 ( b ) {\rm (b)} (b)和 ( a ) {\rm (a)} (a)的情况相反(增加了易分样本的权重)。同时,由图 ( c ) {\rm (c)} (c)我们可以看到:交并比高的样本,其分类置信度并不一定会很高。后续提出的 I o U {\rm IoU} IoU- N e t {\rm Net} Net和 K L {\rm KL} KL- L o s s {\rm Loss} Loss等工作用于解决上述问题。
样本加权是一个复杂且动态的过程(随着训练迭代的进行,样本的正负性可能随之发生改变),作者认为样本的加权应该与数据本身和任务相关联:第一,基于同真实框的关系以及损失值确定采样样本;第二,采样的权重应该兼顾分类和回归。基于以上思路,论文提出统一样本加权网络, S W N {\rm SWN} SWN。它是一种简单高效的学习采样权重的方法,同时也平衡了分类和回归任务。具体来说,除了基本的检测组件外, S W N {\rm SWN} SWN还添加一个样本加权网络来预测样本的分类权重和回归权重。该加权网络以分类损失、回归损失、交并比和置信度作为输入,将样本的上下文转换为样本的权重。
2. Related Work
相关工作部分首先介绍了基于区域的目标检测算法,其可以分为两阶段检测算法如 R {\rm R} R- C N N {\rm CNN} CNN系列、 R P N {\rm RPN} RPN等和一阶段检测算法如 Y O L O {\rm YOLO} YOLO系列和 S S D {\rm SSD} SSD等。论文提出的 S W N {\rm SWN} SWN能够迁移迁移至上述两种模型中,且不会过多增加计算量的同时带来模型性能的提升。
区域采样和加权策略在目标检测中扮演重要角色。随机采样的方法以固定的比例采样正负样本,但并非所有样本的重要性都相同。事实上,大多数负样本很容易被分类出来,这就有了后来常用的在线难例负样本挖掘( O H E M {\rm OHEM} OHEM)和基于 I o U {\rm IoU} IoU的样本采样方法。 F o c a l {\rm Focal} Focal- L o s s {\rm Loss} Loss的思路是为不同性质的样本赋予不同的权重,以此达到样本的平衡。近来,也有不少工作将关注点放在易分样本上。基于此,论文提出一种样本加权策略,同时设计一个通用的损失函数,且样本权重通过学习得到。
3. A Unified Sample Weighting Network
3.1 Review of Sampling Strategies
基于区域的目标检测损失函数如下,其中 A \mathcal{A} A表示相应的一组 A n c h o r {\rm Anchor} Anchor: L = 1 N 1 ∑ { i : a i ∈ A c l s } L i c l s + 1 N 2 ∑ { i : a i ∈ A r e g } L i r e g (1) L=\frac{1}{N_1}\sum_{\{i:a_i\in \mathcal{A}^{cls}\}}L_i^{cls}+\frac{1}{N_2}\sum_{\{i:a_i\in \mathcal{A}^{reg}\}}L_i^{reg}\tag{1} L=N11{i:ai∈Acls}∑Licls+N21{i:ai∈Areg}∑Lireg(1)
现在令 s i c l s s_i^{cls} sicls和 s i r e g s_i^{reg} sireg分别表示分类和回归损失的权重,即: L = 1 N 1 ∑ { i : a i ∈ A c l s } s i c l s L i c l s + 1 N 2 ∑ { i : a i ∈ A r e g } s i r e g L i r e g (2) L=\frac{1}{N_1}\sum_{\{i:a_i\in \mathcal{A}^{cls}\}}s_i^{cls}L_i^{cls}+\frac{1}{N_2}\sum_{\{i:a_i\in \mathcal{A}^{reg}\}}s_i^{reg}L_i^{reg}\tag{2} L=N11{i:ai∈Acls}∑siclsLicls+N21{i:ai∈Areg}∑siregLireg(2)
其中, s i c l s = I [ a i ∈ A c l s ] s_i^{cls}=I[a_i\in \mathcal{A}^{cls}] sicls=I[ai∈Acls]、 s i r e g = I [ a i ∈ A r e g ] s_i^{reg}=I[a_i\in \mathcal{A}^{reg}] sireg=I[ai∈Areg], I [ ⋅ ] I[·] I[⋅]表示指示函数。则可以用 S c l s = { s i c l s } S^{cls}=\{s_i^{cls}\} Scls={sicls}和 S r e g = { s i r e g } S^{reg}=\{s_i^{reg}\} Sreg={sireg}表示所有的样本权重。
3.2 Problems in Existing Sampling Approaches
3.2.1 RPN, Random Sampling and OHEM
在 R P N {\rm RPN} RPN中,样本的分类权重定义为: s i c l s = I [ p ( a i ) > ρ ] ∗ I [ a i ∈ A N M S ] s_i^{cls}=I[p(a_i)>\rho]*I[a_i\in \mathcal{A}_{NMS}] sicls=I[p(ai)>ρ]∗I[ai∈ANMS]。前一项用于滤除置信度低于设定阈值 ρ \rho ρ的 A n c h o r {\rm Anchor} Anchor,后一项表示经 N M S {\rm NMS} NMS处理后的 A n c h o r {\rm Anchor} Anchor。随机采样的做法是分别在 A P \mathcal {A}^P AP和 A N \mathcal {A}^N AN中随机采样 n p n_p np个正样本和 n n n_n nn个负样本。其中, n p n_p np和 n n n_n nn都是事先确定的值。这样,被采样样本的损失权重为 1 1 1,其余的为 0 0 0。另一种采样做法是 O H E M {\rm OHEM} OHEM,它首先将正样本和负样本按照损失值的降序排列,然后将 t o p {\rm top} top- n p n_p np的正样本和 t o p {\rm top} top- n n n_n nn的负样本的权重设定为 1 1 1,其余的为 0 0 0。这里,样本的分类权重定义为: s i r e g = I [ s i c l s = 1 ] ∗ I [ a i ∈ A P ] s_i^{reg}=I[s_i^{cls}=1]*I[a_i\in \mathcal{A}^P] sireg=I[sicls=1]∗I[ai∈AP]。前一项保证回归损失的计算只基于正样本。
3.2.2 Focal-Loss and KL-Loss
在 F o c a l {\rm Focal} Focal- L o s s {\rm Loss} Loss中,分类损失的权重的定义如下: s i c l s = ( 1 − p ( a i ) ) γ s_i^{cls}=(1-p(a_i))^\gamma sicls=(1−p(ai))γ;回归损失的权重的定义如下: s i r e g = I [ a i ∈ A P ] s_i^{reg}=I[a_i\mathcal\in \mathcal{A}^P] sireg=I[ai∈AP]。在 K L {\rm KL} KL- L o s s {\rm Loss} Loss中,回归损失的权重的定义如下: s i r e g = 1 / σ i 2 s_i^{reg}=1/\sigma_i^2 sireg=1/σi2,分类损失的权重同随机采样和 O H E M {\rm OHEM} OHEM。
给定一组
A
n
c
h
o
r
{\rm Anchor}
Anchor为
A
=
A
P
∪
A
N
\mathcal{A}=\mathcal{A}^P\cup\mathcal{A}^N
A=AP∪AN,加权采样的目的是找到
S
c
l
s
S^{cls}
Scls和
S
r
e
g
S^{reg}
Sreg来提升模型性能。现在来考虑目标检测中的两个重要元素,
N
M
S
{\rm NMS}
NMS和
m
A
P
{\rm mAP}
mAP。如下图:
如上图,根据 N M S {\rm NMS} NMS,首先边界框 C C C将被滤除;而对于 O H E M {\rm OHEM} OHEM,由于 C C C具有较高的损失值,它会被保留。给予难例样本,如 C C C太大的权重并不是一个合理的方案。对于 F o c a l {\rm Focal} Focal- L o s s {\rm Loss} Loss,它会给 A A A和 B B B赋予相同的分类权重。但考虑到 A A A的交并比比 B B B更大,理想的方案是给 A A A赋予更大的权重。而对于 K L {\rm KL} KL- L o s s {\rm Loss} Loss,它根据边界框的不确定性赋予回归损失权重,而忽略了分类损失的权重。
基于上述提到的种种,论文提出通过数据驱动的角度联合学习分类和回归的样本权重。即以前方法仅关注分类损失( O H E M {\rm OHEM} OHEM和 F o c a l {\rm Focal} Focal- L o s s {\rm Loss} Loss)或回归损失( K L {\rm KL} KL- L o s s {\rm Loss} Loss)。但论文提出的 S W N {\rm SWN} SWN同时关注分类和回归损失。与 O H E M {\rm OHEM} OHEM和 F o c a l {\rm Focal} Focal- L o s s {\rm Loss} Loss不同的是, S W N {\rm SWN} SWN同样也关注那些易分的样本。
3.3 Joint Learning for Sample Weighting
目标检测可以分为分类和回归两个任务。给定样本 i t h i^{\rm th} ith,首先将回归任务建模为一个高斯概率密度函数。预测的位置偏移作为均值: p ( g t i ∣ a i ∗ ) = N ( a i ∗ , σ i r e g 2 ) = 1 σ i r e g ⋅ 2 π e x p ( − 1 2 ⋅ ( g t i − a i ∗ ) 2 σ i r e g 2 ) (3) p(gt_i|a_i^*)=\mathcal{N}(a_i^*,\sigma_i^{reg^2})=\frac{1}{\sigma_i^{reg}·\sqrt{2\pi}}{\rm exp}({-\frac{1}{2}·\frac{(gt_i-a_i^*)^2}{\sigma_i^{reg^2}}})\tag{3} p(gti∣ai∗)=N(ai∗,σireg2)=σireg⋅2π1exp(−21⋅σireg2(gti−ai∗)2)(3)
上式两端取对数后为: log p ( g t i ∣ a i ∗ ) ∝ − 1 σ i r e g 2 ∣ ∣ g t i − a i ∗ ∣ ∣ 2 2 − log σ i r e g (4) \log p(gt_i|a_i^*)\propto-\frac{1}{\sigma_i^{reg^2}}||gt_i-a_i^*||_2^2-\log \sigma_i^{reg}\tag{4} logp(gti∣ai∗)∝−σireg21∣∣gti−ai∗∣∣22−logσireg(4)
现定义 L i r e g = ∣ ∣ g t i − a i ∗ ∣ ∣ 2 2 L_i^{reg}=||gt_i-a_i^*||_2^2 Lireg=∣∣gti−ai∗∣∣22,将上式右端的符号去掉: L i r e g ∗ = 1 σ i r e g 2 L i r e g + λ 2 log σ i r e g (5) L_i^{reg*}=\frac{1}{\sigma_i^{reg^2}}L_i^{reg}+\lambda_2\log \sigma_i^{reg}\tag{5} Lireg∗=σireg21Lireg+λ2logσireg(5)
再者,如果将上式中的 1 / σ i r e g 2 1/\sigma_i^{reg^2} 1/σireg2写为 s i r e g s_i^{reg} sireg,则上式可以看作是带有正则项的加权回归损失。随着方差的增大, L i r e g L_i^{reg} Lireg的权重在减小。直观上,该加权策略更加关注置信度高的样本,并基于其更多的惩罚。对于分类损失,使用 S o f t m a x {\rm Softmax} Softmax函数: p ( y i ∣ a i ∗ ) = s o f t m a x ( y i , 1 t i p ( a i ∗ ) ) (6) p(y_i|a_i^*)=softmax(y_i,\frac{1}{t_i}p(a_i^*))\tag{6} p(yi∣ai∗)=softmax(yi,ti1p(ai∗))(6)
其中, t i t_i ti用于控制分布的平整度, p ( a i ∗ ) p(a_i^*) p(ai∗)和 y i y_i yi对应于 a i ∗ a_i^{*} ai∗的未归一化的预测值和真实值。为了使其与回归任务的表现形式相同,令 t i = 1 / σ i c l s 2 t_i=1/\sigma_i^{cls^2} ti=1/σicls2、 L i c l s = − log s o f t m a x ( y i , p ( a i ∗ ) ) L_i^{cls}=-\log softmax(y_i,p(a_i^*)) Licls=−logsoftmax(yi,p(ai∗))。则式 ( 6 ) (6) (6)可写作: L i c l s ∗ = 1 σ i c l s 2 L i c l s + λ 1 log σ i c l s (7) L_i^{cls*}=\frac{1}{\sigma_i^{cls^2}}L_i^{cls}+\lambda_1\log \sigma_i^{cls}\tag{7} Licls∗=σicls21Licls+λ1logσicls(7)
综合式 ( 5 ) (5) (5)和 ( 7 ) (7) (7),目标检测的总损失可写作: L i = L i c l s ∗ + L i r e g ∗ = 1 σ i c l s 2 L i c l s + 1 σ i r e g 2 L i r e g + λ 1 log σ i c l s + λ 2 log σ i r e g (8) \begin{aligned} L_i&=L_i^{cls*}+L_i^{reg*}\\&=\frac{1}{\sigma_i^{cls^2}}L_i^{cls}+\frac{1}{\sigma_i^{reg^2}}L_i^{reg}+\lambda_1\log \sigma_i^{cls}+\lambda_2\log \sigma_i^{reg} \end{aligned}\tag{8} Li=Licls∗+Lireg∗=σicls21Licls+σireg21Lireg+λ1logσicls+λ2logσireg(8)
这里,由于 σ i ⋅ 2 \sigma_i^{·2} σi⋅2恒非负且位于分母位置,可能出现除零的错误。论文提出的解决办法是首先对整体项取对数,并且表示为: m i ⋅ : = l o g ( σ i ⋅ ) m_i^·:=log(\sigma_i^·) mi⋅:=log(σi⋅),然后在式中表示为指数形式。即上式可变为: L i = e x p ( − 2 ∗ m i c l s ) L i c l s + λ 1 m i c l s + e x p ( − 2 ∗ m i r e g ) L i r e g + λ 1 m i r e g (9) L_i=exp(-2*m_i^{cls})L_i^{cls}+\lambda_1m_i^{cls}+exp(-2*m_i^{reg})L_i^{reg}+\lambda_1m_i^{reg}\tag{9} Li=exp(−2∗micls)Licls+λ1micls+exp(−2∗mireg)Lireg+λ1mireg(9)
通常存在两种加权采样的策略。一方面关注难例样本:由于这类样本的损失值更大,相应的梯度也更大,这能够加速模型的训练过程。另一方面关注易分样本:这些人认为从评价指标的重要性且类别失衡不那么严重时,易分样本的效果更好。但是,通常我们并不能对样本的难易程度一概而论,而应该采取论文所用的灵活的采样方式。
对式 ( 5 ) (5) (5)关于标准差 σ i r e g \sigma_i^{reg} σireg求导( λ 2 = 1 \lambda_2=1 λ2=1),得到: 0 = − 1 σ i r e g 3 L i r e g + 1 σ i r e g 0=-\frac{1}{\sigma_i^{reg^3}}L_i^{reg}+\frac{1}{\sigma_i^{reg}} 0=−σireg31Lireg+σireg1
即极值 σ i r e g , ∗ 2 = L i r e g \sigma_i^{reg,*^2}=L_i^{reg} σireg,∗2=Lireg。将该值带回式 ( 5 ) (5) (5)中,得到: L i r e g ∗ = 1 L i r e g ⋅ L i r e g + λ 2 log L i r e g L_i^{reg*}=\frac{1}{L_i^{reg}}·L_i^{reg}+\lambda_2\log \sqrt{L_i^{reg}} Lireg∗=Lireg1⋅Lireg+λ2logLireg
忽略掉常数项后,得到: L i r e g ∗ = log L i r e g L_i^{reg*}=\log L_i^{reg} Lireg∗=logLireg
注意到上式右端是一个凹的非递减函数,当 L i r e g = ∣ ∣ g t i − a i ∗ ∣ ∣ 2 2 → 0 L_i^{reg}=||gt_i-a_i^*||_2^2\rightarrow0 Lireg=∣∣gti−ai∗∣∣22→0时,仅对它施加较小的惩罚。这使得算法整体对于离群点和噪声具有很好的鲁棒性,同时避免过度关注难例样本。同时,式 ( 5 ) (5) (5)的回归函数更倾向于选择具有较大交并比的样本,因为这会加快训练过程,且使损失朝着负无穷大方向变化。反过来,这又激励了在学习过程中增加这些样本的权重,而具有相对较小交并比的样本在训练过程中将保持适度的梯度。
3.4 Unified Sample Weighting Network Design
上图是论文提出的 S W N {\rm SWN} SWN的网络结构,图 ( a ) {\rm (a)} (a)是一个两阶段检测算法的检测过程;图 ( b ) {\rm (b)} (b)是建议框和真实框匹配时所产生的损失的计算方法,即上文提到的式 ( 9 ) {\rm (9)} (9);图 ( c ) {\rm (c)} (c)是 S W N {\rm SWN} SWN的关键模块,它以分类损失、回归损失、置信度和交并比作为输入,计算当前样本的权重。其中 F 、 G 、 H 、 K {\rm F、G、H、K} F、G、H、K代表四个转化函数, ( c ) {\rm (c)} (c)中的模块本质是一个多层感知机。
我们再来看一下上图中 ( c ) {\rm (c)} (c)的详细信息:其输入是分类损失 L i c l s L_i^{cls} Licls、回归损失 L i r e g L_i^{reg} Lireg、交并比 I o U i IoU_i IoUi和置信度 P r o b i Prob_i Probi,如果为负样本,则交并比和置信度设置为零。 F 、 G 、 H 、 K {\rm F、G、H、K} F、G、H、K四个转化函数将输入转化为更具表征意义的特征向量,并且通过一个多层感知机学习。可表示如下: d i = c o n c a t ( F ( L i c l s ) ; G ( L i r e g ) ; H ( I o U i ) ; K ( P r o b i ) ) (10) d_i=concat(F(L_i^{cls});G(L_i^{reg});H(IoU_i);K(Prob_i))\tag{10} di=concat(F(Licls);G(Lireg);H(IoUi);K(Probi))(10)
前面提到的 m i c l s m_i^{cls} micls和 m i r e g m_i^{reg} mireg分别表示分类和回归损失的样本权重,这二者可通过如下方式学习得到: m i c l s = W c l s ( d i ) a n d m i r e g = W r e g ( d i ) (11) m_i^{cls}=W_{cls}(d_i)\ \ {\rm and} \ \ m_i^{reg}=W_{reg}(d_i)\tag{11} micls=Wcls(di) and mireg=Wreg(di)(11)
其中 W ∗ W_* W∗分别表示一个多层感知机。同时由图 4 4 4可以看到, S W N {\rm SWN} SWN不依赖于目标检测的网络结构,它能够置入基于区域的检测器中。如在 F a s t e r {\rm Faster} Faster- R C N N {\rm RCNN} RCNN由 R P N {\rm RPN} RPN和 F a s t {\rm Fast} Fast- R C N N {\rm RCNN} RCNN组成,不改变 R P N {\rm RPN} RPN部分而将 S W N {\rm SWN} SWN植入 F a s t {\rm Fast} Fast- R C N N {\rm RCNN} RCNN中就可以实现对 F a s t e r {\rm Faster} Faster- R C N N {\rm RCNN} RCNN改进。对于训练过程中的每一个样本,首先计算其分类损失 L i c l s L_i^{cls} Licls、回归损失 L i r e g L_i^{reg} Lireg、交并比 I o U i IoU_i IoUi和置信度 P r o b i Prob_i Probi,将计算结果送入 S W N {\rm SWN} SWN中;然后通过 S W N {\rm SWN} SWN预测样本权重 e x p ( − 2 ∗ m i c l s ) {\rm exp}(-2*m_i^{cls}) exp(−2∗micls)和 e x p ( − 2 ∗ m i r e g ) {\rm exp}(-2*m_i^{reg}) exp(−2∗mireg)后带入式 ( 9 ) (9) (9)中计算总损失,最后反向传播回传梯度。对于 R e t i n a N e t {\rm RetinaNet} RetinaNet,其情况与 F a s t e r {\rm Faster} Faster- R C N N {\rm RCNN} RCNN类似。 M a s k {\rm Mask} Mask- R C N N {\rm RCNN} RCNN相比 F a s t e r {\rm Faster} Faster- R C N N {\rm RCNN} RCNN多了一个掩膜分支,对其改进的做法是再加入一个包含 S W N {\rm SWN} SWN的分支。同时, S W N {\rm SWN} SWN的输入还多了一个掩膜分支的损失。
4. Experiments

5. Conclusion
论文设计一种加权采样的通用目标检测损失函数,通过在基于区域的目标检测模型中加入 S W N {\rm SWN} SWN模块后就能对模型进行改进。 S W N {\rm SWN} SWN整体对分类和回归做了平衡,且通过多层感知机来学习权重。 S W N {\rm SWN} SWN是一种即插即用的模块,文中以 F a s t e r R C N N {\rm Faster\ RCNN} Faster RCNN、 M a s k R C N N {\rm Mask\ RCNN} Mask RCNN和 R e t i n a N e t {\rm RetinaNet} RetinaNet为基础网络作对比,显示出了 S W N {\rm SWN} SWN的有效性。
参考文献
- Cai Q, Pan Y, Wang Y, et al. Learning a Unified Sample Weighting Network for Object Detection[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 14173-14182.