跟大家分享ECCV2020中的一篇文章《BorderDet: Border Feature for Dense Object Detection》。
论文下载地址:https://arxiv.org/abs/2007.11056
源码地址:https://github.com/Megvii-BaseDetection/BorderDet
在这篇文章中,作者提出了BAM(Border Alignment Module),将其融入到FCOS检测器中,构造出名为BorderDet的检测器。通过实验表明,增加BAM能提高检测性能。
总体结构
BAM能够高效地提取目标边界的特征(border feature),BAM在一阶段检测器的位置如下图所示:
如上图所示,在网络detection head的分类分支和回归分支中分别加入BAM单元,在每个分支中,BAM都以baseline中原回归分支的结果和分支的中间feature map作为输入,BAM的输出与原分支的输出融合,得到最终结果。
BAM单元
BAM的结构如下图所示:
在BAM中,首先使用了一个带有instance normalization的1x1卷积,然后进行Border Align操作,后面再接1个1x1卷积。
Border Align的操作原理如下图所示:
BorderAlign在操作过程中,若在
(
i
,
j
)
(i, j)
(i,j)处检测到Coarse Box,则进行如下操作得到BorderAlign的输出feature map:
上式中
(
x
0
,
y
0
,
x
1
,
y
1
)
\left(x_{0}, y_{0}, x_{1}, y_{1}\right)
(x0,y0,x1,y1)是Coarse Box的坐标,
w
w
w和
h
h
h是Coarse Box的宽和高,在论文中
N
N
N取10。为了避免量化误差,使用$I_{c}
$时进行了双线性插值操作。
将BAM应用于二阶段检测器中
此外,作者也尝试将BAM单元用于二阶段检测器的detection head中,构造了BorderRPN,如下图所示:
损失函数
在训练时,若ground truth ( x 0 t , y 0 t , x 1 t , y 1 t ) \left(x_{0}^{t}, y_{0}^{t}, x_{1}^{t}, y_{1}^{t}\right) (x0t,y0t,x1t,y1t)与Coarse Box ( x 0 , y 0 , x 1 , y 1 ) \left(x_{0}, y_{0}, x_{1}, y_{1}\right) (x0,y0,x1,y1)的IoU大于0.6,则认为2者匹配,使用如下公式计算ground truth和Coarse Box的偏差:
δ x 0 = x 0 t − x 0 w ∗ σ δ y 0 = y 0 t − y 0 h ∗ σ δ x 1 = x 1 t − x 1 w ∗ σ δ y 1 = y 1 t − y 1 h ∗ σ , \delta x_{0}=\frac{x_{0}^{t}-x_{0}}{w * \sigma} \quad \delta y_{0}=\frac{y_{0}^{t}-y_{0}}{h * \sigma} \quad \delta x_{1}=\frac{x_{1}^{t}-x_{1}}{w * \sigma} \quad \delta y_{1}=\frac{y_{1}^{t}-y_{1}}{h * \sigma} \text { , } δx0=w∗σx0t−x0δy0=h∗σy0t−y0δx1=w∗σx1t−x1δy1=h∗σy1t−y1 ,
上式中
σ
\sigma
σ取0.5。上式定义的偏差作为网络的回归目标之一,目的是使得最终的bounding box比Coarse Box更接近ground truth。
网络整体的损失函数如下:
L = L c l s C + L r e g C + 1 N p o s ∑ x , y L c l s B ( P B , C ∗ ) + L r e g B { C ∗ > 0 } ( Δ , Δ ∗ ) \mathcal{L}=\mathcal{L}_{cls}^{C}+\mathcal{L}_{reg}^{C}+\frac{1}{\mathcal{N}_{pos}} \sum_{x, y} \mathcal{L}_{cls}^{B}\left(\mathcal{P}^{B}, \mathcal{C}^{*}\right)+\mathcal{L}_{reg}^{B}\{\mathcal{C}^{*}>0\}(\Delta, \Delta^{*}) L=LclsC+LregC+Npos1∑x,yLclsB(PB,C∗)+LregB{C∗>0}(Δ,Δ∗)
在损失函数中,前2部分是FCOS的损失函数,后2部分是本文新增的,用于在Coarse结果的基础上,利用border feature进一步提升网络性能。
实验结果
使用FCOS做为baseline的BorderDet性能如下表所示:
此外,这篇论文提出的方法可以很容易集成到现有的一阶段和二阶段目标检测器中,如下表所示
如果你对计算机视觉中的目标检测、分割、跟踪、轻量化网络感兴趣,欢迎关注公众号一起交流~