一、实验目的
掌握卷积神经网络的设计原理,掌握卷积神经网络的使用方法,能够使用 Python 语言实现 VGG19网络模型对给定的输入图像进行分类。具体包括:
1) 加深对深度卷积神经网络中卷积层、最大池化层等基本单元的理解。
2) 利用 Python 语言实现 VGG19 的前向传播计算,加深对 VGG19 网络结构的理解。
3) 将三层MLP神经网络扩展为 VGG19 网络,加深对神经网络工程实现中基本模块演变的理解,为后续建立更复杂的综合实验(如风格迁移)奠定基础。
二、实验任务
1)本实验利用 VGG19 网络进行图像分类。首先建立VGG19 的网络结构,然后利用 VGG19
的官方模型参数对给定图像进行分类。 VGG19 网络的模型参数是在 ImageNet数据集上
训练获得,其输出结果对应 ImageNet 数据集中的 1000 个类别概率。
2)在工程实现中,依然按照模块划分方法。由于本实验只涉及 VGG19 网络的推断过程,因此本实验仅包括数据加载模块、基本单元模块、网络结构模块、网络推断模块,不包括网络训练模块。
三、实验内容
1)给出VGG19的网络结构,描述其工作原理;
2)对实验程序中的设计的类进行解释说明;
3)程序代码、包括注释(注释作为评分依据之一);
4)单元测试过程(输入和输出的验证);
5)功能测试结果,
(1)VGG19网络介绍
①网络结构图
a.卷积层: VGG19包含多个卷积层,每个卷积层由3x3的卷积核和适当的填充(padding)组成。这些卷积层分为5个阶段(Stage),每个阶段由多个卷积层组成,卷积层之间是ReLU激活层。
b.池化层: 在每个阶段的末尾,除了最后一个阶段,都有一个2x2的最大池化层(MaxPoolingLayer),步长为2。这有助于减少特征图的空间尺寸,从而减少参数数量和计算量。
c.展平层: 在所有卷积和池化层之后,有一个展平层(FlattenLayer),它将多维的特征图展平为一维向量,以便输入到全连接层。
d.全连接层: VGG19包含3个全连接层(FullyConnectedLayer),第一个和第二个全连接层后面跟着ReLU激活层。
e.Softmax层: 最后一个全连接层的输出被送入Softmax层(SoftmaxLossLayer),用于计算每个类别的概率。

②工作原理
- 输入: 网络接受一个224x224像素的彩色图像作为输入。
- 卷积和ReLU: 输入图像首先通过第一个卷积层,然后通过ReLU激活层进行非线性转换。这个过程在每个阶段重复,逐渐提取更高级的特征。
- 池化: 每个阶段的末尾进行最大池化,减少特征图的尺寸,同时增加特征的不变性。
- 展平: 经过所有卷积和池化层后,得到的二维特征图被展平为一维向量。
- 全连接: 展平后的一维向量作为全连接层的输入,全连接层对特征进行进一步的整合和分类。
- 分类: 最后,Softmax层输出每个类别的概率,概率最高的类别被认为是图像的预测类别。
(2)对实验程序中的设计的类进行解释说明

1. FullyConnectedLayer (全连接层)
- 作用: 进行全连接操作,即矩阵乘法,通常用于卷积神经网络的末端,将卷积层提取的二维特征图展平后转换为一维特征向量。
- 方法:
- init_param: 初始化权重和偏置。
- forward: 执行前向传播。
- backward: 执行反向传播,计算梯度。
- get_gradient: 获取权重和偏置的梯度。
- update_param: 使用梯度更新权重和偏置。
- load_param 和 save_param: 加载和保存权重和偏置的值。
2. ReLULayer (ReLU激活层)
- 作用: 应用ReLU激活函数,引入非线性,帮助网络学习复杂的特征。
- 方法:
- forward: 执行前向传播,对输入的所有元素进行ReLU操作。
VGG19图像分类实战

最低0.47元/天 解锁文章
1358

被折叠的 条评论
为什么被折叠?



