一种新的特征融合方式:《Learning Spatial Fusion for Single-Shot Object Detection》解读

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

代码:https://github.com/ruinmessi/ASFF

一个更强的YOLOv3 baseline

其实整篇文章能取得如此优秀的效果并不仅仅在于加入了ASFF这种自适应特征融合方式,作者在YOLOv3的基础上吸取了很多优秀的经验,构建了一个非常强劲的目标检测baseline,这个baseline的mAPJ就达到了38,其中包括:

  • Guided Anchoring
  • Bags of Tricks
  • Additional IoU loss

可以看到,这个baseline将yolov3的AP从33%提升到了38%,高达5个点之多。

自适应特征融合方式ASFF

为了充分利用高层特征的语义信息和底层特征的细粒度特征,很多网络结构都会采用FPN的方式输出多层特征,但是无论是类似于YOLOv3还是RetinaNet他们多用concatenation或者element-wise这种直接衔接或者相加的方式,作者认为这样并不能充分利用不同尺度的特征,于是提出了Adaptively Spatial Feature Fusion的自适应特征融合方式:

以ASFF-3为例,图中的绿色框描述了如何将特征进行融合,其中X1,X2,X3分别为来自level,level2,level3的特征,与为来自不同层的特征乘上权重参数α3,β3和γ3并相加,就能得到新的融合特征ASFF-3,如下面公式所示:

因为采用相加的方式,所以需要相加时的level1~3层输出的特征大小相同,且通道数也要相同,需要对不同层的feature做upsample或downsample并调整通道数。对于需要upsample的层,比如想得到ASFF3,需要将level1调整至和level3尺寸一致,采用的方式是先通过1×1卷积调整到与level3通道数一致,再用插值的方式resize到相同大小;而对于需要downsample的层,比如想得到ASFF1,此时对于level2到level1只需要用一个3×3,stride=2的卷积就可以了,如果是level3到level1则需要在3×3卷积的基础上再加一个stride=2的maxpooling,这样就能调整level3和level1尺寸一致。

对于权重参数α,β和γ,则是通过resize后的level1~level3的特征图经过1×1的卷积得到的。并且参数α,β和γ经过concat之后通过softmax使得他们的范围都在[0,1]内并且和为1:

为什么要ASFF

文章通过梯度和反向传播来解释为什么ASFF会有效。首先以最基本的YOLOv3为例,加入FPN后通过链式法则我们知道在backward的时候梯度是这样计算的:

其中因为不同尺度的层之间的尺度变换无非就是up-sampling或者down-sampling,因此这一项通常为固定值,为了简化表达式我们可以设置为1,,则上面的式子变成了:

进一步的,这一项相当于对输出特征的activation操作,导数也将为固定值,同理,我们可以将他们的值简化为1,则表达式进一步简化成了:

假设level1(i,j)对应位置feature map上刚好有物体并且为正样本,那其他level上对应(i,j)位置上可能刚好为负样本,这样反传过程中梯度既包含了正样本又包含了负样本,这种不连续性会对梯度结果造成干扰,并且降低训练的效率。而通过ASFF的方式,反传的梯度表达式就变成了:

我们可以通过权重参数来控制,比如刚才那种情况,另α2和α3=0,则负样本的梯度不会结果造成干扰。另外这也解释了为什么特征融合的权重参数来源于输出特征+卷积,因为融合的权重参数和特征是息息相关的。

结果分析

实验证明,asff比concat和sum的方式更有效,在baseline的基础上提升了map2个点之多。

并且作者对asff做了可视化分析:

可视化结果进一步解释了ASFF的有效性,比如对于第一个斑马的图,可以看到其实最终斑马是在level1这个feature上被检测到的(明显标红),并且观察level1这一层的α,β和γ权重可以发现,对于图中斑马这种大物体,更容易被高层的特征捕捉到,因为对于大物体我们往往更需要语义特征。

而对于第二个羊群图来说,可以看到羊更多的是被level2和level3检测到,这也说明了对于小物体,我们更需要底层特征中的细粒度特征来辨别。

 

  • 20
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值