简单讨论下dilated conv,中文可以叫做空洞卷积或者扩张卷积。首先介绍一下dilated conv诞生背景。
背景
在图像分割领域,图像输入到CNN中,传统CNN网络结构通过stride conv或者pooling来对图像降维同时增加感受野,再通过upsample layer升维到原始图像尺寸。在先减小再增大尺寸的过程中,损失了信息,为了在不借助stride or pooling的帮助下,提高感受野,作者提出了dilated conv。
dilated conv
如上图所示,(a)表示1-dilated conv,即普通3×3卷积,(b)表示2-dilated conv,即对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。(c)4-dilated conv,同b,对15×15的图像,只有9个红色的点和3x3的kernel发生卷积操作。dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。
dilated conv的潜在问题
1.The gridding effect
我们发现dilated conv的 kernel 并不连续,也就是说并不是所有的 pixel 都用来计算了,因此这里将信息看做 checker-board 的方式会损失信息的连续性。这对 pixel-level dense prediction 的任务来说是致命的。
2.Long-ranged information might be not relevant.
我们从 dilated convolution 的设计背景来看就能推测出这样的设计是用来获取 long-ranged information。然而光采用大 dilation rate 的信息或许只对一些大物体分割有效果,而对小物体来说可能则有弊无利了。
dilated conv改进
1.通向标准化设计:Hybrid Dilated Convolution (HDC)
将一定数量的layer形成一个组,然后每个组使用连续增加的空洞率,HDC采用r=1,r=2,r=3三个空洞率组合,HDC方案可以从更广阔的像素范围获取信息,避免了grid问题。同时该方案也可以通过修改rate任意调整感受野。
2.多尺度分割:Atrous Spatial Pyramid Pooling (ASPP)
ASPP 在网络 decoder 上对于不同尺度上用不同大小的 dilation rate 来抓去多尺度信息,每个尺度则为一个独立的分支,在网络最后把他合并起来再接一个卷积层输出预测 label。这样的设计则有效避免了在 encoder 上冗余的信息的获取,直接关注与物体之间之内的相关性。
感受野计算
1.空洞卷积感受野的计算
感受野尺寸=2(rate-1)*(k-1)+k #k是kernel size
举个例子,3×3的kernel,rate=1是普通卷积–>感受野=3;rate=2,感受野=7;rate=4,感受野=15。
2.带有空洞卷积的feature size的计算
Output=(W-F+2P)/S+1 #w是上层feature的size,F是kernel size,S是stride