1.前言

11月1日,百度发布了桨液1.1版。作为国内第一个深度学习框架,PaddlePaddle对中文社区非常友好,有完善的中文社区和面向项目的中文教程,可以让更多的中文用户更容易进行深度学习和机器学习相关的研究和实践。百度希望PaddlePaddle继续成长发展,这是国内公司对开源社区做出的非常有意义的贡献。为了搞清楚Paddle Fluid 1.1有哪些方面的更新,作者在第一时间安装了新发布的版本,并以一个基于SSD的目标检测任务测试了新PaddlePaddle的性能。

2.什么是目标检测

图像识别应该是视觉开发者非常熟悉的任务。首先,深度学习被应用于图像识别任务。比如给电脑一张车的图片,让它判断这张图片中是否有车。

在train.py中,为所有超参数设置默认值。不熟悉PaddlePaddle参数调整的工程师可以直接用默认参数训练,非常方便。如有必要,根据下表修改相应的超参数:

执行脚本时,传入相应的参数值,例如:

4.5.1单机多卡配置

与多机多卡配置相比,单机多卡的配置更简单,需要先在GPU0上初始化参数,然后通过流体分配到多个显卡。ParallelExecutor。这里可以使用fluid . core . get _ cuda _ device _ count获取可用显卡数量,也可以自己定义几个显卡。

4.5.2参数调整

PaddlePaddle是SSD模型,给用户很大的自由度,可以从网络结构、损耗函数、优化方法等多个角度对模型进行调整。本文使用的是基于MobileNet的SSD。如果要使用基于VGG的SSD,可以修改项目中的mobilenet_ssd.py文件,将其中定义的mobilenet程序更改为VGG的程序描述。如果需要修改损失函数或优化方法,可以在train.py中找到build_program函数

在中修改损失函数或优化器;batch_num、epoch_num、学习速率等参数可以在train.py传入的参数中直接修改..

4.5.3模型保存

模型在COCO数据集上训练后,可以通过fluid.io.save_persistables的方法保存模型。我们实现了下面的save_model函数,将模型保存到指定的路径。

4.5.4继续培训

训练过程有时会中断。只要在几个批次之后保存模型,我们就可以通过load_vars方法恢复保存的模型继续训练或用于预测。文中提到的API可以在PaddlePaddle的官网教程中进行系统的学习和查看。PaddlePaddle提供大量中文文档和教程,对中国用户非常友好。

4.5.5性能参数

训练速度:在COCO2017数据集上进行单卡训练,迭代一个历元需要3min 33s;单机4卡训练,需要1min02s和02s迭代一个历元。

CPU/GPU占用率:正常训练条件下,CPU占用率在40%-60%之间,GPU占用率稳定在50%左右。

中央处理器/图形处理器的使用

4.6模型评估

在PaddlePaddle的SSD模型中,可以使用eval.py脚本对模型进行评估,可以选择11点、积分等方法计算模型在验证集上的mAP。

model_dir是我们训练好的模型的存储目录,data_dir是数据集目录,test_list是作为验证集的文件列表,前提是这些文件必须有对应的标签文件,ap_version是计算mAP的方法,nms_threshold是分类阈值。最后,我们得到PaddlePaddle SSD模型在帕斯卡VOC数据集上的映射为73.32%

4.7模型预测和可视化

4.7.1模型预测

模型训练完成后,使用test _ Program = fluid。default _ main _ Program。clone 将程序转换为测试模式,然后将待预测的数据馈入Executor执行程序,即可计算出图像的分类标签、目标框的评分、xmin、ymin、xmax、ymax。具体流程如下:

4.7.2预测结果的可视化

对于目标检测任务,我们通常需要将预测结果可视化,以获得对结果的感性认识。我们可以写一个程序,在原始图像上画一个预测帧。核心代码如下:

这样,我们可以直观地看到预测结果:

令人高兴的是,PaddlePaddle的SSD模型帮助我们实现了一套完整的预测流程。我们可以在SSD模型下直接运行experte . py脚本,使用训练好的模型预测图片:

4.8模型部署

PaddlePaddle的模型部署需要安装编译C++预测库,可以在http://www.PaddlePaddle.org/documentation/docs/zh/1.1/user _ guides/how to/impact/build _ and _ install _ lib _ cn.html下载安装。预测库中提供了Paddle的预测API,预测部署过程大致分为三步:1。创建PaddlePredictor;2.创建一个paddletrector,并将其传递给PaddlePredictor3.获取输出PaddleTensor并输出结果。这部分操作并不复杂,Paddle的教程也为部署提供了详细的代码参考,可以快速使用这个模板完成模型部署。

5.利用感情

ü华人社区支持良好

在构建固态硬盘的过程中,遇到了一些问题,如分段错误、非类型化等。作者在paddle的GitHub上直接提出了相关问题,并很快得到了投稿人的回复,问题很快得到了解决。

ü教程完善

PaddlePaddle的官网提供了非常详细的中英文教程。与学习TensorFlow前半天看文档相比,PaddlePaddle对中国用户来说是一大福音。

ü与TensorFlow相比,整体架构简洁明了,没有太多难以理解的概念。

ü丰富的模型库

CV、NLP、推荐等任务常用的内置经典模型,可以快速开发迭代AI产品。

ü卓越的性能和生态完整性

从这个实验的结果来看,PaddlePaddle与其他主流框架的性能差别不大。PaddlePaddle在训练速度和CPU/GPU占用率上表现优异。PaddlePaddle布局了一套完整的生态学,前景非常好。

6.摘要

总的来说,PaddlePaddle是一个很好的框架。因为设计简单,文档和社区都做的很好,上手非常容易,使用过程中也没有什么难以理解的概念。用fluid Program定义网络结构很方便,以前用过TensorFlow的工程师可以快速迁移到PaddlePaddle。在这个实验中,发现了PaddlePaddle的一些问题。如果训练过程意外终止,Paddle的训练任务没有完全被杀死,仍然占用大量CPU和GPU资源,内存和视频内存的管理有待进一步提高。但实验也证实了PaddlePaddle在SSD模型上的性能在正常情况下在精度和速度上与TensorFlow相近,在数据读取操作上比TensorFlow更简洁清晰。

1.《paddle 用PaddlePaddle 实现目标检测任务》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《paddle 用PaddlePaddle 实现目标检测任务》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1783186.html