美文网首页
VGGNet学习

VGGNet学习

作者: Latet | 来源:发表于2019-04-01 13:29 被阅读0次

    前言

    本文旨在学习和记录,如需转载,请附出处https://www.jianshu.com/p/152ca2502557

    1、VGGNet介绍

    VGGNet是计算机视觉任务中深层网络的代表作之一。是Karen Simonyan和Andrew Zisserman在2014年ImageNet竞赛中提出来的,而且取得了ImageNet竞赛定位组的冠军和分类组的亚军。作者表示自己主要的贡献是提出非常小的卷积核大小(3,3)的深层卷积神经网络,在16层--19层的网络架构上能够获得良好的性能。
    VGGNet原文:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

    2、网络框架


    如上图,是VGGNet的框架图。其中A、A-LRN、B、C、D、E代表不同的网络层数,其中A和A-LRN网络层数相似,不过是在第一层卷积层的后面添加了LRN操作(Local Response Normalization),LRN操作是AlexNet对中间层特征进行归一化的操作,可以查看AlexNet学习
    1. 其中conv3-64代表卷积核大小为(3,3,64),输出特征通道数为64,kernel_size为(3,3),stride = 1, padding = 0,其它conv3-256,conv3-512等依次类推;
    2. maxpool 最大池化和AlexNet不一样,AlexNet采用的重叠的maxpool,VGGNet中的池化为不重叠的最大池化,kernel_size和stride都是2;
    3. 通过conv3-n和conv1-n的卷积之后,其特征图大小不变,改变的仅仅是输出通道数,而整个网络中改变图像大小的maxpool操作,每次图像大小除以2,所以经过卷积和5次pool之后,输出图像的大小为原图的1/32。原始训练是图像为(224,224,3),最后一次maxpool,特征图的大小为(7,7,512)。
      作者解释采用更小的卷积kernel_size的原因:
    4. 作者提到对图像进行连续两个(3,3)卷积(不带池化操作)就相当于进行了(5,5)卷积;3个则等价于(7,7)卷积。相对于一次(7,7)卷积下,3个(3,3)卷积会有3个ReLU激活操作,会使特征更具有判别性;
      2 . 连续的3个(3,3)卷积相对于(7,7)卷积减小的网络训练参数。3个C层(3,3)卷积操作的参数为3*(3*3*C*C)=27C^{2},1个C层(7,7)卷积操作的参数为1*(7*7*C*C)=49C^{2},相对而言,多个(3,3)卷积顺序叠加在一起,其参数相对于较大的卷积会小。当然了,主要是精度能够提高了。
      (1,1)卷积
      VGGNet在最后三个阶段中都用到了(1,1)卷积,原因是在维度上继承了全连接,在不影响特征图大小时进行非线性操作。作者认为这样可以增加决策函数的非线性能里,主要有ReLU决定。另外,(1,1)卷积还有一个重要作用是降维,减小通道数。

    3、训练技巧

    随机初始化
    作者提到网络初始化参数是很重要的,很差的初始化参数会导致训练中梯度不稳定的现象,首先,训练A(即最浅的架构时,我们随机初始化网络参数);在训练更深的网络结构时,以A训练好的参数来初始化前4个卷积层的参数和最后3个全连接层的参数,在这些使用预训练参数的层学习率不减小。对于其他层则采取随机初始化的策略,均值为0,方差为0.01的正太分布,偏差为0。
    作者在提交之后发现采用Glorot和Bengio的论文初始化方法是可以的,就不用采用预训练参数初始化方法了http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
    数据增强
    数据增强的方式采用的跟AlexNet的一样的数据增强方式。固定训练数据为(224,224,3),随机裁剪,每次迭代都裁剪一次。
    全连接转卷积
    根据网络框架可以推测的是最后一层maxpool出来的图像大小是(7,7,512),在训练时我们是将特征图直接拉成一维进行全连接层相连,而作者提出,在测试的时候,我们可以把全连接层转卷积,将3层全连接转换为(7,7),(1,1),(1,1)卷积。通过这样操作,可以对全图进行预测,即不需要再对>224图像大小的图像进行裁剪进行测试。如果测试图像大小为(3,224,224),则最后三层卷积出的大小分别为(batch_size,1,1,4096),(batch_size,1,1,4096),(batch_size,1,1,1000)
    如果测试图像的长宽大于224,最后出来的特征图大小就不会是(1,1),最后出来的大小为(batch_size,a,a,1000)a>1,然后对特征图进行平均出来,最终输出到softmax之前的大小变为(batch_size,1,1,1000),完成分类。
    其他
    Mini_batch SGD带动量,多项逻辑回归损失
    Batch_size = 245,momentum = 0.9
    L2正则化weight pentaly = 5*e-4
    Dropout在前两个全连接层采用,参数为0.5
    Learning_rate = 0.01,验证集上精度不再变化学习率则除以10,学习率总共变换3次,学习停止在37万迭代时,epochs=74
    参数更多,网络层数更大,相对于Alexnet,却更快收敛

    1. 预先初始化某些层pretrained
    2. 更小的filter_size和更大的深度

    4、结论

    1. 作者实验表明LRN层无性能提高;
    2. 深度增加,采用小的卷积核,分类性能提高;
    3. (1,1)卷积效果促进分类性能;
    4. 多个小的卷积比带单个大的卷积性能好。

    参考

    1. 深度学习VGG模型核心拆解
    2. AlexNet学习
    3. ImageNet Classification with Deep Convolutional Neural Networks
    4. Very Deep Convolutional Networks For LARGE-SCALE IMAGE RECOGNITION

    相关文章

      网友评论

          本文标题:VGGNet学习

          本文链接:https://www.haomeiwen.com/subject/gnzmbqtx.html