YOLOX目标检测实战:LabVIEW+YOLOX 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工具包下载及安装:
- AI视觉工具包下载与安装参考:
https://blog.csdn.net/virobotics/article/details/123656523 - onnx工具包下载与安装参考:
https://blog.csdn.net/virobotics/article/details/124998746
三、模型的获取与转化【推荐方式一】
下面我们来介绍两种模型获取的方式(以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目标检测实战:LabVIEW+YOLOX ONNX模型实现推理检测(含源码)的更多相关文章
- Spring实战(中文4,5版) PDF含源码
Spring实战 读者评价 看了一半后在做评论,物流速度挺快,正版行货,只是运输过程有点印记,但是想必大家和你关注内容,spring 4必之3更加关注的是使用注解做开发,对于初学者还是很有用,但是不排 ...
- 手把手教你使用LabVIEW人工智能视觉工具包快速实现传统Opencv算子的调用(含源码)
前言 今天我们一起来使用LabVIEW AI视觉工具包快速实现图像的滤波与增强:图像灰度处理:阈值处理与设定:二值化处理:边缘提取与特征提取等基本操作.工具包的安装与下载方法可见之前的博客. 一.图像 ...
- Scala 深入浅出实战经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- Scala 深入浅出实战经典 第60讲:Scala中隐式参数实战详解以及在Spark中的应用源码解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- 【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,实现YOLOv5实时物体识别(含源码)
前言 上一篇博客给大家介绍了LabVIEW开放神经网络交互工具包[ONNX],今天我们就一起来看一下如何使用LabVIEW开放神经网络交互工具包实现TensorRT加速YOLOv5. 以下是YOLOv ...
- 【YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)含源码
前言 前面我们给大家介绍了基于LabVIEW+YOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5.本次主要是和大家分享使用LabVIEW快速实现yolov5的物体 ...
- 手把手教你使用LabVIEW OpenCV DNN实现手写数字识别(含源码)
@ 目录 前言 一.OpenCV DNN模块 1.OpenCV DNN简介 2.LabVIEW中DNN模块函数 二.TensorFlow pb文件的生成和调用 1.TensorFlow2 Keras模 ...
- 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码
前言 今天和大家一起分享如何使用LabVIEW调用pb模型实现物体识别,本博客中使用的智能工具包可到主页置顶博客LabVIEW AI视觉工具包(非NI Vision)下载与安装教程中下载 一.物体识别 ...
- 【Java编程实战】Metasploit_Java后门运行原理分析以及实现源码级免杀与JRE精简化
QQ:3496925334 文章作者:MG1937 CNBLOG博客ID:ALDYS4 未经许可,禁止转载 某日午睡,迷迷糊糊梦到Metasploit里有个Java平台的远控载荷,梦醒后,打开虚拟机, ...
- 手把手教你使用LabVIEW OpenCV dnn实现图像分类(含源码)
@ 目录 前言 一.什么是图像分类? 1.图像分类的概念 2.MobileNet简介 二.使用python实现图像分类(py_to_py_ssd_mobilenet.py) 1.获取预训练模型 2.使 ...
随机推荐
- [白嫖]阿里云服务器ECS以及无影云桌面
[白嫖]aliyun 阿里云ECS和无影云桌面 [云服务器 ECS]学生认证约7个月 适合入门级开发者,用于搭建网站.小程序.云博客.部署主流开发环境,如 lamp.node.js.wordpress ...
- Natasha V5.2.2.1 稳定版正式发布.
DotNetCore.Natasha.CSharp v5.2.2.1 使用 NMS Template 接管 CI 的部分功能. 取消 SourceLink.GitHub 的继承性. 优化几处内存占用问 ...
- Python 项目:外星人入侵----第一部分
外星人入侵 1.规划项目 玩家控制着一艘最初出现在屏幕底部中央的飞船,玩家可以使用箭头键左右移动飞船,还可以使用空格键进行射击,游戏开始时,一群外星人出现在天空中,他们在屏幕中下移动.玩家任务是射杀这 ...
- php获取未解码之前的原始接口请求参数
前言 目前的几个项目,业务方基本都使用POST方式请求接口,我们本机磁盘会保留一份请求的原始参数用于请求分析和问题排查使用,一般有问题,也会基于seqid(请求唯一id)捞到日志,copy参数模拟请求 ...
- 2023-01-11:体育馆的人流量。编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。返回按 visit_date 升序排列 的结果表。 DROP TAB
2023-01-11:体育馆的人流量.编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录.返回按 visit_date 升序排列 的结果表. DROP TABL ...
- 2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。
2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿.但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪 ...
- 2020-03-01:给定一个非负数组arr,代表直方图。返回直方图的最大长方形面积。
2020-03-01:给定一个非负数组arr,代表直方图.返回直方图的最大长方形面积. 福哥答案2020-03-01: 单调栈,大压小.有代码. 代码用golang编写,代码如下: package m ...
- 2022-01-15:中心对称数 III。 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。 写一个函数来计算范围在 [low, high] 之间中心对称数的个
2022-01-15:中心对称数 III. 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low, high] 之间中心对称数的个 ...
- Pytest - 概述&入门
Pytest - 概述&入门 概述 简介 Pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作: pytest提供了丰富的功能,包括assert重写,第三 ...
- VB.NET 截取字符串
在VB.NET中,您可以使用Substring方法或Split方法来截取字符串. Substring方法允许您从字符串中提取一个子字符串,该子字符串从指定的起始索引开始,并继续到字符串的末尾或指定的长 ...