原论文:《Siyuan Qiao, Liang-Chieh Chen, Alan Yuille. DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution[J]. arXiv:2006.02334》
最后面有 参考代码 的 Github 链接
仅描述基本构成,原论文内容很丰富,所以详细情况还是要看论文。
效果:
论文的两个特点:
- 将 RPN 改为 RFP(Recursive Feature Pyramid);
- 将普通卷积改为 SAC(Switchable Atrous Convolution)。
1. RFP
- 将原始RPN每层的输出 fi1 反馈进同层骨干网,得到 fi2,具体反馈的方式是:
- 使用 ASPP模块 对 fi1 进行变换,得到 Ri;
- 修改接收 Ri 的骨干网中对应的模块;
- 最后将 fi1 与 fi2 利用 Fusion模块 融合,得到最终的特征图;
-
骨干网模块中接收 Ri 的方式:
1.1 ASPP(Atrous Spatial Pyramid Pooling)
输入: fi1 (通道为 c)
输出: Ri1 (通道为 c)
结构:
- 四个并行的卷积分支,每个分支的输出的通道为 c/4。
- 其中三个分支由 Conv+ReLU 构成,相关参数:kernel size=[1,3,3], atrous rate=[1,3,6], padding=[0,3,6]。
- 第四个分支:global average pooling+Conv_1×1+ReLU+resize。
- 将四个分支连接在一起得到 Ri1。
1.2 Fusion
输入:fi1 与 fi2
输出:最终要使用的特征图
2. SAC
-
结构:(Pre)Global Context+SAC+(Post)Global Context
- 中间部分的 SAC 计算公式:
Output=S(x)⋅Conv(x,w,1)+(1−S(x))⋅Conv(x,w+Δw,r)
其中,S(x)=average pooling_5×5+Conv_1×1
图中的权重锁定(Lock)的含义:下侧的权重用上侧初始化,并在此基础上加上一个 Δw,这个 Δw 是后面训练得到的。
参考材料