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

2.3.3 PaddlePaddle

百度飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件为一体,是中国首个自主研发、功能完备、开源开放的产业级深度学习平台,其基本构成见表2.4。

表2.4 PaddlePaddle基本构成

飞桨拥有四大优势技术:

1)开发便捷的深度学习框架:飞桨深度学习框架基于编程一致的深度学习计算抽象以及对应的前后端设计,拥有易学易用的前端编程界面和统一高效的内部核心架构,对普通开发者而言更容易上手并具备领先的训练性能。飞桨框架还提供了低代码开发的高层API,并且高层API和基础API采用了一体化设计,两者可以互相配合使用,做到高低融合,确保用户可以同时享受开发的便捷性和灵活性。

2)超大规模深度学习模型训练技术:大规模分布式训练是飞桨非常有特色的一个功能。飞桨突破了超大规模深度学习模型训练技术,领先其他框架实现了千亿稀疏特征、万亿参数、数百节点并行训练的能力,解决了超大规模深度学习模型的在线学习和部署难题。此外,飞桨还覆盖支持包括模型并行、流水线并行在内的广泛并行模式和加速策略,率先推出业内首个通用异构参数服务器模式和4D混合并行策略,引领大规模分布式训练技术的发展趋势。

3)多端多平台部署的高性能推理引擎:飞桨对推理部署提供全方位支持,可以将模型便捷地部署到云端服务器、移动端以及边缘端等不同平台设备上,并拥有全面领先的推理速度,同时兼容其他开源框架训练的模型。飞桨推理引擎广泛支持多种类型的AI芯片,特别是对国产硬件做到了全面的优化适配。

4)产业级开源模型库:基于飞桨框架2.0,官方建设的算法数量达到270+,并且绝大部分模型已升级为动态图模型,包含经过产业实践长期打磨的主流模型以及在国际竞赛中的夺冠模型;提供面向语义理解、图像分类、目标检测、语义分割、文字识别、语音合成等场景的多个端到端开发套件,满足企业低成本开发和快速集成的需求,助力快速的产业应用。 MM67PeuwOT/rY6gFKagwQnqcMbzutBtq4NbbV2oSi4ExFysWQ2mh/MRdHe5facc+



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 预测图片 MM67PeuwOT/rY6gFKagwQnqcMbzutBtq4NbbV2oSi4ExFysWQ2mh/MRdHe5facc+

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