对卷积层dilation膨胀的作用的理解,caffe-ssd dilation Hole算法解析

先转一篇大佬的博客论文阅读笔记:图像分割方法deeplab以及Hole算法解析


下面是caffe-ssd的vgg16输出后的变化,减少了一个pooling,stride=1,然后下一层采用了 dilation方法,作用按上面博客说是

既想利用已经训练好的模型进行fine-tuning,又想改变网络结构得到更加dense的score map.

即想让输出的feature map更加的稠密,于是用了hole算法,

对卷积层dilation膨胀的作用的理解,caffe-ssd dilation Hole算法解析

下面一个图能说明作用

对卷积层dilation膨胀的作用的理解,caffe-ssd dilation Hole算法解析

上图的颜色其实有问题,应该这么看,图a的输出0123对于图b输出的0246,然后再下一层(c)采用hole算法,c的第三个输出来自0,2,4这对应a中输出的123,所以c层有a的下一层的所有内容,同时又增加到7个输出(相比与原始a的下一层的2个输出),所以输出变得dense了

[python] view plain copy
  1. layer {  
  2.   name: "pool5"   //和vgg16的差别,修改了输出  
  3.   type: "Pooling"  
  4.   bottom: "conv5_3"  
  5.   top: "pool5"  
  6.   pooling_param {    //注意这个pooling层,步长为1,pad为1那么pool层保持原fmap不变,所以300*300的图像到这里是19*19300/16)  
  7.     pool: MAX  
  8.     kernel_size: 3  
  9.     stride: 1  
  10.     pad: 1  
  11.   }  
  12. }  
  13. layer {  
  14.   name: "fc6"   //全连接层  
  15.   type: "Convolution"  
  16.   bottom: "pool5"  
  17.   top: "fc6"  
  18.   param {  
  19.     lr_mult: 1.0  
  20.     decay_mult: 1.0  
  21.   }  
  22.   param {  
  23.     lr_mult: 2.0  
  24.     decay_mult: 0.0  
  25.   }  
  26.   convolution_param {  
  27.     num_output: 1024  
  28.     pad: 6  
  29.     kernel_size: 3   //6×(3-1)+1=13,所以pad=6  
  30.     weight_filler {  
  31.       type: "xavier"  
  32.     }  
  33.     bias_filler {  
  34.       type: "constant"  
  35.       value: 0.0  
  36.     }  
  37.     dilation: 6   //膨胀系数 http://blog.****.net/jiongnima/article/details/69487519 这篇博客讲的很清楚,理解为放大,没有的地方变成0  
  38.   }