FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读

FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读

论文下载地址:点击此链接跳转.
这是博主自己在github整理的目标检测方向论文的合集,应该算比较全,目前2020ECCV持续更新中,即将更新:2020IJCAI合集,欢迎下载…

一、Abstract

       现代的基于CNN的目标检测器基本都是在anchor与目标间的IoU值的约束下给各个GT分配的anchors。本文提出了一个learning to match的方法来打破IOU的限制,允许目标以一种更加灵活的方式去匹配anchors。作者把提出的方法称作FreeAnchor,通过将检测器的训练表示为一个最大似然估计(MLE)的过程,将手工分配的anchor变为*的anchor匹配。FreeAnchor的目标是学习那些能够从分类和定位去最好地诠释某类目标的特征。FreeAnchor是通过优化检测定制似然函数实现的,能够以一种即插即用的方式融合于基于CNN的目标检测器。

二、Introduction

       过去几年CNN在目标检测取得了一定的成功。为了能够在有限的卷积特征下表示具有不同外观,长宽比及空间布局的目标,大多数基于CNN的目标检测器是利用多个尺度及长宽比的anchor来作为目标定位的参考点。通过将每个目标分配给单个或多个anchor可以确定特征,然后是两个基本步骤,分类和定位(即边界框回归)。
       基于anchor的检测器是利用的空间对齐,即目标与anchor之间的IoU值作为anchor分配的标准。每个有被分配的anchor都是基于与目标边界框对齐的anchor就是最适合用于目标分类和定位的这么一种直觉去独立地监督网络学习以进行目标预测,但作者认为这种直觉是不可靠的,手工制定的IoU标准并不是最好的选择。
       一方面,对于那些没有中心特征的物体,比如细长目标最具代表性的特征并不在目标中心附近,空间对齐的anchor可能对应的具有代表性的特征较少,导致分类和定位能力降低。另一方面,当多个目标组合在一起时,使用IoU来给目标匹配合适的anchor/特征是不可行的。
       设计出一种通用规则使anchor/特征与各种几何形状的目标进行最优匹配是很难的。广泛使用的手工分配在面对无中心、细长或拥挤的目标时可能会失败。要想系统地解决这一问题需要探索一种基于学习的方法,这也是本文研究的重点。
       作者提出了一种learning-to-match的目标检测方法,旨在从三个方面来优化目标检测的学习过程,从而避免手工分配anchor。首先,为了获得较高的召回率,检测器需要保证每个目标都至少有一个anchor的预测会接近GT。其次,为了达到较高的检测精度,检测器需要将定位差(边界框回归误差大)的anchor分类到背景中。第三,anchor的预测应与非极大值抑制(NMS)兼容,即分类分数越高,定位越准确。否则,在使用NMS过程时,会抑制那些定位准确但分类分数较低的anchor。
       为实现这些目标,作者将目标与anchor的匹配表示为最大似然估计(MLE)的过程,从一个anchors bag中为每个目标选择最具代表性的anchor。作者将每个anchors bag的似然概率定义为anchors bag内最大的anchor置信度。最大化似然概率能够保证至少存在一个anchor对目标分类和定位都有较高的置信度,同时大多数anchor的分类错误或定位错误会较大,会被归为背景。在训练过程中会将似然概率转换为损失函数,驱使基于CNN的检测器训练以及目标和anchor间的匹配。

Contributions

       1)作者将检测器训练作为一个MLE过程,并将手工分配的anchor变为*的anchor匹配。该方法打破了IoU的约束,允许目标在最大似然的原则下灵活选择anchor。
       2)作者定义了一个检测定制似然,在端到端的机制下实现了目标分类和定位的联合优化,最大可能地驱使网络学习匹配最优的anchor,保证与NMS的可比性。

三、The Proposed Approach

       为了建模目标和anchor间的对应关系,作者建议将检测器的训练变为MLE过程,然后定义检测定制似然,这样能够同时促进目标的分类和定位。在检测器训练时,作者将检测定制似然转换为检测定制损失,并在端到端的机制下联合优化目标分类、定位以及目标和anchor间的匹配。

3.1 Detector Training as Maximum Likelihood Estimation

       作者是基于一阶段的检测器做的工作。输入图像I,GT的annotations被记为B,GT bib_i∈B由类标签biclsb_i^{cls}和定位bilocb_i^{loc}组成。在网络前向传播过程中,每个anchor aj∈A在Sigmoid**后获得一个预测类别ajclsa_j^{cls}∈Rk,以及在边界框回归后获得一个定位预测ajloca_j^{loc}={x, y, w, h}。k表示目标类别的数量。
       训练时,基于IOU的手工判别会被用来将anchor分配给目标。矩阵CijC_{ij}∈{0,1}用来指示是否目标bi与anchor aj匹配。
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       当bi和aj的loU大于一个阈值时,bi与aj匹配,Cij=1,其余情况Cij=0。当多个目标与一个anchor的loU大于阈值时,loU值最大的目标将成功匹配该anchor,这样保证每个anchor最多被一个目标匹配,也就是\sumCij∈{0,1},\forallaj∈A。通过定义A+\subseteqA为{aj | \sumCij=1},基于anchor的检测器的损失函数L(θ\theta)可以写为:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读

       θ\theta表示需要学习的网络参数。LijclsL_{ij}^{cls}(θ\theta)=BCE(ajclsa_j^{cls}, biclsb_i^{cls}, θ\theta),LijlocL_{ij}^{loc}(θ\theta)=SmoothL1(ajloca_j^{loc}, bilocb_i^{loc}, θ\theta),LjbgL_j^{bg}=BCE(ajclsa_j^{cls}, 0\vec{0}, θ\theta)分别表示分类的二元交叉损失和定位的smooth 11损失,β为正则化因子,bg表示背景。
       从最大似然估计MLE的角度来看,训练损失L(θ\theta)可以转换为一个似然概率:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       PjclsP_j^{cls}(θ\theta)和PjbgP_j^{bg}(θ\theta)表示分类置信度,PijlocP_{ij}^{loc}(θ\theta)表示定位置信度。最小化1式的L(θ\theta)与去最大化2式的似然概率P(θ\theta)是相等的。2式严格地从MLE的角度考虑了anchor分类和定位的优化,但是忽略了如何去学习匹配矩阵Cij。现有的基于CNN的检测器是通过使用loU准则来分配anchor解决这个问题,但是忽略了对目标与anchor的匹配的优化。

3.2 Detection Customized Likelihood

       为了实现目标与anchor匹配的优化,作者引入了检测定制似然来扩展基于cnn的检测框架。这样是为了保证在与NMS兼容的同时兼顾召回率和精度。为了实现这种似然,作者首先根据anchor与目标的IOU值选择top-n的anchors Ai\subsetA为每个目标bi构造一个候选的anchors bag。然后学习匹配最佳anchor,同时最大化检测定制似然。
       为了优化召回率,对于每个目标bi∈B,我们要求保证至少存在一个anchor aj∈Ai,其预测的ajclsa_j^{cls}ajloca_j^{loc}非常接近GT,由式2的前两项可得目标函数:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       为了提高检测精度,检测器需要将定位较差的anchor分类到背景类中。通过优化以下目标函数:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       P{aj∈A-}=1 - maxiP{aj->bi} 是aj最后没有与任一目标匹配的概率,P{aj->bi}表示anchor aj正确预测目标bi的概率。前者表示的前景定位置信度,后者表示前景分类置信度。
       为了能够与NMS处理兼容,P{aj->bi}应具备以下三种特性:
       (1)P{aj->bi}是ajloca_j^{loc}和bi间的IoU值(即IOUijlocIOU_{ij}^{loc})的单调递增函数。
       (2)当IOUijlocIOU_{ij}^{loc}小于阈值t时,P{aj->bi}会接近于0。
       (3)对于一个目标bi,有且只有一个aj满足P{aj->bi} = 1。这三种特性可用一个饱和线性函数来满足:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       如图所示:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       P{aj->bi}=Saturated linear(IOUijlocIOU_{ij}^{loc}, t, maxj(IOUijlocIOU_{ij}^{loc}))。为实现上述定义,检测定制似然定义如下:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       它能够达到保证召回率、精度以及与NMS兼容的目标。通过优化这个似然函数能够同时最大化召回率和精度的概率,这样就在检测器的训练中实现了*的目标与anchor间的匹配。

3.3 Anchor Matching Mechanism

       为了在基于CNN的检测器中实现这种学习去匹配的方法,将上式定义的检测定制似然转换为检测定制损失函数:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       max函数用于为每个目标选择最佳的anchor。训练时会从一个anchors bag Ai中选择一个anchor,然后用它来更新网络参数θ\theta
       在训练初期,对于随机初始化的网络参数,所有anchor的置信度都较小。置信度最高的anchor不一定最适用于训练检测器。因此作者提出使用Mean-max函数,定义为:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       用其来选择anchor。当初始anchor置信度较低时,mean-max函数会更接近均值函数,意味着几乎所有的anchor都被用于训练。随着不断的训练,一些anchor的置信度增加,Mean-max函数逐渐向max函数靠拢。也就是在充分的训练后,每个物体都可以从各自的anchors bag中选择一个最佳anchor来作匹配。
       将检测定制损失函数中的max函数替换为Mean-max,并加入平衡因子w1和w2,且将focal loss用于第二项,得到FreeAnchor检测器的检测定制损失函数:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
       Xi=(PjclsP_j^{cls}(θ\theta) * PijlocP_ij^{loc}(θ\theta) | aj=Ai}是anchors bag Ai对应的似然集合。通过使用focal loss的α和γ,设定w1=α/||B||,w2=1-α/n||B||,FL(x)=-xγlog(1-x)。
       在定义了检测定制损失后,作者将训练过程实现为Algorithm 1:
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读

四、Experiments

FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读
FreeAnchor: Learning to Match Anchors for Visual Object Detection论文翻译阅读

五、个人总结

       本文的思想很好,也引出了后来的ATSS,AutoAssign这样的好的工作,也应该是第一篇有正式考虑到目标与anchor匹配问题的文章,能够一定程度地摆脱掉手工设定的IOU的限制,以一种更灵活的方式去匹配目标和anchor。
       其实主要的改动都体现在Loss上,作者先是将原本基于IOU的损失函数从最大似然估计的角度转换为一个似然概率。然后以保证召回率、精度以及和NMS兼容为目标,提出了一种检测定制似然,通过优化这个似然函数能够同时最大化召回率和精度,这样就在检测器的训练中实现了*的目标与anchor间的匹配。为了用在基于cnn的目标检测器中,作者又将这个检测定制似然转换为一个检测定制损失函数,考虑到训练初期网络参数是随机初始化的,所有anchor的置信度都较低,所以置信度最高的anchor不一定就是最适用于训练检测器的,因此作者提出了使用Mean-max函数来替换掉损失中原本的max函数,并融入了focal loss,这样得到最终的检测定制损失函数,替换掉原本的损失函数过后增加的成本其实很少,但效果总的来说是非常明显的,具体效果可以多看看实验部分。