前言

YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。如何使用python进行该模型的部署,官网已经介绍的很清楚了,但是对于如何在LabVIEW中实现该模型的部署,笔者目前还没有看到相关介绍文章,所以笔者在实现YOLOv6 ONNX 在LabVIEW中的部署推理后,决定和各位读者分享一下如何使用LabVIEW实现YOLOv6的目标检测。


一、什么是YOLOv6

YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。本框架同时专注于检测的精度和推理效率,在工业界常用的尺寸模型中:YOLOv6-nano 在 COCO 上精度可达 35.0% AP,在 T4 上推理速度可达 1242 FPS;YOLOv6-s 在 COCO 上精度可达 43.1% AP,在 T4 上推理速度可达 520 FPS。在部署方面,YOLOv6 支持 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)等不同平台的部署,极大地简化工程部署时的适配工作。

从模型性能对比图来看,YOLOv6的性能也是再创新高。YOLOv6-s在COCO上精度达到了43.1%AP,在T4上推理速度也高达520FPS!

YOLOv6提供了支持 ONNX、TensorRT、NCNN 和 Openvino 的部署版本。今天我们一起来看一下如何在LabVIEW中部署YOLOv6 ONNX。


二、环境搭建

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工具包下载及安装


三、模型的获取与转化

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

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

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

具体地址如下:https://github.com/meituan/YOLOv6/tree/main/deploy/ONNX



单击YOLOv6-s,可直接下载yolov6s.onnx

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

1、下载并安装YOLOv6所依赖的库

https://github.com/meituan/YOLOv6中下载YOLOv6源码并解压



在YOLOv6-main文件夹中打开cmd,输入以下指令安装需要的库:

pip3 install -U pip && pip3 install -r requirements.txt

注意:YOLOv6比V5多了一个addict库,如果之前已经安装过了YOLOv5的相关库,也可以只下载一个addict

2、安装pycocotools

pip install pycocotools

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

pip install pycocotools-windows

3、从基准表下载标准预训练模型

https://github.com/meituan/YOLOv6



将模型放置到如下路径”\YOLOv6-main\”



4、将标准模型pt转化为onnx

切换到YOLOv6-main文件夹路径下,运行以下指令实现模型的转换

python ./deploy/ONNX/export_onnx.py --weights yolov6s.pt --img 640 --batch 1

输出如下,得到yolov6s.onnx

四、在LabVIEW实现YOLOV6的部署推理

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

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

1、查看模型

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



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

我们发现,该模型输出和YOLOx输出一直,均为1x8400x85

2、项目运行

将我们已经转化好的onnx模型放置到model文件夹中,打开yolov6_onnx_camera.vi,在前面板中修改程序中加载的模型路径为实际模型路径,本项目中已经将YOLOV6 onnx模型【yolov6s.onnx】放置到了model文件夹中,如需其他模型,读者也可自行放置到model文件及下,实现模型的加载。运行程序,可得到目标检测的结果。

  • 主程序源码如下(可以选择使用CUDA或者TensorRT进行推理加速):

  • 运行结果如下:


五、完整项目下载链接

链接:https://blog.csdn.net/virobotics/article/details/126356929?spm=1001.2014.3001.5501

总结

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

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

**如果文章对你有帮助,欢迎关注、点赞、收藏

YOLOv6在LabVIEW中的推理部署(含源码)的更多相关文章

  1. WinForm中使用DDE技术(含源码)

    提起DDE技术,相信很多人不知道是啥东东,尤其是90后的程序员们.不过,有时候这个东西还是有用处的,用一句话可以总结:实现Winform程序间的通信.比如:两个Winform程序A和B需要实现通信,用 ...

  2. WinForm中播放视频示例(含源码)

    1背景 这几天一老友要求我做个小软件,在WinForm播放视频.印象中微软有个WM控件直接可以使用,晚上研究下 2实现方式 2.1微软草根 最简单的方式,是直接使用微软的WM控件,也是通过COM方式集 ...

  3. WinFom中经典小游戏(含源码)

    最近整理了若干经典的小游戏,无聊时可以打发时间.程序本身不大,练手非常不错,主要是GDI编程,主界面地址如下图所示 源码下载方式 1,关注微信公众号:小特工作室(也可直接扫描签名处二维码) 2,发送: ...

  4. c++实现游戏开发中常用的对象池(含源码)

    c++实现游戏开发中常用的对象池(含源码) little_stupid_child2017-01-06上传   对象池的五要素: 1.对象集合 2.未使用对象索引集合 3.已使用对象索引集合 4.当前 ...

  5. Fabric2.2中的Raft共识模块源码分析

    引言 Hyperledger Fabric是当前比较流行的一种联盟链系统,它隶属于Linux基金会在2015年创建的超级账本项目且是这个项目最重要的一个子项目.目前,与Hyperledger的另外几个 ...

  6. C++ JsonCpp 使用(含源码下载)

    C++ JsonCpp 使用(含源码下载) 前言 JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择JSON的全称为:JavaScri ...

  7. 微信公众平台开发-OAuth2.0网页授权(含源码)

    微信公众平台开发-OAuth2.0网页授权接口.网页授权接口详解(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 在微信开发的高级应用中,几乎都会使用到该接口,因为通过该接口,可以获 ...

  8. 微信公众平台开发-access_token获取及应用(含源码)

    微信公众平台开发-access_token获取及应用(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 很多系统中都有access_token参数,对于微信公众平台的access_to ...

  9. 微信公众平台开发-微信服务器IP接口实例(含源码)

    微信公众平台开发-access_token获取及应用(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 学习了access_token的获取及应用后,正式的使用access_token ...

  10. jQuery使用():Deferred有状态的回调列表(含源码)

    deferred的功能及其使用 deferred的实现原理及模拟源码 一.deferred的功能及其使用 deferred的底层是基于callbacks实现的,建议再熟悉callbacks的内部机制前 ...

随机推荐

  1. ByteHouse云数仓版查询性能优化和MySQL生态完善

    ByteHouse云数仓版是字节跳动数据平台团队在复用开源 ClickHouse runtime 的基础上,基于云原生架构重构设计,并新增和优化了大量功能.在字节内部,ByteHouse被广泛用于各类 ...

  2. RTSP Server(LIVE555)源码分析(二)-服务器创建

    一. 设置RTSP服务器配置 步骤1.5:rtspServer_Init--->BasicTaskScheduler::createNew()时序图如下: 1)步骤1.54,BasicTaskS ...

  3. C# 无需管理员权限提示,操作C盘文件

    在C盘创建.移动文件,如果当前不是管理员身份,是没办法直接操作. 如果当前程序有管理员权限,那可以直接操作. 但是,添加管理员权限启动,会弹出用户确认提示框. 在某些场景下,其实是不想让用户看到这样的 ...

  4. sqlmap安全测试工具使用简介

    SQLmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL,Oracle,PostgreSQL,Microsoft  SQL  S ...

  5. 文章学习:TPRE:分布式门限代理重加密

    学习文章:TPRE:分布式门限代理重加密 前言 成方金科新技术实验室与隐语团队合作,构建了"基于国密的分布式门限代理重加密算法TPRE",为用户提供了一种安全.高效.自主可控的数据 ...

  6. Codeforces Round #844 (Div. 1 + Div. 2, based on VK Cup 2022 - Elimination Round) 小记

    在机房其它人都有许多的橙名小号后我终于大号上橙了(果然还是太菜了),写篇博客记录一下. 计数水平太弱,赛场最后 5 分钟乱糊了一个 F 的做法,后来发现其它人做法都短好多. A & B &am ...

  7. 逍遥自在学C语言 | 条件控制的正确使用姿势

    前言 在C语言中,有三种条件判断结构:if语句.if-else语句和switch语句. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白 ...

  8. 2.OS-Virtualization|抽象:进程

    进程:运行中的程序. 没有运行前,就是一个代码,他是静态的. 通过一系列抽象,有了状态. 通过进程抽象,我们需要明白计算机设计的一些思考点:如何分离?如何管理?如何抽象? 运行 就绪 阻塞 它就是一个 ...

  9. 2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n <= 3 * 10^5, 0 <= 数值

    2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组. n <= 3 * 10^5, 0 &l ...

  10. 2021-05-03:给定一个非负整数num, 如何不用循环语句, 返回>=num,并且离num最近的,2的某次方 。

    2021-05-03:给定一个非负整数num, 如何不用循环语句, 返回>=num,并且离num最近的,2的某次方 . 福大大 答案2021-05-03: 32位整数,N=32. 1.非负整数用 ...