Q1:Dilated conv的作用?
A1:在同层计算不增加参数量的同时扩大感受野,感受野的理解见:https://blog.csdn.net/weixin_36835368/article/details/105659474
Q2:如何做到不增加参数的同时增加感受野?
A2:step0:先了解Dilated conv如何不增加参数数量
绿色:与卷积核相乘的点。
通过下图可发现,都是9个点,所以计算所需的参数量没变。
黄色:该部分用0进行mask。
Tips: 理解为卷积核做0填充理解的话,相当于卷积核尺寸从3*3变成了5*5(rate=2).
new_K_size = K_size + (rate -1)*2
你可以用这种思路去理解感受野,但是计算的过程中应该是:Input => 带0的mak => output
step1: 感受野为什么增大了?
感受野:输出feature map中一个点映射到原始图像的区域。
通过(a)(b) (c) 的卷积操作得到的都是一个点,但这个点映射到原图像的区域却不一样。
假设(a),(b), (c)输入的层都是经过普通K=(3,3),S=1,P=0的卷积。
则:(a)RF0 =1
=> RF1= (1-1)*1+3=3
=> RF2 = (3-1)*1+3=5
=> RF3 = (5-1)*1+3=7
Tips:,这里RF小角标注意一下,这里上层用了小数字。
(b)RF0 =1
=> RF1 = (1-1)*1+(3+(2-1)*2)=5
=> RF2=(5-1)*1+3=7
Tips:RF1中的K= new_K_size= K_size + (rate -1)*2, RF2中的K= K_size=3
(c)RF0=1
=> RF1=(1-1)*1+(3+(3-1)*2)=7
通过上述计算,可以发现,使用rate=3的Dilated conv向前推一层的感受野就达到了(7,7),而使用rate=2的带孔卷积需要向前推两层才能达到,不带孔的普通卷积若想达到(7,7)需要进行三层。