深度学习实验五:卷积神经网络应用

实验来自于飞桨平台:https://aistudio.baidu.com/projectdetail/4970140

一、实验目的

1.正常运行所有代码块
2.比较不同模型效果
3.使用封装好的常用模型(ResNet、VGG、MobileNet、LeNet)。
4.快速完成神经网络的训练和Fine-tune

二、实验环境

python 3.7、PaddlePaddle 2.3.2、GPU V100 32GB

三、实验内容

1.正常运行所有代码块、比较不同模型效果并使用封装好的常用模型

①LeNet

LeNet通过连续使用卷积和池化层的组合提取图像特征,其架构如下图所示:
在这里插入图片描述
以下对LeNet在手写数字识别MNIST验证数据集和眼疾识别数据集iChallenge-PM上的应用情况进行对比:
在这里插入图片描述
通过运行结果可以看出,LeNet在手写数字识别MNIST验证数据集上的准确率高达92%以上。
在这里插入图片描述

②AlexNet

通过运行结果可以看出,在眼疾筛查数据集iChallenge-PM上,LeNet的loss很难下降,模型没有收敛。这是因为MNIST数据集的图片尺寸比较小(28×28),但是眼疾筛查数据集图片尺寸比较大(原始图片尺寸约为2000×2000,经过缩放之后变成224×224),LeNet模型很难进行有效分类。
这说明在图片尺寸比较大时,LeNet在图像分类任务上存在局限性。
AlexNet与LeNet相比,具有更深的网络结构,包含5层卷积和3层全连接,同时使用了如下三种方法改进模型的训练过程:
• 数据增广:深度学习中常用的一种处理方式,通过对训练随机加一些变化,比如平移、缩放、裁剪、旋转、翻转或者增减亮度等,产生一系列跟原始图片相似但又不完全相同的样本,从而扩大训练数据集。通过这种方式,可以随机改变训练样本,避免模型过度依赖于某些属性,能从一定程度上抑制过拟合。
• 使用Dropout抑制过拟合。
• 使用ReLU激活函数减少梯度消失现象。
AlexNet的具体结构如下图所示:
在这里插入图片描述
在这里插入图片描述
通过运行结果可知,在眼疾筛查数据集iChallenge-PM上使用AlexNet,loss能有效下降,经过5个epoch的训练,在验证集上的准确率可以达到94%左右。

③VGG

AlexNet模型通过构造多层网络,取得了较好的效果,但是并没有给出深度神经网络设计的方向。VGG通过使用一系列大小为3x3的小尺寸卷积核和池化层构造深度卷积神经网络,并取得了较好的效果。VGG模型因为结构简单、应用性极强而广受研究者欢迎,尤其是它的网络结构设计方法,为构建深度神经网络提供了方向。
由于卷积核比较小,可以堆叠更多的卷积层,加深网络的深度,这对于图像分类任务来说是有利的。VGG模型的成功证明了增加网络的深度,可以更好的学习图像中的特征模式。
VGG模型网络结构示意图如下:
在这里插入图片描述
在这里插入图片描述
通过运行结果可以发现,在眼疾筛查数据集iChallenge-PM上使用VGG,loss能有效下降,经过5个epoch的训练,在验证集上的准确率可以达到94%左右。

④GoogLeNet

为选择合适的卷积核来提取特征,GoogLeNet提出了一种被称为Inception模块的方案。
在这里插入图片描述
Inception模块使用3个不同大小的卷积核对输入图片进行卷积操作,并附加最大池化,将这4个操作的输出沿着通道这一维度进行拼接,构成的输出特征图将会包含经过不同大小的卷积核提取出来的特征,从而达到捕捉不同尺度信息的效果。
在这里插入图片描述
在这里插入图片描述
通过运行结果可以发现,使用GoogLeNet在眼疾筛查数据集iChallenge-PM上,loss能有效下降,经过5个epoch的训练,在验证集上的准确率可以达到95%左右。

⑤ResNet

下图的结构是残差网络的基础,这种结构也叫做残差块(Residual block)。输入x通过跨层连接,能更快的向前传播数据,或者向后传播梯度。
在这里插入图片描述
残差网络ResNet每层都存在直连的旁路,可以更好的解决梯度弥散的问题。
下图表示出了ResNet-50的结构,一共包含49层卷积和1层全连接,所以被称为ResNet-50。
在这里插入图片描述
在代码实现中,每个残差块会对输入图片做三次卷积,然后跟输入图片进行短接。如果残差块中第三次卷积输出特征图的形状与输入不一致,则对输入图片做1x1卷积,将其输出形状调整成一致。
在这里插入图片描述
通过运行结果可以发现,使用ResNet在眼疾筛查数据集iChallenge-PM上,loss能有效下降,经过5个epoch的训练,在验证集上的准确率可以达到96%左右。

2.快速完成神经网络的训练和Fine-tune

高层API支持paddle.vision.models接口,实现了对常用模型的封装,包括ResNet、VGG、MobileNet、LeNet等。使用高层API调用这些网络,可以快速完成神经网络的训练和Fine-tune。

在这里插入图片描述

四、实验小结

学到了什么:
卷积神经网络的每一层激活值都可以看作是图像的抽象表示。(卷积神经网络中某层的每个激活值都可以看作是一个分类器,众多的分类结果组成了抽象表示。层级越高,特征抽象程度越高。)
卷积神经网络的工作步骤大致如下:
用一个卷积核滑动图片来提取某种特征(比如某个方向的边),然后激活函数用relu来压制梯度弥散。
对得到的结果用另一个卷积核继续提取+relu,然后池化(保留区域最大或者用区域平均来替换整个局部区域的值,保证平移不变性和一定程度上对过拟合的压制)之后“深度”的话,就会需要对池化后的结果继续用不同的卷积核进行“卷积+relu”再池化的工作。
最后得到的实质是一个图片的深度特征,然后实际分类需要另外加一层,一般是softmax。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moonee_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值