目标检测:从pRF到RFBNet

一、Motivation

二阶段目标检测算法的速度受制于region proposal过程, 一阶段算法如YOLO, SSD在获取较高inference速度的同时可能牺牲了10%-40%的准确率. 后面的一些变体如DSSD或者其他一阶模型如RetinaNet对准确率的提高则依赖于非常深的骨干网络如ResNet-101, 这种情况同样限制了inference的效率.

核心矛盾: 绝大多数检测器模型都寄希望于骨干网络可以提供一个具有高判别性和鲁棒性的特征表示. 通常来说人们会通过使用深层CNN来获取更出色的特征表示, 这种思路从根本上限制了inference速度.

本文: 如何构建一个快速而准确的检测器? 一种可选的方案是在轻量级的骨干网络上融入某种人工定制的机制去提高特征的判别性, 而不是固执地一味加深网络深度.

二、群体感受野

下面先放几张自己制作的图,等有时间了再补上文字说明。





本文的理论分析涉及NeuroImg中的一个著名的模型,即群体感受野模型pRF。2008年pRF模型的提出,促使更多关于大脑皮层神经元群在视觉域上群体感受野的性质得到了探索,其中最重要的是pRF的尺寸。

对于神经学科的探索,这里根据几篇相关的论文,先陈列出几个重要结论:

  1. 接近pRF中心的像素,对于皮层上神经元群(体素)
    的激活的贡献更大
  2. 人类视网膜上感受野的尺寸随visual field map偏心度的提高而增大
  3. 不同的visual field map(如大脑皮层上不同区域的VFM)其pRF尺寸不同

根据上述结论,作者提出了以下几个针对性的idea:

  1. 对于DL来说,感受野中心区域的像素对输出特征更重要,应该得到Highlighted。远离感受野中心的像素可能没那么重要,可以适当降低其“采样权重”,以提高检测模型对微小shift的鲁棒性。
  2. 在使用卷积层提取特征时,可以将采样点扩散开(即使用dilated conv)来快速增大感受野。
  3. 可以提取不同感受野尺寸的特征,concat到一起,让输出 特征对应更多种感受野(就像Inception做的那样)

已有一些工作从这个角度展开。传统的cnn往往对所有输入情况使用固定尺寸的卷积核, 获得固定尺寸的感受野。比如Inception系列、可变性卷积、ASPP等。本文后面将结合插图对这三种方法进行对比。



补充: dilated convolution

Fig. 1 扩张卷积的出现是为了代替语义分割中的pooling

最初的语义分割(如FCN)中通常使用pooling下采样同时增大感受野, 用deconv实现上采样扩大图像尺寸。这一过程中由于pooling存在, 部分信息会丢失。 这种损失对于pixel-level dense prediction难以接受。
扩张卷积最初的的作用是为了代替语义分割中的pooling, 实现在扩大感受野的同时不丢失信息。
Fig. 2. 扩展卷积示意

Fig. 3 堆叠扩张卷积可以指数增大感受野尺寸

图中的红点代表本次卷积滑动时的采样点;以红点为中心的透明方块代表该采样点当前的感受野尺寸。



三、Receptive Field Block

RFB模型内部结构比较简单, 可以看做两个组成部分: 多分支卷积层(同Inception)+后续的扩张卷积(池化)层。前者用于模拟多尺度感受野,后者用于模拟人眼视觉皮层上pRF尺寸随着偏心率增大而增大的关系(感觉这个说法有些强行往上靠了,实际上就是快速增大感受野)。如下图所示



这个图代表的理论还是很漂亮的。首先我们可以把hV4这个示意图中每一种半径的圆合在一起看,然后把合并的区域看做视觉皮层上一种visual field map对应在visual space上的pRF,偏心率高的特征对应的pRF就大。这样在hV4这个上的多个VFM(由很多相邻的voxel,即群神经元构成)对应的整体感受野就是多个不同尺寸的感受野叠加的效果。

回到论文中,作者在RFB模块里,通过不同size的卷积核加上扩张卷积,实现了每个block卷积核采样点更均匀地分布,体现在感受野上就是每个采样点对应的感受野叠加在一起,构成了多层级的感受野。

值得注意的是,RFB对卷积层的采样点进行了精心设计,其效果就是整个block对应的感受野中心区域的像素得到了emphasize(因为中心区域采样点密集);另外感受野边缘的像素由于kernel采样点相对系数,可以认为被有意地弱化。

RFB的效果通过下面的对比示意可以看得更清楚。


图示说明:每个子图的左上代表理论感受野(theoretical receptive field) ,右图代表有效感受野(effective receptive field),大概就是将第层特征中心点的梯度回传到理论感受野上的各个像素,可视化出其幅值,详见[1]。

注意: 首先强调下这个图中有两个比较confusing的地方,一个是图(a)的理论感受野上只画了中心采样点,如果全画出来的话每个格子上面都应该有一个红点;另一个是图(b)的三个3x3 conv也应该用红、绿、蓝三种颜色区分。

对比这几种block
①Inception通过多种不同尺寸卷积核获取多尺度的感受野并获取了成功。其问题主要有两点:

  • 由于传统卷积核的采样点密集分布,其感受野提升比较慢。相比扩张卷积,要获得相同大小的感受野需要非常大的kernel(注意看图(a)中的蓝色区域kernel size)
  • Inception模块下层通过same卷积输出的feature map中的每一个位置[m_i, :, x_i, y_i], 其对应于上层特征的感受野拥有相同的中心点。换句话说,Inception中不同branch的kernel在输入特征上面滑动时,每一次滑动,这些不同size的kernel的中心都是对准同一个特征像素,比如说s是1,虽然有的kernel很大,但是他可以把特征padding多一些,然后和小kernel以同心的方式滑动(该理解的正确性待进一步确认)。换句话说,其实就是Inception这些kernel每次滑动时,中心采样点是相同的。加上密集采样的方式,靠近感受野中心的像素采样可能过于重复。

②Deformable CNN虽然尝试根据物体的形状和尺寸自适应学习kernel offset进而调整感受野的空间分布, 但是并没有考虑感受野距离中心的远近差异. 也就是说感受野中所有像素对输出响应的贡献是均等的, 导致重要信息没有得到强调.

③ASPP的多个branch使用相同size的kernel,其采样点分布不太均匀,中间存在空洞。这种采样空洞进而造成有效感受野的分布也存在空洞。

③RFB中设置了均匀的采样点,可见特征对应的有效感受野和visual field map的分布非常像,对每个采样点都进行了充分利用,且感受野中心区域相比边缘区域明显得到emphasize。

四、用于SSD

RBFNet

未完待续

参考:
[1] Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
[2] MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS
[3] Visual Field Map Organization in Human Visual Cortex
[4] Population Receptive Field Estimates in Human Visual Cortex

你可能感兴趣的:(目标检测:从pRF到RFBNet)