当前位置:   article > 正文

【深度学习】卷积神经网络CNN-2 VGG16_cnn与vgg的关系

cnn与vgg的关系

2 VGG16

2.1概述

VGG是由卷积层和池化层构成的一种基本CNN。将有权重的卷积层或全连接层叠加至16层,称为VGG16;同理,19层的称为VGG19。在2014年的比赛中获得了第二名的成绩,虽然性能上不及第一名GoogleNet,因其结构简单,应用性强,VGG广受研究人员喜爱。
VGG选择了3*3的kernels,stride为1,不存在信息丢失。训练时,用多分类交叉损失函数优化,使用mini-batch动量梯度下降法,引入dropout和L2权重正则化。经过74个epochs,实现快速收敛。
在这里插入图片描述

2.2实验

VGG16在Keras也已封装,权重从ImageNet训练而来,可以通过keras.applications导入。
将VGG16模型实例化。传入模型初始化的权重检查点weight,include_top指定是否包含FC,input_shape是输入网络中的图像张量的形状,可以自己设定或不选。
在这里插入图片描述
调用summary查看网格架构。下面这张图即为运行结果,引自《Python深度学习》电子书官网,非常清晰地描述了VGG的大体架构。
在这里插入图片描述
最后的特征图形状为(4,4,512),再后续添加个FC分类器。用到了两个Dense层。
在这里插入图片描述
同样地,我们可以绘制训练期间的loss和acc曲线,打印观察模型效果。可以得知,验证精度再90%以上,但模型几乎从一开始过拟合,这是因为没有设计数据增强(data augement)模块。数据增强方法计算速度慢,代价高,只有在计算机的GPU上尝试运行,但在解决过拟合问题上非常强大。这一点后续可以继续优化。
在这里插入图片描述
在这里插入图片描述
不带数据增强的特征提取↑
在这里插入图片描述
在这里插入图片描述
带数据增强的特征提取↑

2.3模型微调

除了数据增强,另有一种广泛使用的优化方法,模型微调(fine-tuning)。微调是指VGG特征提取前几个block冻结,顶部的几层解冻,将解冻部分和新增加部分(如FC)联合训练。好的策略是微调卷积基的最后两三层。
之所以解冻的是顶部层,可以这么理解:我们需要微调模型中抽象的表示,卷积基中更靠底部的层编码的是更加通用的可复用特征,而更靠顶部的层编码的是更专业化的特征。微调这些更专业化的特征更加有用,因为它们需要在你的新问题上改变用途。微调更靠底部的层,得到的回报会更少。
本文讨论并未验证微调模型的实验效果。查阅资料得知,模型微调后的测试精度达到了97%,这在Kaggle竞赛中也是相当不错的成绩。而且,可以用极小部分训练数据(约10%)就得到了这一训练成果,不得不说这是CNN相比Dense的一大优势。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/496840
推荐阅读
相关标签
  

闽ICP备14008679号