空洞卷积(dilated convolution)

空洞卷积(dilated/Atrous convolution)是在标准的卷积中引入空洞,以此来增加感受野reception field,相比原来的正常卷积,空洞卷积多了一个hyper-parameter称之为dilation rate指的是间隔数量(正常的convolution 是dilation rate=1),以3*3为例,标准卷积和空洞卷积示意如下:

               

                             普通卷积                                                                                                                        空洞卷积

 

空洞卷积:在3*3卷积核中间填充0,有两种实现方式,第一,卷积核填充0,第二,输入等间隔采样.

标准卷积与空洞卷积在实现上基本相同,标准卷积可以看做空洞卷积的特殊形式.空洞卷积广泛应用于语义分割与目标检测等任务中,语义分割中经典的deeplab系列与DUC对空洞卷积进行了深入的思考.目标检测中SSD与RFBNet,同样使用了空洞卷积.

空洞卷积的作用

1.扩大感受野:在deep net中为了增加感受野且降低计算量,总要进行降采样(pooling 或s2/conv),这样虽然可以增加感受野,但空间分辨率降低了.为了能不丢失分辨率,且仍然扩大感受野,可以使用空洞卷积.这在检测,分割任务中十分有用.一方面感受野大了可以检测分割大目标,另一方面分辨率高了可以精确定位目标.

2. 捕获多尺度上下文信息:空洞卷积有一个参数可以设置dilation rate,具体含义就是在卷积核中填充dilation rate 个0,因此,当设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息.多尺度信息在视觉任务中相当重要!!!

从这里可以看出,空洞卷积可以任意扩大感受野,且不需要引入额外参数,但如果把分辨率增加了,算法整体计算量肯定会增加.

ps:空洞卷积虽然有这么多优点,但在实际中不好优化,速度会大打折扣.

空洞卷积感受野如何计算

实际上和标准卷积是一致的.空洞卷积实际卷积核大小kernel_size, k为

k_new=k+(k-1)(r-1),k为原始卷积核大小,r为空洞卷积参数空洞率dilation rate

以上面示意图中r=2的3*3空动卷积为例计算感受野

k_new=k+(k-1)(r-1)=3+2*1=5

 

 

 

你可能感兴趣的:(空洞卷积(dilated convolution))