一、理论知识
(1)介绍
空洞卷积广泛应用于语义分割与目标检测任务中。
- 语义分割: Deeplab系列,DUC (dense upsampling convolution)
- 目标检测:SSD, RFBNet
1. 介绍
空洞卷积的卷积核中,各权重值之间用零填充作为间隔。
引入超参——扩张率(dilation rate),表示上述间隔数量。正常卷积核,dilation rate=1。
理解: dilation rate = 相邻权重值的坐标差值。正常卷积核之间没有间隔,所以dilation rate=1。
2. 举例
kernal size = 3, dilation rate = 2, padding = 0, stride = 1
(2)作用
1. 扩大感受视野
扩大感受视野的原因
神经网络中,基于感受视野,感知上一层特征。感受视野越大,越易于感知全局特征。
在分割任务中,感受视野越大,越易于检测分割大目标。
扩大感受视野的常见方法
- 常见方法:
为了增加感受视野且降低计算量,我们常使用pooling layer和小卷积核。
使用小卷积核,在获得相等感受视野的前提下,能够降低计算量。
举例:7x7的卷积层,等效于3个3x3卷积层的叠加。最终感受视野均为7x7,而前者参数量为49×inchan×outchan,后者参数量为27×inchan×outchan
- pooling layer 弊端:
1.池化层是无法学习的。
2.空间分辨率降低,小物体信息无法重建。(假设经过四个kernel size = 2 的 pooling layer,则任何尺寸小于2^4=16 pixel的物体信息,理论上无法重建)
由于这样问题的存在,语义分割一直处在瓶颈期,无法明显提高精度。
使用空洞卷积,扩大感受视野
- 目的
在不使用pooling层(pooling层会导致信息损失)且计算量相当的情况下,提供更大的感受野。
理解: 当不使用pooling层时,提高感受视野就需要进行卷积操作。卷积核尺寸越大,感受视野越大,但权重参数也越多,即计算量更大。
使用空洞卷积,可以在保持计算量不变的情况下,扩大感受视野。
2. 捕获多尺度上下文信息
当设置不同dilation rate时,感受野就会不一样,即获取了多尺度信息。
(3)计算方式
1. 实际卷积核大小
K=k+(k-1)(r-1),k为kernel size,r为dilation rate
2. 感受野大小
举例:三层k = 3, r = 2, padding = 1的空洞卷积
第二层感受野 = 5 + (5 - 1) × 1 = 9
第三层感受野 = 9 + (5 - 1) × 1 = 14
(4)问题与解决方式
1. 空洞卷积存在的问题
- 局部信息丢失:
空洞卷积得到的结果中,邻近像素是通过卷积上一层相互独立的特征点得到的。因此,结果的邻近像素之间缺少相关性。 - 远距离获取的信息没有相关性:
由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果。
2. 其他问题
空洞卷积在实际中不好优化,速度会变慢。
3. 解决方案
参考:cnblogs.com/hellcat/p/9687624.html#_label2_1
参考:https://www.zhihu.com/question/54149221
参考:https://zhuanlan.zhihu.com/p/50369448
二、应用
语义分割需要恢复至原图的分辨率。为了防止丢失小物体信息,适当取消降采样操作。例如,在特征提取层的最后两个stage,取消pooling操作,采用空洞卷积弥补丢失的感受野。
理解:16 × 16的特征图,经过4层2 × 2的pooling层,得到1 × 1的特征图。即感受野为16 × 16,由于使用pooling操作,不可学习,导致该感受野内的信息丢失。
若改为空洞卷积,在学习信息的同时,还能保持较大感受野。