FreeAnchor

论文:FreeAnchor: Learning to Match Anchors for Visual Object Detection
来源:NIPS 2019

1. Motivation

  • 常规的目标检测网络基于IoU来进行anchor与GT间的匹配,但会面临以下问题:
    (1) 对于非中心特征的物体,比如细长的物体,空间上的对齐并不能保证anchor覆盖足够多的物体特征,从而造成分类和检测性能的下降。
    (2) 当检测目标密集时,以IoU作为匹配的准则是不可行的。
  • 以上的问题都来源于预先设定的anchor与GT的匹配,没有考虑到网络的输出情况。为此,论文提出基于学习的匹配方法,将匹配过程定义为最大化似然估计的过程,端到端地同时学习目标分类、目标检测以及匹配关系,取得了很不错的效果,论文的主要贡献如下:
    (1) 将检测算法的训练过程定义为最大似然估计的过程,并将手工设定anchor与GT匹配改为自由的anchor匹配,打破IoU的约束,允许GT根据最大似然的准则选择anchors。
    (2) 定义检测定制似然,并且实现端到端的检测和分类训练机制,最大化似然能够促进网络学习如何匹配最优的anchor,并保证与NMS算法的兼容。

2. FreeAnchor

在这里插入图片描述

2.1 Detector Training as Maximum Likelihood Estimation

  • 假设输入图像 I I I中所有ground truth的集合为 B B B,某个ground truth b i = { b i c l s , b i l o c } ∈ B b_i=\{b_i^{cls},b_i^{loc}\}\in B bi={bicls,biloc}B
  • 假设所有anchor的集合为 A A A,对于某个anchor a j ∈ A a_j\in A ajA,网络将输出其类别概率 a j c l s ∈ R K a_j^{cls}\in R^K ajclsRK,以及边界框预测值 a j l o c = { x , y , w , h } a_j^{loc}=\{x,y,w,h\} ajloc={x,y,w,h},其中 K = 80 K=80 K=80为类别总数;
  • 在训练阶段,首先要进行label assignment,即anchor-groundtruth匹配。假设匹配矩阵为 C i , j ∈ { 0 , 1 } C_{i,j}\in \{0,1\} Ci,j{0,1}表示 b i b_i bi a j a_j aj是否成功匹配,匹配原则为:
    C i j = { 1 , I o U ( b i , a j ) > t h r e s h o l d 0 , o t h e r w i s e             C_{ij}=\left\{ \begin{aligned} 1 & , & IoU(b_i, a_j)>threshold\\ 0 &, & otherwise\ \ \ \ \ \ \ \ \ \ \ \\ \end{aligned} \right. Cij={10,,IoU(bi,aj)>thresholdotherwise            s . t .    ∑ i C i j ∈ { 0 , 1 } , ∀ a j ∈ A s.t.\ \ \sum_iC_{ij}\in \{0,1\},\forall a_j\in A s.t.  iCij{0,1},ajA限制条件保证了每个 a j a_j aj至多与一个 b i b_i bi匹配,即,如果 a j a_j aj与多个object的IoU均大于某一阈值threshold,那么与 a j a_j aj具有最大IoU的object与 a j a_j aj相匹配。
  • 损失函数为
    L ( θ ) = ∑ a j ∈ A + ∑ b i ∈ B C i j L i j c l s ( θ ) + β ∑ a j ∈ A + ∑ b i ∈ B C i j L i j l o c ( θ ) + ∑ a j ∈ A _ L j b g ( θ ) L(\theta)=\sum_{a_j\in A_+}\sum_{b_i\in B}C_{ij}L_{ij}^{cls}(\theta)+\beta\sum_{a_j\in A_+}\sum_{b_i\in B}C_{ij}L_{ij}^{loc}(\theta)+\sum_{a_j\in A_\_}L_j^{bg}(\theta) L(θ)=ajA+biBCijLijcls(θ)+βajA+biBCijLijloc(θ)+ajA_Ljbg(θ) L i j c l s ( θ ) = B C E ( a j c l s , b i c l s , θ ) L_{ij}^{cls}(\theta)=BCE(a_j^{cls},b_i^{cls},\theta) Lijcls(θ)=BCE(ajcls,bicls,θ) L i j l o c ( θ ) = S m o o t h L 1 ( a j l o c , b i l o c , θ ) L_{ij}^{loc}(\theta)=SmoothL1(a_j^{loc},b_i^{loc},\theta) Lijloc(θ)=SmoothL1(ajloc,biloc,θ) L j b g ( θ ) = B C E ( a j c l s , 0 ⃗ , θ ) L_j^{bg}(\theta)=BCE(a_{j}^{cls},\vec 0,\theta) Ljbg(θ)=BCE(ajcls,0 ,θ)其中,正样本集合 A + = { a j ∣ ∑ i C i j = 1 } ⊆ A A_+=\{a_j|\sum_iC_{ij}=1\}\subseteq A A+={ajiCij=1}A,负样本集合 A _ = { a j ∣ ∑ i C i j = 0 } ⊆ A A_\_=\{a_j|\sum_iC_{ij}=0\}\subseteq A A_={ajiCij=0}A
  • 上述label assignment和损失函数的构造是one-stage anchor-based检测器的一般做法,后续采用可直接使用该损失函数训练网络;本文将上述损失函数转化成概率,并用极大似然估计来优化网络:
    在这里插入图片描述
    上述公式在进行转化时,利用到正样本集合 A + A_+ A+中的性质 ∑ i C i j = 1 \sum_iC_{ij}=1 iCij=1。其中, P i j c l s ( θ ) P_{ij}^{cls}(\theta) Pijcls(θ) P j b g ( θ ) P_j^{bg}(\theta) Pjbg(θ)表示分类置信度, P i j l o c ( θ ) P_{ij}^{loc}(\theta) Pijloc(θ)表示定位置信度。最小化损失函数相当于最大化似然概率。

2.2 Detection Customized Likelihood

  • 传统的方法中, C i j C_{ij} Cij是基于anchor与GT框之间的IoU得到的,此时网络不会学习如何进行anchor-groundtruth matching,FreeAnchor的创新点就是自动学习 C i j C_{ij} Cij
  • 对于每一个object b i b_i bi,构造一个对应的anchor bag A i = { a j ∣ t o p n   I o U ( b i , a j ) } A_i=\{a_j|top_n\ IoU(b_i,a_j)\} Ai={ajtopn IoU(bi,aj)},即与 b i b_i biIoU最大的前 n n n个anchor组成 A i A_i Ai在传统方法中,anchor bag A i A_i Ai可以看成与 b i b_i bi的IoU大于某阈值的一个或多个anchor所组成的集合。传统方法为每个object选择matched anchor时过于人为化,FreeAnchor则先选择一些anchor作为候选集合,让网络自动选择出最佳匹配的anchor。相比于传统方法在网络输出前人为确定了匹配方法,FreeAnchor的这种网络输出后自动确定匹配对的方法则考虑到了anchor的学习情况,即,事先比较好的正样本anchor在分类和回归后产生的损失可能很大,而事先被认定位负样本的anchor在分类和回归后产生的损失可能比较小。
  • 按照IoU大小选择top n个anchor构成anchor bag时,anchor bag中的anchor的类型(假设用IoU阈值来衡量)有多种情况:1) 全为negative;2) 全为positive;3) positive和negative共存。anchor-groundtruth matching就是在anchor bag中找到那个best anchor,训练过程中可能出现low score + high IoU或high score + low IoU的坏情况,best anchor指的是high score + high IoU。那么,如何评价这种“双high”呢?或者有多个anchor都是“双high”时,哪一个为best anchor呢?这就需要有一个衡量标准。
  • 为提高召回率,应保证对于每一个object b i ∈ B b_i\in B biB,至少存在一个anchor a j ∈ A i a_j\in A_i ajAi b j b_j bj非常match,match的程度用 P i j c l s ( θ ) P i j l o c ( θ ) P_{ij}^{cls}(\theta)P_{ij}^{loc}(\theta) Pijcls(θ)Pijloc(θ)来度量,对此构造目标函数
    在这里插入图片描述
  • 为提高准确率,检测器需要将定位较差的anchor分类为背景类,这些anchor一来比较难回归,二来如果这些anchor数量太多的话,会影响best anchor的高精度定位。对此,构造令一个目标函数
    在这里插入图片描述其中, P j b g ( θ ) P_j^{bg}(\theta) Pjbg(θ)表示检测器将 a j a_j aj分类为背景类的置信度。 P { a j ∈ A _ } P\{a_j\in A_\_\} P{ajA_}表示 a j a_j aj因为其定位性能而成为负样本的置信度,也即,若 a j a_j aj的定位越差,我们将其认定为负样本的置信度就越高,为使 P p r e c i s i o n ( θ ) P_{precision}(\theta) Pprecision(θ)越大,此时我们希望检测器将其分类为背景类的置信度 P j b g ( θ ) P_j^{bg}(\theta) Pjbg(θ)较大。
  • P { a j ∈ A _ } P\{a_j\in A_\_\} P{ajA_}如何才能表示 a j a_j aj因为其定位性能而成为负样本的置信度? P { a j ∈ A _ } = 1 − max ⁡ i P { a j → b i } P\{a_j\in A_\_\}=1-\max_iP\{a_j \to b_i\} P{ajA_}=1maxiP{ajbi},其中, P { a j → b i } P\{a_j \to b_i\} P{ajbi}衡量了 a j a_j aj b i b_i bi的定位性能,若 a j a_j aj能较好地定位 b i b_i bi,则认为 a j a_j aj成功预测 b i b_i bi的置信度越高。如果 a j a_j aj对所有 b i b_i bi的定位效果都比较差,此时 max ⁡ i P { a j → b i } \max_iP\{a_j \to b_i\} maxiP{ajbi}较小,导致 P { a j ∈ A _ } P\{a_j\in A_\_\} P{ajA_}较大,表示 a j a_j aj因为其定位性能较差而成为负样本的置信度越大。
  • P { a j → b i } P\{a_j \to b_i\} P{ajbi}如何才能衡量 a j a_j aj b i b_i bi的定位性能? 首先, P { a j → b i } P\{a_j \to b_i\} P{ajbi}必须是 a j a_j aj b i b_i bi之间的IoU(记为 I o U i j l o c IoU_{ij}^{loc} IoUijloc)的单调递增函数;其次,若 I o U i j l o c IoU_{ij}^{loc} IoUijloc小于某个阈值 t t t,则令 P { a j → b i } = 0 P\{a_j \to b_i\}=0 P{ajbi}=0,设置阈值的目的是当 a j a_j aj与所有的 b i b_i bi的IoU都比较小时,能保证 a j a_j aj成为负样本的概率为1;最后,对于每一个 b i b_i bi,有且仅有一个 a j a_j aj满足 P { a j → b i } = 1 P\{a_j \to b_i\}=1 P{ajbi}=1,该条件是为了向后兼容NMS,一来保证预测同一个 b i b_i bi的多个 a j a_j aj具有顺序线性关系,二来保证最佳预测的 a j a_j aj P { a j → b i } = 1 P\{a_j \to b_i\}=1 P{ajbi}=1。饱和线性函数可以同时满足上述3个条件,最终令
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 定制的检测似然概率 P ′ ( θ ) P'(\theta) P(θ)具有以下形式,其同时考虑了召回率、准确率、与NMS的兼容性等三方面的内容。
    在这里插入图片描述
  • 为了训练网络,应该将 P ′ ( θ ) P'(\theta) P(θ)转化成损失函数 L ′ ( θ ) L'(\theta) L(θ)
    在这里插入图片描述
  • 在计算损失函数 L ′ ( θ ) L'(\theta) L(θ)时,需要计算max函数。max函数实现了自动地从anchor bag中为每一个object选择一个最合适的anchor,但是,max函数在训练初期是比较随机的,这可能导致网络收敛较慢,甚至导致网络发散,所以需要对max函数进行改造,使其满足实际训练任务。max函数在训练初期的随机性来源于网络参数的随机初始化,所以anchor输出score(即 P i j c l s ( θ ) P i j l o c ( θ ) P_{ij}^{cls}(\theta)P_{ij}^{loc}(\theta) Pijcls(θ)Pijloc(θ))是随机的,score最高的anchor不一定最适合,所以在初期最好采用所有anchor平均的做法,随着训练的进行,慢慢过渡到max函数上。Mean-max函数能满足这种要求。
    在这里插入图片描述在这里插入图片描述 1 1 − x j \frac{1}{1-x_j} 1xj1可以看成是 x j x_j xj的权重。训练初期,anchors置信度都比较低,Mean-max函数接近取平均值,即所有候选anchor都参与训练;随着不断训练,一些候选anchors的置信度增加,Mean-max函数越接近max函数,训练充足时,就可以从候选anchors中选出一个最好的anchor来匹配object 。
  • 最终损失函数 L ′ ′ ( θ ) L''(\theta) L(θ)
    在这里插入图片描述
    其中, X i = { P i j c l s ( θ ) P i j l o c ( θ ) ∣ a j ∈ A i } X_i=\{P_{ij}^{cls}(\theta)P_{ij}^{loc}(\theta)|a_j\in A_i\} Xi={Pijcls(θ)Pijloc(θ)ajAi} w 1 = α ∣ ∣ B ∣ ∣ w_1=\frac{\alpha}{||B||} w1=Bα w 2 = 1 − α n ∣ ∣ B ∣ ∣ w_2=\frac{1-\alpha}{n||B||} w2=nB1α F L ( x ) = − x γ l o g ( 1 − x ) FL(x)=-x^{\gamma}log(1-x) FL(x)=xγlog(1x)是focal loss。
  • FreeAnchor算法流程如下在这里插入图片描述

3. 实验

  • 对于方形物体,RetinaNet和FreeAnchor的 A P AP AP相近;但对于细长物体,FreeAnchor的 A P AP AP显著提升,原因是FreeAnchor至少会从候选anchors中选出一个来正确的预测类别和位置,所选的anchor不一定是空间最匹配的,但是其特征肯定是最具有代表性的。
    在这里插入图片描述
  • 在拥挤场景中,FreeAnchor效果更好。在这里插入图片描述
  • FreeAnchor中先后兼容了NMS,所以NMS前后召回率之比会更大,表示NMS的误删率更低。
    在这里插入图片描述
  • 最终性能
    在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值