申请试用
登录
核心技术
以原创技术体系为根基,SenseCore商汤AI大装置为核心基座,布局多领域、多方向前沿研究,
快速打通AI在各个垂直场景中的应用,向行业赋能。

CVPR 2020 | 商汤提出应对尺度变化的检测新算法

2020-07-25

 

导读:在CVPR 2020上,为了更好的解决物体检测中的尺度问题,商汤EIG算法中台团队重新设计了经典的单阶段检测器的FPN【1】以及HEAD结构,通过构造更具等变性的特征金子塔,以提高检测器应对尺度变化的鲁棒性,可以使单阶段检测器在coco上提升~4mAP,完整代码已开源。

aa.png

                    图 1 效果概览

动机

文章提出了一个针对物体具有大尺度变化数据集的检测算法。工作的研究动机在于:

1.     当前所有基于RetinaNet的单阶段检测器,都采用了共享权重的分类HEAD以及回归HEAD在特征金字塔上滑动从而检测不同大小的物体,相应的最为适应这种结构的特征金子塔对于尺度变化应当具有等变性。

2.     经典的底层特征提取算法如SIFT,其高斯金字塔具有很好的尺度等变性,我们思考了深度神经网络中特征金字塔与高斯金字塔的区别,从而提出了提高其等变性的算法。

关于高斯金字塔的等变性质,可以结合下面一个示例为大家展示这种性质:

image.png


  图 2            图3

       

    image.png:对羊嘴边缘具有高相应的特征提取算子 image.png:带dilation的羊嘴边缘提取算子

图2图3中,一张图中有两只尺度比例大概为2的羊,有一个可以检测羊嘴的特征提取器,但是其仅能对尺度较小的羊的羊嘴具有较高的响应,那么对于尺度较大的羊我们应该如何处理呢?

1.     如图2,可以用一个高斯卷积核去除高频后降采样一次,使得大羊的羊嘴特征跟小羊在同一尺度,从而在降采样的图上进行大羊羊嘴的检测。

2.     如图3,可以用一个高斯卷积核去除高频后,将特征提取算子变为变为空洞卷积,亦可以进行大羊的羊嘴检测。

这两种方法不仅符合直觉,其在数字信号处理理论中有较为完善的理论论证,在此不再赘述。

 

回想单阶段检测器(如RetinaNet),

image.png

 图 4 retinanet结构

其共享权重的HEAD(Subnet)设计其实已经将特征金字塔中的特征当作了高斯金字塔,即假设特征金子塔也有上述尺度等变性质。但是实际使用中,我们经常观察到不同尺度的物体相互竞争,使得检测器在不同尺度的性能此高彼低的现象,这些情况不太符合尺度等变特性,这是为什么呢?

分析

相比高斯金字塔,从backbone的不同stage抽取特征图组成的的特征金字塔其实失去了严格的等变性。

1      相比于图像处理中low level的特征,深度神经网络提取的特征往往经过足够多基础特征的组合,其特征往往有更为复杂的高级语义,并且由于我们用相同的backbone进行特征的提取不同尺度的物体的特征会有相互竞争的现象。

2      深度神经网络中,因为足够多的卷积与非线性激活单元,其不同stage感受野的变化在特征图的不同位置具有不一致的现象,使得金子塔的两层间很难有高斯金字塔一样,不同大小物体的特征在downsample一次,或者增大特征提取算子的dilation这样的处理后具有一致性。

关于不同尺度物体的竞争:

image.png

                                                      图 5

 

物体检测中,我们需要特征图同时具有较高的语义信息完成分类,又需要较好的保留原图信息用于定位,单一尺度的物体,在backbone中的不同stage可以提取出不同级别的语义,但是在处理另一尺度的物体时,则会出现不匹配的现象,如小物体用到的特征提取算子可能只是大物体提取低级特征算子,从而很难提取高级语义进行分类,这也启发了后来的FPN的Top-down结构,以及后续的一系列feature fusing的结构。

网络设计

如何改进特征金子塔使其具有更好的等变性质呢?

我们发现,在特征金子塔的某一层为基准,其与上下两层间具有更好的相关性,直觉上可以推测其底部一层往往保留有更多的定位相关的信息,更高层往往具有更好的分类相关的信息,而以往的feature fusing的方法都遗漏了这种空间尺度(特征金子塔层间)的相关性。

        image.png

                   图 6  FPN不同层间的相关性

 

       无论是形式上的分析还是实验发现的这种相关性暗示我们尺度空间上确实有值得提取的特征,我们希望通过在尺度空间上进行卷积来提取这种特征。

       考虑到FPN的不同层的分辨率不同,我们由此提出金字塔卷积(Pconv)的结构。

               image.png

       特征金字塔相邻三层(P3,P4,P5)举例,在P3上利用stride为2的conv进行卷积,在P4上利用普通conv卷积,P5上普通conv卷积然后upsample,得到相同大小的特征图然后相加,不难推导,其等效于在特征图上每一点在HW维度卷积后再在尺度空间(P3,P4,P5)进行一次卷积,因此其相当于一个3-D的卷积核。

    image.png

 图 7 尺度空间卷积(Pconv) 示意图

 

既然有了尺度空间的卷积,我们自然的想到了空间尺度共享所有参数的批归一化(iBN),我们每一次Pconv后,我们将所有层连接在一起,共同更新统计量,这一设计较NAS-FPN【2】中使用的各尺度用各自的BN参数具有更优的性能且更易工程化(如推理时去除BN)。

image.png

图 8   iBN 示意图

       另一方面,高斯金子塔中特征相邻层降采样时有其相匹配的高斯模糊核,太大的模糊核会去除过多有用信息,太小的模糊核引入高频噪声。但是特征金字塔中相邻层之间间隔不同的卷积核与大量的非线性单元,这使得特征图上不同位置相邻层之间没有一个固定的理论高斯模糊核。因此我们由此基于以上提出的Pconv又将其改进为尺度等化的尺度空间卷积(SEPC)模块:当尺度空间卷积核在尺度空间上滑动时,最底层上用普通的3X3卷积,当相同的卷积核滑向高层特征图时用可变形卷积(Dconv)【3】实现像在高斯金字塔中一样的高层特征点与最底层的对齐。同时这个设计中可变形卷积只在高层特征图上采用,其引入的额外的Dconv的计算量开销以及推理速度损失其实是很小的。

image.png

图 9 SEPC 示意图

 

实验结果

       我们做了详尽的消融实验,以确保我们每个模块的有效性.我们选取了FSAF【4】,RetinaNet,FreeAnchor【5】三个有代表性的model验证我们的有效性。

image.png

       可以看到,我们提出的模块在三个model上均有稳定的提升,并且性能提升相比flops与forward速度的增加极具性价比,值得注意的是,虽然我们使用了Dconv,但是性能的提升不仅仅是Dconv带来的,相比head结构全部更换为Dconv,我们的SEPC在速度与性能上都体现出了绝对的优势。

同时我们选取了FreeAnchor为基础与当前SOTA检测器进行了比较。

image.png

       我们SEPC在mAP45左右的baseline上依然有接近3mAP的提升,我们在甚至在单尺度测试的条件下得到了一个mAP为50.1的单阶段检测器。

 

 

传送门

代码目前也已经开源,欢迎各位同学使用和交流。

 

论文地址: https://arxiv.org/pdf/2005.03101.pdf

代码地址: https://github.com/jshilong/SEPC

References

[1] Tsung-Yi Lin, Piotr Dollar, Ross Girshick, Kaiming He, Bharath Hariharan, and Serge Belongie. Feature pyramid networks for object detection. In CVPR, 2017.

[2]Golnaz Ghiasi, Tsung-Yi Lin, and Quoc V Le. Nas-fpn: Learning scalable feature pyramid architecture for object detection. In CVPR, 2019.

[3] Jifeng Dai, Haozhi Qi, Yuwen Xiong, Yi Li, Guodong Zhang, Han Hu, and Yichen Wei. Deformable convolutional networks. In ICCV, 2017.

[4] Chenchen Zhu, Yihui He, and Marios Savvides. Feature selective anchor-free module for single-shot object detection. In CVPR, 2019.

[5] Xiaosong Zhang, Fang Wan, Chang Liu, Rongrong Ji, and Qixiang Ye. FreeAnchor: Learning to match anchors for visual object detection. In NIPS, 2019.