我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Yolov5学习全过程:训练+运行+c#部署(无理论全实操)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Yolov5学习全过程:训练+运行+c#部署(无理论全实操)

Yolov5学习全过程:训练+运行+c#部署(无理论全实操)

1.Yolov5 理论介绍

      使用一种算法前最好还是先了解它的来龙去脉,这里介绍一篇文章给大家YOLO系列详解

2.Yolov5下载地址

     我在做项目的时候主要用了两个版本的:Yolov5 5.0 和 Yolov5 6.1,至于为什么要用两种后续会说明(主要是有的问题Yolov5 5.0解决不了改用 Yolov5 6.1)。像图片中更换Tag就可以看到不同的版本啦。
     yolov5下载地址:下载地址
不同

3.Yolov5使用方法

     刚开始的时候什么都不会,python基础也不扎实,只能上哔哩哔哩看看有什么好用的资料。分享一个非常好的学习视频yolo实操视频,我就是跟着视频学的。内容包含了如何安装环境、如何打标签、如何训练、如何修改参数等等;而且在评论区留下邮箱,up的爬虫自动发送真的不要太方便!

4.制作训练样本

       网上也有很多LabelImg的资料,不过我觉得挺杂的,下面就直接分享怎么做的就好,方便大家学习。

4.1 labelImg 下载

       制作样本我是用的是labelImg,它的选框都是矩形不可调整的,我们课程项目是制作芯片样本,正方形的,所以非常适用。听同学说labelIme也可以适用,而且还能框选一些不规则的图形(还没尝试过)。
这里分享我的网盘给大家:

4.2 labelImg 注意事项

       1、我给大家的的 labelImg 是Win 10 exe版本(labelImg网盘:提取码abaa),真的非常方便,网上有的资料是github代码,还要配置环境才能运行。
       2、labelImg的exe文件路径一定要没有中文,不然会报错!报错图忘记留下来了,反正更换个路径,创建快捷方式放在桌面就好了!

4.3 labelImg 使用

(1)基本操作
打开之后进行以下操作:
①打开存放大量样本图片的文件
②修改文件保存的路径
使用介绍
       多熟悉上面的快捷键,框选起来才够快。

(2)一些其他操作
  由于我制作的样本只有一个标签‘chip’,为了以防软件总是弹出让我输入标签名字的窗口,操作②③步之后他就会自动默认所有标签都是‘chip’
在这里插入图片描述

5.C#调用yolo的可用方法

我们的任务是使用C#语言调用yolo,网上有好几种方法:

(1)导出onnx模型,c# 部署onnx分类模型。这分享一个github的代码:yolo-net-master。我一直都是在研究这一部分的,下面会详细讲讲。

(2)opencv中调用,c++转c#。网上有一篇教怎么使用opencv调用yolo onnx 模型.openCV调用YOLOv5 ONNX模型。我们后来也用这种方法,不过需要比较扎实的语言基础,通晓两种语言的转换。这一部分是我同学搞定的,我搞不赢,所以就不放别人的成果啦。感兴趣的可以试一下

(3)c#中调用python脚本。试过了,非常慢。调用前必须打开pycharm,并且保证python文件是可运行、编译无错的。调用时间大概在20s左右,不符合要求。调用代码如下:

 private void RunPythonScript(string sArgName, string args = "", params string[] teps)        {            Process p = new Process();            //string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + sArgName;// 获得python文件的绝对路径(将文件放在c#的debug文件夹中可以这样操作)            string path = @"F:\输入自己的路径\detect.py";//"H:\\python_codes\\0331test.py";            p.StartInfo.FileName = @"F:\输入自己的路径\python.exe";//没有配环境变量的话,可以像我这样写python.exe的绝对路径。如果配了,直接写"python.exe"即可            string sArguments = path;            ArrayList arrayList = new ArrayList();            //arrayList.Add("com4");            //arrayList.Add(57600);            //arrayList.Add("password");            foreach (var param in arrayList)//添加参数            {                sArguments += " " + sigstr;            }            p.StartInfo.Arguments = sArguments;//python命令的参数            p.StartInfo.UseShellExecute = false;            p.StartInfo.RedirectStandardOutput = true;            p.StartInfo.RedirectStandardInput = true;            p.StartInfo.RedirectStandardError = true;            p.StartInfo.CreateNoWindow = true;            p.Start();//启动进程            Console.ReadLine();            Console.WriteLine("执行完毕!");//查看是否执行了           }

6.C# 部署onnx分类模型(我的学习全过程)

       网上其实有很多参考资料,具体理论我不讲了,仅分享我的实现过程,里面有我踩过的坑,也有成功实现的过程,大家选着看就行。

6.1 导出 onnx 模型

       打开yolov5 5.0中的 export文件,修改以下代码,选择自己训练出来的模型路径(导出onnx前要提前配置环境,可能要下载很多东西,这部分大家就自己查资料吧~),然后运行就能导出一个onnx模型。
在这里插入图片描述
       导出后的模型大概长这样的,是带有切片的。我是下载Netron软件查看的,大家也可以直接到Netron网页查看Netron网页版本
在这里插入图片描述

6.2 yolov5-net-master使用

6.2.1使用yolov5 5.0导出模型

       这个c#文件本身是能运行的,运行结果:
在这里插入图片描述
  于是,我刚开始非常单纯的直接把他的测试图片路径和onnx文件路径改了就直接用了,所以非常顺利地报错了(报错为超出索引)。
在这里插入图片描述
在这里插入图片描述
  所以,我就读一下代码,改一下主要参数。只要大概学一下yolo框架,改起来就挺简单,就那几个参数。打开其一,使用5.0的改P5,使用6.0+的改P6。由于我刚开始时使用的是yolov5 5.0,所以我下面示范怎么改P5Models

在这里插入图片描述
  主要改的参数就这两个,其他都是默认参数,如果在python文件里面修改过其他参数的话这里就要一一对应的。                                            在这里插入图片描述
  改好之后我满怀期待,这次一定能跑了吧!于是——好的,继续报错,超出索引。好家伙,给我整不会了。后面改了好久,都是这个错误,真的要哭了。
在这里插入图片描述
  后来看了一篇教程(onnx调用相关问题),不能成功调用的原因在于Pytorch2ONNX不支持对slice对象赋值,所以我就按照教程,修改了yolo中的部分文件,再次导出yolo onnx 模型,导出的模型如下图:
在这里插入图片描述
  于是!我再次满心期待调用!依旧超出索引…晕了,这下真没辙了。这项工作也滞后了一段时间,觉得此路不通,所以我们组的其他成员就开始另谋出路,把c++代码硬转成c#来用(前面提到过的,也有放链接,我的小伙伴太强了)。
  后来,听其他组的同学汇报,他们也弄yolov5-net-master这个代码,做出来了,所以我就请教他们。和他们交流的过程中发现,他们改的参数不也和我一样吗?也没什么特别啊。所以我就开始找不同。
在这里插入图片描述

6.2.2使用yolov5 6.1导出模型

上面报了那么多次错,和同学讨论之后,我就怀疑是不是yolov5 5.0这个版本导出来的模型有问题而不能用在yolov5-net-master。于是我就吭哧吭哧下载yolov5 6.1重新训练。过程步骤都是差不多的,会5.0肯定也能搞定6.1.
在这里插入图片描述
  按照常规思路,肯定要像第一次一样,去掉onnx模型中的切片(这些上面都是有讲的)。于是去掉切片后它又又又又报错了!可怕的超出索引,又是他!
   在这里插入图片描述
  后面无意中发现,不切片就能调用!!!!!!(就是不要修改common和yolo代码了,直接用export导出onnx就行!)说的非常轻描淡写,实际探索了好久…至于为什么我也不太清楚,不过现在能用真的是谢天谢地!
不过这里要提醒一点,yolov5-net-master修改参数过程和上面讲过的是一样的,但是这次要改的是P6模型,不是P5,大家别搞错啦!
在这里插入图片描述
  最后还要再改多一个地方,就可以成功调用啦!图片识别效果不太好请见谅,还没有加大轮数训练。
在这里插入图片描述
在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_49983900/article/details/124866704

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Yolov5学习全过程:训练+运行+c#部署(无理论全实操)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录