一、论文地址

Very Deep Convolutional Networks for Large-Scale Image Recognition

二、文章总结

  1. 对AlexNet的改进:
    • ZFNet:smaller receptive window size,smaller stride of the first convolutional layer;
    • Sermanet:密集(densely)、多尺度(multiple scales);
    • VGG:通过使用更小的卷积核(3*3),增加网络深度。
  2. 文章表示LRN并没有提高准确率,反而增加了计算成本和内存消耗。
  3. 预处理为什么要减去RGB均值:
    • 可以移除图像的平均亮度值,更多关注其内容 
  4. 为什么2个3*3卷积核与1个5*5卷积核等价
    • 这里的等价时 2个3*3卷积核的感受野与1个5*5卷积核相同
    • 比如input size:28*28
      • 28*28 ——5*5—— (28-5)/1+1=24
      • 28*28 ——3*3—— (28-3)/1+1=26 ——3*3—— (26-3)/1+1=24 
      • VGG-LMLPHP 
  5. 权重初始化
    • 先训练VGG-11网络,因为网络较浅,能够快速得到反馈,在此网络中对权重进行随机初始化。然后,在训练更深的网络时,我们用训练好后VGG-11对应网络层中的权重初始化更深的网络的前四层卷积层和最后三层全连接层,剩余中间层随机初始化。 

三、Alexnet和VGG训练和测试的比较 

  1. AlexNet
    • 训练:ImageNet中原图尺寸为256*256*3,而AlexNet中输入为224*224*3,所以在原图的基础上进行裁剪出尺寸为224*224*3的图片,这样横向移动了256-244次,竖向也移动了256-224次,再加上镜像翻转,相当于把数据集扩大了(256-224)*(256-224)*2=2048倍。
    • 测试:选择一张图片的四个角的224*224加上中间的224*224(加上水平翻转)共10张照片的平均值做结果。
  2. VGG
    • 训练:预训练时将图片统一扩大到384*384*3,然后裁剪成224*224*3进行预训练。正式训练时以预训练结果作为初始值,把图片在(256—512)之间随机扩大,截取后训练。
    • 测试:首先将图片各向同性地放缩到尺寸Q*N(Q<N),
      • dense evalution:然后把网络变为全卷积网络,这样就可以把Q*N直接输入而不用裁剪,输出一个w*h*n(其中w*h是输出图片尺寸,与输入图像有关,n为类别数)的class score map,将class score map在空间上平均(没有理解此操作),同样将Q*N水平翻转也会得到一个class score map,然后将两次结果的soft-max类概率作平均得到最终结果。
      • multi-crop evalution:与AlexNet相同,将Q*N图像裁剪成多个S*N图像。

四、为什么CNN中输入图像尺寸固定而FCN中输入图像尺寸任意

五、代码实现 

VGG in TensorFlow

09-26 02:03