ASFF:Learning Spatial Fusion for Single-Shot Object Detection

ASFF:Learning Spatial Fusion for Single-Shot Object Detection

论文:Learning Spatial Fusion for Single-Shot Object Detection
论文地址:https://arxiv.org/pdf/1911.09516.pdf
github:https://github.com/ruinmessi/ASFF

本篇文章最大的创新点是提出了一种新的特征融合的方式ASFF,通过学习权重参数的方式将不同层的特征融合到一起,作者证明了这样的方法要优于通过concatenation或者element-wise的方式。因而本博文只介绍ASFF的详细结构。

ASFF

ASFF:Learning Spatial Fusion for Single-Shot Object Detection
ASFF称为自适应空间特征融合,其思路非常简单,就是为了改进FPN进行特征融合时只是暴力地将高层特征图上采样然后进行像素级的相加操作。ASFF通过对每张融合的特征图设置自学习的权重来进行加权融合。
例如上图中有三张不同尺度的特征图,称为Level1、Level2、Level3,分别α3,β3和γ3相乘在相加,就构成了ASFF-3。
ASFF:Learning Spatial Fusion for Single-Shot Object Detection
具体怎么操作呢,以生成ASFF-3为例,Level1是高层语义特征图,比Level3的低层语义特征图相比,分辨率是其四分之一,并且通道数也不同(Level1为512×,Level2为256×,Level3为128×),所以Level1需要先进行1×1卷积压缩通道数到128×,然后再进行4倍上采样从而变成和Level3相同维度的待融合特征图Level1_resized,同理Level2也需要1×1卷积压缩通道并进行2倍上采样变成Level2_resized,然后

ASFF-3 = α3 × Level1_resized + β3 × Level2_resized + γ3 × Level3

对于权重参数α,β和γ,则是通过resize后的level1~level3的特征图经过1×1的卷积得到的。并且参数α,β和γ经过concat之后通过softmax使得他们的范围都在[0,1]内并且和为1:
ASFF:Learning Spatial Fusion for Single-Shot Object Detection
注意在生成ASFF-1时,Level3需要先进行stride为2的2×2最大池化,这样Level3就变成原特征图大小的1/2,然后再进行3×3的stride为2的卷积进行通道匹配。

权重生成

看了论文后,我非常好奇作者是怎么生成权重的,在看了github源码后,觉得作者的权重生成方式非常神奇。
以ASFF-3的权重生成为例,作者将Level1_resized、Level2_resized、Level3(均为128×H×W),分别进行1×1卷积通道降维到16×H×W,然后三张特征图拼接成48×H×W的通道数,再进行1×1卷积降维到3×H×W,最后进行softmax分别与Level1_resized、Level2_resized、Level3对应相乘即可。
ASFF:Learning Spatial Fusion for Single-Shot Object Detection
ASFF:Learning Spatial Fusion for Single-Shot Object Detection
至此,ASFF结构分析完毕,具体实验结果可以参考论文。