首页 > 编程语言 >YOLOX目标检测实战:LabVIEW+YOLOX ONNX模型实现推理检测(含源码)

YOLOX目标检测实战:LabVIEW+YOLOX ONNX模型实现推理检测(含源码)

时间:2023-07-14 14:31:30浏览次数:47  
标签:yolox 检测 模型 YOLOX LabVIEW 源码 onnx

(文章目录)


前言

好长一段时间没更博了,没更新博客的这段时间博主都有在努力产出,前段时间好多朋友私信问我说自己的yolov5模型是比较老的版本,使用LabVIEW推理的时候会报错。为各位朋友新老版本都能兼容,博主这段时间做了一个LabVIEW YOLOv5的插件,里面包含了大部分的新旧版本,老版本的朋友们也可以愉快的使用LabVIEW来实现推理了。等后面整理好了分享给大家。今天我们先一起来看一下如何使用LabVIEW实现yolox的目标检测。


一、什么是YOLOX

LabVIEW实现YOLOX目标检测

在这里插入图片描述 在这里插入图片描述 YOLOX是旷视科技开源的高性能实时目标检测网络,旷视的研究者将解耦头、数据增强、无锚点以及标签分类等目标检测领域的优秀进展与 YOLO 进行了巧妙的集成组合,提出了 YOLOX,不仅实现了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了极具竞争力的推理速度。如下图:

在这里插入图片描述 YOLOX提供了支持 ONNX、TensorRT、NCNN 和 Openvino 的部署版本。今天我们主要针对YOLOX 的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.12.vip【不使用cuda或者tensorrt加速的话也可以使用:virobotics_lib_onnx_cpu-1.0.0.13.vip】

2、LabVIEW工具包下载及安装:


三、模型的获取与转化【推荐方式一】

下面我们来介绍两种模型获取的方式(以yoloxs为例,想要获取其他模型的方式也一样,只需要修改名字即可)

1、方式一:直接在官网下载yolox的onnx模型

下载具体地址如下:https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/ONNXRuntime 在这里插入图片描述 下载对应版本模型的weights,点击github即可下载onnx模型。

2、方式二:将标准模型pth转化为onnx(较为复杂)

1、安装YOLOX 在https://github.com/Megvii-BaseDetection/YOLOX中下载yolox源码并解压,在YOLOX-main文件夹中打开cmd,输入以下指令安装需要的库及yolox:

pip3 install -U pip && pip3 install -r requirements.txt
python3 setup.py develop

2、安装pycocotools

pip install pycocotools

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

pip install pycocotools-windows

3、从基准表下载标准预训练模型:https://github.com/Megvii-BaseDetection/YOLOX 在这里插入图片描述 将yolox_s.pth模型放置到如下路径: 在这里插入图片描述 4、将标准模型pth转化为onnx

运行以下指令实现模型的转换

python3 tools/export_onnx.py --output-name yolox_s.onnx -n yolox-s -c yolox_s.pth

也可使用如下指令转化自己的模型:

#通过 -f 转换标准 YOLOX 模型。使用 -f 时,上述命令等价于:
python3 tools/export_onnx.py --output-name yolox_s.onnx -f exps/default/yolox_s.py -c yolox_s.pth
# 要转换您的自定义模型,请使用 -f:
python3 tools/export_onnx.py --output-name your_yolox.onnx -f exps/your_dir/your_yolox.py -c your_yolox.pth

输出如下,得到yolox_s.onnx 在这里插入图片描述

3、获取onnx模型总结

通过对比我们会发现,先下载标准模型,再转换为onnx模型比较麻烦,需要配置很多环境,如果只是想要实现YOLOX的推理,则可以使用方式一,直接在官网下载对应的模型即可。但是如果想要转换自己训练好的onnx模型,则可采用第二种方式,将训练好的pth转化为onnx。


四、LabVIEW实现YOLOX ONNX推理检测

将我们的onnx模型放置到model文件夹中,修改程序中加载的模型,本项目中已经下载好了yolox_s.onnx和yolox_m.onnx两种模型,如需其他模型,读者也可自行放置到model文件夹下,实现模型的加载。 在这里插入图片描述

1、LabVIEW调用yolox onnx模型实现目标检测yolox.vi

本例中使用LabvVIEW ONNX工具包中的Create_Session.vi载入onnx模型,可选择使用cpu,cuda,tensorRT进行推理加速。【若安装的是onnx cpu版,则只可使用cpu推理加速】

(1)查看模型

我们可以使用netron 查看yolov5m.onnx的网络结构,浏览器中输入链接:https://netron.app/,点击Open Model,打开相应的网络模型文件即可。 在这里插入图片描述 如下图所示是转换之后的yolox_s.onnx的属性: 在这里插入图片描述 可以看到图片输入大小为640640 输出为18400*85

(2)LabVIEW调用YOLOX源码

如下图所示,加载模型及图片实现目标检测 在这里插入图片描述

(3)LabVIEW调用YOLOX实现目标检测结果

本程序运行时,加载模型为:yolox_s.onnx,实际运行时需要修改图片路径为实际路径,否则会报错在这里插入图片描述 运行结果如下: 在这里插入图片描述 大家也可以检测其他图片来测试检测效果。

2、LabVIEW调用yolox onnx模型实现实时目标检测yolovx_camera.vi

实时检测过程,我们可以选择使用CUDA或者tensorRT实现推理加速,我们发现相同环境下,yolox的实时检测速度和精度都比其他的yolo模型要更好。

(1)LabVIEW调用YOLOX实时目标检测源码

在这里插入图片描述

(2)LabVIEW调用YOLOX实现实时目标检测结果

在这里插入图片描述 可以看到使用CUDA进行推理加速,速度还是很快的。大家也可以使用tensorRT进行推理加速。


五、源码及模型下载

链接:https://pan.baidu.com/s/1FMRH1F3DSKTQBiuB3Ofe3Q?pwd=8cnf

总结

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

如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦,如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299。

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

标签:yolox,检测,模型,YOLOX,LabVIEW,源码,onnx
From: https://blog.51cto.com/u_12812297/6710175

相关文章

  • ckeditor粘贴word图片且图片文件自动上传源码
    ​ 如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>......
  • 如何有效检测、识别和管理 Terraform 配置漂移?
    在理想的IaC世界中,我们所有的基础设施实现和更新都是通过将更新的代码推送到GitHub来编写和实现的,这将触发Jenkins或Circle-Ci中的CI/CD流水线,并且这些更改会反映在我们常用的公有云中。但现实并没有这么顺利,原因可能有很多,例如: 公司仍处于云自动化的初级阶段;不......
  • # 检测点 9.2
    检测点9.2补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。assumecs:codecodesegmentstart:movax,2000Hmovds,axmovbx,0s:movch,0;这题要注意的是字节......
  • # 9.1 检测点
    9.1检测点assumecs:codedatasegment?dataendscodesegmentstart:movax,datamovds,axmovbx,0jmpwordptr[bx+1]codeendsendstart若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?答:CS:IP指向程序的第一条指......
  • WPF TreeView 检测SelectedItem变化的简单方案
    TreeView无法绑定SelectedItem,而又想知道treeview的selecteditem的变化,当然目前有很多方法,我这里简单的提供一个。目前主要思路就是通过处理xaml的TreeViewItem的IsSelected属性来进行绑定。<TreeViewBorderThickness="0"Width="220"......
  • 如何有效检测、识别和管理 Terraform 配置漂移?
    作者|KrishnaduttPanchagnula翻译|Seal软件链接|https://betterprogramming.pub/detecting-identifying-and-managing-terraform-state-drift-997366a74537 在理想的IaC世界中,我们所有的基础设施实现和更新都是通过将更新的代码推送到GitHub来编写和实现的,这将触发Jenki......
  • Spring源码剖析-BeanFactory和ApplicationContext(其一)
    1.在Spring中,BeanFactory和ApplicationContext是两种容器,它们之间的关系是怎样的?我们使用的是哪个?它们的底层原理是什么?以一个SpringBoot的启动类为例:packagecom.example.demo3;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.auto......
  • 【Spring Security】的RememberMe功能流程与源码详解
    相关课程前言今天我们来聊一下登陆页面中"记住我"这个看似简单实则复杂的小功能。如图就是某网站登陆时的"记住我"选项,在实际开发登陆接口以前,我一直认为这个"记住我"就是把我的用户名和密码保存到浏览器的cookie中,当下次登陆时浏览器会自动显示我的用户名和密码,就不用我再次......
  • 实战:单点登录的两种实现方式,附源码
    相关课程最近工作有点忙,好久没更新文章了,正好这两天在整理单点登陆相关的文档,今天趁着小孩睡着了......
  • 视觉检测系统不丢帧背后的真相——10G高速图像采集卡
    中国机器视觉起步于80年代的技术引进,一直到2011年,市场开始高速增长,随着人工成本的增加和制造业的升级需求,加上计算机视觉技术的快速发展,越来越多机器视觉方案应用于各领域。参差不齐的视觉系统导致机器视觉设备的持续稳定性以及传输数据的准确性也无法得到保障。今天联瑞给大家讲......