经典网络VGGNet介绍

经典网络VGGNet(其中VGG为Visual Geometry Group)由Karen Simonyan等于2014年提出,论文名为《Very Deep Convolutional Networks for Large-Scale Image Recognition》,论文见:https://arxiv.org/pdf/1409.1556.pdf,网络结构如下图所示,其中D和E即为VGG-16和VGG-19:

下图是来自https://neurohive.io/en/popular-networks/vgg16/ 中VGG-16架构的截图:

VGG-16(13个卷积层+3个全连接层)与VGG-19(16个卷积层+3个全连接层)的区别:每个卷积层后跟ReLU

(1).VGG-16:2个卷积层+Max Pooling+2个卷积层+Max Pooling+3个卷积层+Max Pooling+3个卷积层+Max Pooling+3个卷积层+Max Pooling+3个全连接层。

(2).VGG-19:2个卷积层+Max Pooling+2个卷积层+Max Pooling+4个卷积层+Max Pooling+4个卷积层+Max Pooling+4个卷积层+Max Pooling+3个全连接层。

假如输入图像大小为n*n,过滤器(filter)为f*f,padding为p,步长(stride)为s,则输出大小为:如果商不是整数,向下取整,即floor函数。参考:https://blog.csdn.net/fengbingchun/article/details/80262495

VGGNet网络证明了增加网络深度有利于分类精度,使错误率下降。VGGNet模型应用到其它图像数据集上泛化性也很好。

VGGNet网络:

(1).结构简洁:卷积层+ReLU、最大池化层、全连接层、Softmax输出层。

(2).使用连续几个较小卷积核(3*3)替换AlexNet中的较大卷积核且采用same padding(即p=(f-1)/2),既减少参数,又进行了更多的非线性映射,可以增加网络的拟合能力。分为5段卷积,每段包括2至4卷积层。

(3).最大池化,小池化核(2*2),stride为2。

(4).通道数即feature maps数逐渐翻倍增加,使得更多的信息可以被提取出来。

(5).训练时将同一张图像缩放到不同的大小,在随机裁剪到224*224大小以及随机水平翻转,增加训练数据量。

(6).在测试阶段,将3个全连接层替换为3个卷积层,这样输入层可以接收任意宽或高的图像。

VGG-16架构:13个卷积层+3个全连接层,predict时对各层进行说明,参照:https://github.com/fengbingchun/Caffe_Test/blob/master/test_data/Net/VGG-16/vgg-16_deploy.prototxt

(1).输入层(Input):图像大小为224*224*3。

(2).卷积层1+ReLU:使用64个3*3的filter,stride为1,padding为1,输出为224*224*64,64个feature maps,训练参数(3*3*3*64)+64=1792。

(3).卷积层2+ReLU:使用64个3*3的filter,stride为1,padding为1,输出为224*224*64,64个feature maps,训练参数(3*3*64*64)+64=36928。

(4).最大池化层:filter为2*2,stride为2,padding为0,输出为112*112*64,64个feature maps。

(5).卷积层3+ReLU:使用128个3*3的filter,stride为1,padding为1,输出为112*112*128,128个feature maps,训练参数(3*3*64*128)+128=73856。

(6).卷积层4+ReLU:使用128个3*3的filter,stride为1,padding为1,输出为112*112*128,128个feature maps,训练参数(3*3*128*128)+128=147584。

(7). 最大池化层:filter为2*2,stride为2,padding为0,输出为56*56*128,128个feature maps。

(8).卷积层5+ReLU:使用256个3*3的filter,stride为1,padding为1,输出为56*56*256,256个feature maps,训练参数(3*3*128*256)+256=295168。

(9).卷积层6+ReLU:使用256个3*3的filter,stride为1,padding为1,输出为56*56*256,256个feature maps,训练参数(3*3*256*256)+256=590080。

(10).卷积层7+ReLU:使用256个3*3的filter,stride为1,padding为1,输出为56*56*256,256个feature maps,训练参数(3*3*256*256)+256=590080。

(11). 最大池化层:filter为2*2,stride为2,padding为0,输出为28*28*256,256个feature maps。

(12).卷积层8+ReLU:使用512个3*3的filter,stride为1,padding为1,输出为28*28*512,512个feature maps,训练参数(3*3*256*512)+512=1180160。

(13).卷积层9+ReLU:使用512个3*3的filter,stride为1,padding为1,输出为28*28*512,512个feature maps,训练参数(3*3*512*512)+512=2359808。

(14).卷积层10+ReLU:使用512个3*3的filter,stride为1,padding为1,输出为28*28*512,512个feature maps,训练参数(3*3*512*512)+512=2359808。

(15). 最大池化层:filter为2*2,stride为2,padding为0,输出为14*14*512,512个feature maps。

(16).卷积层11+ReLU:使用512个3*3的filter,stride为1,padding为1,输出为14*14*512,512个feature maps,训练参数(3*3*512*512)+512=2359808。

(17).卷积层12+ReLU:使用512个3*3的filter,stride为1,padding为1,输出为14*14*512,512个feature maps,训练参数(3*3*512*512)+512=2359808。

(18).卷积层13+ReLU:使用512个3*3的filter,stride为1,padding为1,输出为14*14*512,512个feature maps,训练参数(3*3*512*512)+512=2359808。

(19). 最大池化层:filter为2*2,stride为2,padding为0,输出为7*7*512,512个feature maps。

(20).全连接层1+ReLU+Dropout:有4096个神经元或4096个feature maps,训练参数(7*7*512)*4096=102760488。

(21). 全连接层2+ReLU+Dropout:有4096个神经元或4096个feature maps,训练参数4096*4096=16777216。

(22). 全连接层3:有1000个神经元或1000个feature maps,训练参数4096*1000=4096000。

(23).输出层(Softmax):输出识别结果,看它究竟是1000个可能类别中的哪一个。

train和predict的可视化结果如下图所示:

GitHubhttps://github.com/fengbingchun/NN_Test

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值