ASFF代码可以参考论文作者在github上的代码
论文地址
简要介绍
文章所提及的yolov3 baseline就不提了,简单介绍一下ASFF。
金字塔特征表示是解决目标检测中目标尺度变化的常用手段。 然而,不同特征尺度之间的不一致是基于特征金字塔的单镜头检测器的主要限制。 作者提出了一种新的和数据驱动的金字塔特征融合策略,称为自适应空间特征融合(ASFF)。 它学习了空间滤波冲突信息以抑制不一致性的方法,从而提高了特征的尺度不变性,并几乎没有引入推理开销。
三特征层ASFF结构:
核心思想是通过学习自适应地调整各尺度特征在融合时的空间权重。
特征融合公式:
alpha beta gama和为1,通过softmax函数得到。
这三个参数通过1*1卷积得到。
代码实现
class ASFF(nn.Module):
def __init__(self, level, rfb=False, vis=False):
super(ASFF, self).__init__()
self.level = level
# 输入的三个特征层的channels, 根据实际修改
self.dim = [512, 256, 256]
self.inter_dim = self.dim[self.level]
# 每个层级三者输出通道数需要一致
if level==0:
self.stride_level_1 = add_conv(self.dim[1], self.inter_dim, 3, 2)
self.stride_level_2 = add_conv(self.dim[2], self