文章目录

  • 前言
  • 一、什么是PP-YOLO
  • 二、环境搭建
    • 1、部署本项目时所用环境
    • 2、LabVIEW工具包下载及安装
  • 三、模型的获取与转化
    • 1、安装paddle
    • 2、安装依赖的库
    • 3、安装pycocotools
    • 4、导出onnx模型
      • (1)导出推理模型
      • (2) 安装paddle2onnx
      • (3) 转换成onnx格式
  • 四、在LabVIEW实现PP-YOLOE的部署推理
    • 1、LabVIEW调用PP-YOLOE实现目标检测pp-yolox_main.vi
      • (1)查看模型
      • (2)实现过程
      • (3)项目运行
    • 2、LabVIEW调用PP-YOLOE实现实时目标检测ppyolo_camera.vi
      • (1)LabVIEW调用PP-YOLOE实时目标检测源码
      • (2)LabVIEW调用PP-YOLOE实现实时目标检测结果
  • 五、完整项目下载链接
  • 总结

前言

PP-YOLOE是百度基于其之前的PP-YOLOv2所改进的卓越的单阶段Anchor-free模型,超越了多种流行的YOLO模型。如何使用python进行该模型的部署,官网已经介绍的很清楚了,但是对于如何在LabVIEW中实现该模型的部署,笔者目前还没有看到相关介绍文章,所以笔者在实现PP-YOLOE ONNX 在LabVIEW中的部署推理后,决定和各位读者分享一下如何使用LabVIEW实现PP-YOLOE的目标检测。


一、什么是PP-YOLO

  • PP-YOLOE官方代码地址:https://github.com/PaddlePaddle/PaddleDetection
  • PP-YOLOE论文地址:https://arxiv.org/pdf/2203.16250.pdf


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上的部署推理。


二、环境搭建

1、部署本项目时所用环境

  • 操作系统:Windows10
  • python:3.6及以上
  • LabVIEW:2018及以上 64位版本
  • AI视觉工具包:techforce_lib_opencv_cpu-1.0.0.73.vip
  • onnx工具包:virobotics_lib_onnx_cuda_tensorrt-1.0.0.16.vip【1.0.0.16及以上版本】

2、LabVIEW工具包下载及安装

  • AI视觉工具包下载与安装参考:
    https://blog.csdn.net/virobotics/article/details/123656523
  • onnx工具包下载与安装参考:
    https://blog.csdn.net/virobotics/article/details/124998746

三、模型的获取与转化

注意:本教程已经为大家提供了PP-YOLOE的模型,可跳过本步骤,直接进行步骤四-推理。若是想要了解PP-YOLO的onnx模型如何获取,则可继续阅读本部分内容。

PP-YOLOE并没有直接提供onnx模型,但是我们可以通过paddle2onnx实现onnx模型的导出。

1、安装paddle

  • PPYOLO需要使用百度paddle框架,我们打开百度飞桨官网:https://www.paddlepaddle.org.cn/,在下方的快速安装选择适合自己版本的paddlepaddle

  • cmd中执行以下命令安装:
python -m pip install paddlepaddle-gpu==2.3.1.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

2、安装依赖的库

  • 从github上下载PaddleDetection并解压到目录,下载地址:https://github.com/PaddlePaddle/PaddleDetection ,将paddledetection根目录添加到环境变量。
  • 在PaddleDetection-release-2.4文件夹中打开cmd,输入以下指令安装需要的库
pip3 install -U pip && pip3 install -r requirements.txt

3、安装pycocotools

pip install pycocotools

若安装pycocotools时遇到ERROR: Could not build wheels for pycocotools ……,则可以使用以下指令来安装:

pip install pycocotools-windows

4、导出onnx模型

(1)导出推理模型

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

(2) 安装paddle2onnx

pip install paddle2onnx

(3) 转换成onnx格式

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


四、在LabVIEW实现PP-YOLOE的部署推理

本项目整体的文件结构如下图所示,各位读者可在文章末尾链接处下载整个项目源码。

1、LabVIEW调用PP-YOLOE实现目标检测pp-yolox_main.vi

本例中使用LabvVIEW ONNX工具包中的Create_Session.vi载入onnx模型,可选择使用cpu,cuda进行推理加速。

(1)查看模型

我们可以使用netron 查看ppyoloe_crn_s_300e_coco.onnx的网络结构,浏览器中输入链接:https://netron.app/,点击Open Model,打开相应的网络模型文件即可。

查看模型属性,可看到模型的输入输出如下图所示:

我们发现,该模型有两个输入和两个输出,所以推理时候需要有两个输入,需要用到我们的多输入处理vi,run.vi

  • 可以看到图片输入大小为640x640
  • 第一个输出为8400x6[6分别为classese_id,cofidence,框]

(2)实现过程

  • 读取图片并进行图像预处理(-1到1的归一化)

  • 初始化一个Vector_Value,新增两个输入tensor(图片及scal_factor)

  • 加载模型并选择加速类型(cpu、CUDA、tensorRt)

  • 实现多输入推理

  • 获取第一层的输出

  • 进行后处理

  • 绘制检测出的目标及及置信度

(3)项目运行

配置本项目所需环境。在文章末尾链接处下载整个项目源码,将我们已经转化好的onnx模型放置到model文件夹中,打开pp_yolo_main.vi,在前面板中修改程序中加载的模型路径为实际模型路径,本项目中已经将PP-YOLOE onnx模型【ppyoloe_crn_s_300e_coco.onnx】放置到了model文件夹中,如需其他模型,读者也可自行放置到model文件及下,实现模型的加载。修改检测图片的路径为实际图片路径,运行程序,可得到目标检测的结果。

  • 主程序源码如下:

  • 运行结果如下:


大家也可以检测其他图片来测试检测效果。

2、LabVIEW调用PP-YOLOE实现实时目标检测ppyolo_camera.vi

实时检测过程,我们可以选择使用CUDA实现推理加速,整个程序的实现过程和加载图片进行检测基本一致。

(1)LabVIEW调用PP-YOLOE实时目标检测源码

(2)LabVIEW调用PP-YOLOE实现实时目标检测结果

可以看到使用CUDA进行推理加速,速度还是很快的。


五、完整项目下载链接

链接:https://pan.baidu.com/s/1h4I__FqrfimKauJT8jmOiQ?pwd=yiku

总结

以上就是今天要给大家分享的内容。大家可根据链接下载相关源码与模型。

如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦。

如果文章对你有帮助,欢迎✌关注、

百度飞桨PP-YOLOE ONNX 在LabVIEW中的部署推理(含源码)相关推荐

  1. 相约AIIA!百度飞桨深度学习公开课预约中

    11月1日,AIIA2019人工智能开发者大会即将以"'源'开则行,'机'智则灵"为题于杭州拉开帷幕.据悉,此次大会将继续邀请国内外人工智能产业知名人士.国家政府主管部门.行业内顶 ...

  2. 百度飞桨和文心大模型助力,中康科技重构医疗科研大数据治理

    安永<生命科学4.0报告>曾用FV=ID描述生命科学的未来价值,即未来价值等于"创新"的"数据"次方.左右"价值"指数增长的&q ...

  3. 共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf

    本文已在飞桨公众号发布,查看请戳链接: 共创软硬件协同生态:Graphcore IPU与百度飞桨的"联合提交"亮相MLPerf AI领域最负盛名的产业级基准测试榜单MLPerf T ...

  4. 百度飞桨中国行南京站开启!共研AI赋能产业新模式

    面对未来发展,以人工智能为代表的新一代技术逐渐成为产业转型的核心驱动力之一,人工智能的发展离不开创新和人才.在这一大背景下,百度推出"飞桨中国行"活动,计划走入全国多个 AI 重点 ...

  5. 手把手教你在百度飞桨云平台下运行PPYOLO-E,训练COCO数据集

    百度ai云平台:飞桨AI Studio - 人工智能学习实训社区 (baidu.com) 首先感谢百度提供这样一个云平台 .ps 每天会送8个算力也就是每天可以使用8个小时V100-32G 完成任务还 ...

  6. 5分钟“调教”一只机器狗,百度飞桨已经简单到这地步了吗?

    金磊 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI "调教"一只机器狗学会新技能需要多长时间? 仅需5分钟. 一个往左走的手势,它就乖乖地向左挪了挪:一个" ...

  7. 【组队学习】【34期】百度飞桨AI达人创造营

    百度飞桨AI达人创造营 航路开辟者:百度飞桨 领航员:六一 航海士:阿水.颜鑫.宋泽山.刘洋.张文恺 基本信息 内容属性:合作课程 练习平台:https://aistudio.baidu.com/ai ...

  8. 百度飞桨成为北京市首个AI产业方向创新应用平台

    1月20日,北京市经济和信息化局正式授予百度公司"北京市人工智能产业创新应用平台(百度飞桨)".当前,北京市正在创建国家人工智能创新应用先导区,人工智能作为新科技革命和产业变革前沿 ...

  9. 百度飞桨全新升级:重磅推出PaddleHelix平台、开源框架V2.0RC,硬件生态路线图全公开...

    12月20日,WAVE SUMMIT+2020深度学习开发者峰会在北京举办.本届峰会,百度飞桨带来八大全新发布与升级,有支持前沿技术探索和应用的生物计算平台PaddleHelix螺旋桨,开发更加便捷的 ...

最新文章

  1. JS+CSS3 360度全景图插件 - Watch3D.js
  2. Linux监控进程的iops,linux性能监控工具--Collectl
  3. boost::safe_numerics模块实现隐式转换更改数据值的测试程序
  4. HTML 取消超链接下划线
  5. SQL复习(w3school)笔记
  6. Vue解析--如何应对面试官提问
  7. 用户画像标签维度_一文看懂用户画像标签体系(包括维度、应用场景)
  8. 素数的有关性质(二)欧拉函数的一些定理证明与计算
  9. 《消息队列》函数讲解
  10. 剑指offer之连续子数组的最大和
  11. fft python 举例_Python FFT合成波形的实例
  12. python函数的参数细节
  13. 关于C2100间接寻址的问题
  14. 带键盘的java模拟器_虚拟键盘实现!JAVA模拟器PSPKVM v0.3.2推出
  15. delphi 水晶按钮
  16. ADB 最新调试工具
  17. HDU 2188 JAVA
  18. 如何在html中插入本地音乐
  19. VRRP 虚拟路由器冗余协议实现双组双备
  20. pixhawk如何取消安全开关

热门文章

  1. 简单的一个在线聊天室
  2. 芋道 Spring Boot Redis 入门
  3. 额定功率台式计算机,解决方案:计算机电源分类当前的台式计算机电源的额定功率为200-4...
  4. django对比数据并调用企业微信接口群发
  5. 【SSM架构】博客系统开发(七)-登陆界面
  6. LightningChart数据可视化工具图形控件教程24-Bands(数据带)
  7. mtd驱动分析-硬件驱动层
  8. CISCO CPOS STM配置示例
  9. 澳门大学计算机语言博士生导师王珊,四年资助百余万!澳门大学人文学院招收博士生(第二批)...
  10. GOF设计模式之外观模式(结构型代理模式)