对于DCNN的上下文,我们可以在层链中(a chain of layers)使用多孔卷积,这样可以在任意高的分辨率上计算最后的DCNN响应。比如,为了对VGG-16或ResNet-101网络中计算出来的特征响应的空间密度翻倍,我们发现最后的池化或卷积层会减小分辨率(分别是’pool5’或’conv5_1’),设置步长为1以避免信号抽取,并用速率为r=2的多孔卷积层取代所有后续的卷积层。这个方法应用于整个网络,就可以在原始图像分辨率上计算特征响应,但这样成本比较高。我们可以采用混合方法,达到一个比较好的效率/精度平衡,用速率r=4的多孔卷积增加计算的特征地图的密度(4倍),用另外一个因子为8的快速双线性插值在原始图像分辨率上恢复特征地图。双线性插值在这样的配置中足够了,因为分类得分值地图(对应对数概率)非常平滑,如图5所示。与论文14的去卷积方法不同,本方法将图像分类网络转换成稠密特征提取器,不需要学习更多的参数,得到更快的DCNN训练。
图5 Score map (input before softmax function) and belief map (output of softmax function) for Aeroplane. We show the score (1st row) and belief (2nd row) maps after each mean field iteration. The output of last DCNN layer is used as input to the mean field inference.
Atrous卷积还允许我们在任何DCNN层任意放大滤波器的视野域(field-of-view)。现有技术的DCNN通常采用空间上小的卷积核(通常为3×3),以便保持计算和包含的参数数量。速率为r的Atrous卷积在连续的滤波器值之间引入r-1个零,有效地将一个k×k滤波器的核大小扩大到ke = k +(k-1)(r-1)而不增加参数的数量或者计算。因此,它提供了一种有效的机制来控制视野域,and finds the best trade-off between accurate localization(small field-of-view) and context assimilation(large field-of-view)。
我们的DeepLab-LargeFOV模型变体[38]采用了在VGG-16\'fc6\'层中速率r = 12的atrous卷积,具有显着的性能提升.
在实现上,有两种方法可以有效地执行多孔卷积。第一种是插入空洞(零元素)或者对输入特征地图同等稀疏地采样,来对滤波器进行上采样。第二种方法,用一个与多孔卷积比例r相同的因子对输入特征地图进行子采样,对每个r×r可能的偏移,消除隔行扫描生成一个r2降低的分辨率地图。接下来对这些中间地图使用标准卷积,隔行扫描生成原始图像分辨率。将多孔卷积转换成常规卷积,这样我们就可以使用现有优化好的卷积例程。我们已经用TensorFlow框架实现了第二种方法。()
Multiscale Image Representations using Atrous Spatial Pyramid Pooling
我们实验了两种方法处理语义分割上的尺度变换。第一种方法是标准多尺度处理。我们用共享相同参数的并行DCNN分支,从多个(我们的实验里有3个)重新缩放尺度的原始图像中提取DCNN的的得分图。为了生成最后的结果,我们将并行的DCNN分支的特征映射进行双线性插值(到原图分辨率),并且融合它们,在不同尺度上获得每个位置的最大响应。在训练和测试时都这样做。多尺度处理明显增强了性能,但是需要对输入图像的多个尺度上在所有深度卷积神经网络层上计算特征响应。
第二种方法(受到何凯明大神SPP论文)中R-CNN空间金字塔池化方法成功的启发,任意一个尺度上的区域都可以用在这个单一尺度上重采样卷积特征进行精确有效地分类。我们实现了他们方法的一种变化形式,使用多个不同采样率上的多个并行多孔卷积层。每个采样率上提取的特征再用单独的分支处理,融合生成最后的结果。前面提到的“多孔空间金字塔池化”(DeepLab-ASPP)方法泛化了DeepLab-LargeFOV,如下图所示。