PP-YOLOE是百度基于其之前的PP-YOLOv2所改进的卓越的单阶段Anchor-free模型,超越了多种流行的YOLO模型。如何使用python进行该模型的部署,官网已经介绍的很清楚了,但是对于如何在LabVIEW中实现该模型的部署,笔者目前还没有看到相关介绍文章,所以笔者在实现PP-YOLOE ONNX 在LabVIEW中的部署推理后,决定和各位读者分享一下如何使用LabVIEW实现PP-YOLOE的目标检测。
PP-YOLOE是百度基于其之前的PP-YOLOv2所改进的卓越的单阶段Anchor-free模型,超越了多种流行的YOLO模型。PP-YOLOE,有更高的检测精度且部署友好。
PP-YOLOE基于anchor-free的架构,使用强大的backbone和neck,引入了CSPRepResStage,ET-head 和动态标签分配算法TAL。针对不同应用场景,提供了不同大小的模型。即s/m/l/x,可以通过width multiplier和depth multiplier配置。PP-YOLOE避免了使用诸如Deformable Convolution或者Matrix NMS之类的特殊算子,以使其能轻松地部署在多种多样的硬件上。
PP-YOLOE-l在COCO test-dev2017达到了51.6的mAP, 同时其速度在Tesla V100上达到了78.1 FPS。
PP-YOLOE提供了一键转出 ONNX 格式,可顺畅对接 ONNX 生态。本文主要实现百度PP-YOLOE ONNX 在LabVIEW上的部署推理。
注意:本教程已经为大家提供了PP-YOLOE的模型,可跳过本步骤,直接进行步骤四-推理。若是想要了解PP-YOLO的onnx模型如何获取,则可继续阅读本部分内容。
PP-YOLOE并没有直接提供onnx模型,但是我们可以通过paddle2onnx实现onnx模型的导出。
python -m pip install paddlepaddle-gpu==2.3.1.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
pip3 install -U pip && pip3 install -r requirements.txt
pip install pycocotools
若安装pycocotools时遇到ERROR: Could not build wheels for pycocotools ……,则可以使用以下指令来安装:
pip install pycocotools-windows
python tools/export_model.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml --output_dir=output_inference -o weights=https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_300e_coco.pdparams
pip install paddle2onnx
paddle2onnx --model_dir output_inference/ppyoloe_crn_l_300e_coco --model_filename model.pdmodel --params_filename model.pdiparams --opset_version 11 --save_file ppyoloe_crn_l_300e_coco.onnx
至此已成功导出PP-YOLOE ONNX模型
注意: ONNX模型目前只支持batch_size=1
本项目整体的文件结构如下图所示,各位读者可在文章末尾链接处下载整个项目源码。
本例中使用LabvVIEW ONNX工具包中的Create_Session.vi载入onnx模型,可选择使用cpu,cuda进行推理加速。
我们可以使用netron 查看ppyoloe_crn_s_300e_coco.onnx的网络结构,浏览器中输入链接:https://netron.app/,点击Open Model,打开相应的网络模型文件即可。
查看模型属性,可看到模型的输入输出如下图所示:
我们发现,该模型有两个输入和两个输出,所以推理时候需要有两个输入,需要用到我们的多输入处理vi,run.vi
配置本项目所需环境。在文章末尾链接处下载整个项目源码,将我们已经转化好的onnx模型放置到model文件夹中,打开pp_yolo_main.vi,在前面板中修改程序中加载的模型路径为实际模型路径,本项目中已经将PP-YOLOE onnx模型【ppyoloe_crn_s_300e_coco.onnx】放置到了model文件夹中,如需其他模型,读者也可自行放置到model文件及下,实现模型的加载。修改检测图片的路径为实际图片路径,运行程序,可得到目标检测的结果。
实时检测过程,我们可以选择使用CUDA实现推理加速,整个程序的实现过程和加载图片进行检测基本一致。
可以看到使用CUDA进行推理加速,速度还是很快的。
链接:https://pan.baidu.com/s/1h4I__FqrfimKauJT8jmOiQ?pwd=yiku
以上就是今天要给大家分享的内容。大家可根据链接下载相关源码与模型。
如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦。
如果文章对你有帮助,欢迎✌关注、点赞、✌收藏、订阅专栏