购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 实践项目:DNN车辆识别项目

无论是图像分类、目标检测还是文字识别,尽管任务不同,但是利用深度学习完成这些任务的基本框架都是相似的,可以归纳为图2.19所示的几部分。

图2.19 深度学习基本框架

1)数据处理:在深度学习任务中,大量的原始数据都需要经过预处理之后才能够被模型应用。一般数据处理包含五个部分:数据导入、数据形状变换、数据集划分、数据归一化处理以及数据封装。其中数据集划分指的是将数据划分为训练集和测试集:训练集用于训练确定模型参数,测试集用于测试评判模型效果。而数据归一化处理指的是对每个特征进行归一化处理,使得每个特征取值范围都在0~1之间。归一化处理的好处有两点:一是能使不同参数输出的loss是一个较为规则的曲线,学习率就可以设置成统一的值,使得模型训练更高效;二是每个特征的权重大小可以直接代表该特征对预测结果的贡献度。

2)模型设计:在深度学习任务中,最终目标就是训练获得一个模型来完成相关任务,这需要选择适当的神经网络模型架构,因此会涉及选择网络类型、网络层的数量以及它们之间的连接方式,一个合理的模型设计对于深度学习任务的成功与否至关重要。

3)模型训练:这一步的重点在于将数据提供给模型、计算损失函数,并使用优化算法(如梯度下降、Adam优化等)训练更新模型的参数,训练过程中还需要选择合适的超参数(如学习率、批量大小等)。

4)模型评估和调优:在模型训练完成后,还需要对模型进行评估以了解其性能如何。通常会使用数据处理环节所得测试集来评估模型的准确性、精确度、召回率等指标。如果模型在测试集上效果不佳,则可以重新设计模型,调整模型架构、优化算法或超参数等对模型反复进行迭代优化。

5)模型部署和应用:一旦训练所获的模型各项评价指标都达到既定要求,下一步就是将模型部署到硬件设备或服务器等平台完成实际相关工作。

如何根据图像的视觉内容为图像赋予一个语义类别是图像分类的目标,也是图像检索、图像内容分析以及目标识别等问题的基础。下面利用百度飞桨PaddlePaddle框架搭建一个全连接神经网络,对包含不同车辆的图像进行分类。由于项目代码篇幅较长,本节不附项目代码及介绍,读者可以扫码下载或通过链接在AI Stuido线上运行,项目代码附有注释,且配套有视频讲解。项目链接为 https://aistudio.baidu.com/projectdetail/3808393?contributionType=1 其中所用数据集分为3类:1=“汽车”,2=“摩托车”,3=“货车”,如图2.20所示。所有数据来源于2005 PASCAL视觉类挑战赛(VOC2005)所使用的数据筛选处理。

图2.20 车辆图像示例

整个项目的实现包含以下六大步骤:

1.相关库导入及参数配置

这一部分用于导入后续需要用到的一些第三方库,包括但不限于用于解压缩文件的zipfile库、处理数据的numpy库、处理图像的PIL库、绘制图形的matplotlib库以及搭建全连接神经网络模型的PaddlePaddle库。

另外还需要定义后续会用到的各种参数,包括但不限于输入图片的尺寸input_size、图像分类的类别数class_dim、各种数据集的路径、图像标签字典label_dict、训练轮数num_epochs以及超参数学习率lr等。

2.数据准备

这一部分主要用于处理模型所用数据集,利用random库的shuffle函数将数据打乱,将原始数据集划分为9:1的训练集与验证集,并生成后续网络模型训练能用的数据加载器。

3.模型配置

本次分类任务使用深度神经网络(DNN)。DNN是深度学习的基础网络,其网络结构包括输入层、隐藏层(可有多层)、输出层,层与层之间全部采用全连接的方式,如图2.21所示。

图2.21 DNN网络模型示例

4.模型训练

使用上述建立好的DNN模型开始训练,训练采用的损失函数为交叉熵损失函数paddle.nn.CrossEntropyLoss(),优化器使用adam优化器paddle.optimizer.Adam(),学习率lr定为0.1,每一轮次训练可以将当前轮次的损失值以及准确率打印显示,模型训练完成后保存模型并绘制出损失值和准确率随训练轮次变化的趋势图,如图2.22所示。

图2.22 损失值及准确率变化趋势图

5.模型评估

模型利用训练集数据训练完成后,可以利用与训练集不同的验证集数据来评估模型在验证集上分类预测的准确度。

6.模型预测

最终的模型是否好用还应考量该模型在其他未参与训练图像数据上的预测准确率,例如使用该模型预测图2.23所示图像,结果为汽车:1.00,摩托车:0.00,货车:0.00。预测结果准确,车辆类型后数据为模型预测图像中车辆为该类型车的概率。当然,单张图片结果并不能准确反映出模型的效果,一般会有一个测试集,测试集样本数量和验证集差不多,通过测试集上多样本的测试准确率,可以反映出所建立的DNN网络模型的效果。

图2.23 预测图片 ZP9bJLGqpgea8oXwt104Qwoodwo4s5ihkycpBgBIDoifi8/z24uAvY9kKH0jsfxB

点击中间区域
呼出菜单
上一章
目录
下一章
×