DetectoRS学习笔记(54.7AP 目前目标检测最强模型!)
DetectoRS学习笔记
从结果上看,这篇文章在Res50+HTC的基础上将box mAP从43.6刷到了51.3.
文章的创新点主要来自于两点:
1、FPN的改进—>RFP
主要提出对FPN的结构增加feedback的反馈和recursive的repeat堆叠, 融合时还使用了ASPP的结构,增大了全局特征和感受野。具体示意图如下:
公式为:
这里的f代表的就是自顶向下的FPN的过程,B就是自底向上的特征提取的过程,x是输入,R是自顶向下传输到自底向上的过程中的横向连接的一种转换,也就是ASPP,T,t就是迭代的次数(横向连接的运行次数)。ASPP(多孔金字塔池化)就是通过不同的空洞卷积来对图像进行不同程度的缩放,得到不同大小的输入特征图,再把子窗口的特征进行池化就生成了固定长度的特征表示。如下图所示:
其实最近基于FPN的改进有很多工作了,比如NAS-FPN, Efficientdet的BiFPN(貌似现在社区都没完全复现), PANet, SEPC, AugFPN, ACFPN等等, FPN被手工和NAS玩出花了, 其中BiFPN使用堆叠FPN结构来提取更powerful的features,还有一些工作来解决fpn不同features之间的semantic gaps. 但是这篇文章的feedback connection的确是一个比较简洁的idea, motivation介绍的也比较简单, 原文说的是:
The feedback connections bring the features that directly receive
gradients from the detector heads back to the low levels of the
bottom-up backbone to speed up training and boost performance.
RFP的设计的确match了looking and thinking twice的思想,融合的时候使用ASPP设计的也比较巧妙。
2. BackBone operation的改进 —> Switchable Atrous Convolution (SAC).
Motivation也比较简单,可选择的就是自适应,Atrous conv最开始是为了增加感受野and节省参数,那这里Switchable 就是adaptive的让每个layer选择合适的感受野,即将原来的卷积转变为:左边就是普通卷积,S(x)是一个开关器(也就是下图浅绿色中间的那条通道AvgPool,1x1卷积),delta w是一个可学习的权重参数,r是超参(一般取3)。
为了更方便的从已有的model zoo初始化,文章提出了locking mechanism, 另delta w = 0 when initialized,这样可以直接从ResNet ImageNet modelzoo初始化,省去了training from ImageNet的过程。另外,有一点需要注意的是,在实现中,conv都被替换成为deformable conv, 这个之前就被验证过是能够提点的,所以真正和HTC比的gains应该remove掉这个config. (-1 map)
上图中前面和后面的部分(粉色和紫色)是一个全局上下文的模块,类似于SE的注意力机制,不过有两点区别:
1、没有非线性**函数
2、没有sigmoid用来评价权重分数
总结
总的来说有两点比较吸引人的创新,是目前目标检测的最SOTA的模型。