|
本帖最后由 kfggll 于 2023-12-9 22:38 编辑
易语言Yolov5多线程调用,无需安装环境到系统盘,下载一键训练。免环境GPU识别,识别只要一个DLL,无需环境!方便传输应用~
使用流程:概念理解
首先需要收集数据集(就是我们的图片以及标注文件)
[size=18.6667px]============================================
[size=18.6667px]什么是数据集?
[size=18.6667px]任何版本的YOLO版本首先必须要有数据集
[size=18.6667px]数据集是由图片与标注文件组合而成的。
[size=18.6667px]图片指的是:使用截图工具获取目标窗口或者屏幕某个区域的截图图片。
[size=18.6667px]标注文件指的是:从获取的图片中,使用工具标注出你想要识别的指定目标。
[size=18.6667px]================================================
指定数据集用训练框架训练获得.pt模型
[size=18.6667px]================================================
[size=18.6667px]什么是训练?
[size=18.6667px]可以理解为让机器通过数据集进行学习,知道那些是目标那些是背景。
[size=18.6667px]最后总结生成出一个后缀名为.pt的模型文件。
[size=18.6667px]======================================
然后使用离火综合工具模型转换,.pt模型转为.bin、.param、.names模型
[size=18.6667px]======================================
[size=18.6667px]为什么要转换模型?
[size=18.6667px]因为用CPU进行识别会非常慢,想要增加识别速度,
[size=18.6667px]就需要用到GPU加速识别,也就是用常说的显卡识别。
[size=18.6667px]然而后缀名为.pt的模型文件只支持N卡(英伟达)显卡的GPU加速,
[size=18.6667px]A卡与集成显卡无法使用后缀名为.pt的模型文件进行GPU加速。所以兼容行比较小。
[size=18.6667px]我们要将后缀名为.pt的模型文件,转换为后缀名为 .lh 的模型文件。
[size=18.6667px]这样就可以兼容N卡,A卡以及集成显卡进行GPU加速识别了。扩大了兼容性。
[size=18.6667px]--------------------------------------------------------------------
[size=18.6667px]训练模型与识别不同,训练想要GPU加速则必须有N卡(英伟达)显卡。
[size=18.6667px]否则无法GPU加速训练,只能用CPU训练(训练速度很慢)。
[size=18.6667px]
用离火模块加载模型,使用命令识别目标,返回目标的名称坐标信息等
N卡算力表
训练框架如果用GPU加速,则必须是N卡,GTX750ti以上,显存2G以上,算力5.0以上
如果是A卡或者其他算力较低的显卡,则下载CPU框架使用CPU训练
离火模块加载模型支持CPU、GPU识别,有核显或A卡或N卡就可以使用GPU识别,速度更快
注意:
如果机器无法启动训练或无法成功使用离火模块(特别是一些精简版系统或者新系统可能会缺少运行库dll之类的)
不过没关系,这种情况可以下载网盘【修复工具】目录里的工具一键修复
安装微软常用运行库、使用YOLO修复工具一键修复
下载地址:https://www.123pan.com/s/98SqVv-A2ol.html
l 离火综合工具 l YOLOv5训练框架 1、训练框架的说明
1.1 下载一个框架像RTX30等新架构显卡已不支持CUDA10,请直接下载CUDA11.3使用
显卡最低要求N卡:750Ti以上 | 显存:2G以上 | 算力:5.0以上
如果是A卡或者其他算力较低的显卡则下载CPU框架使用CPU训练
==============================
什么是训练框架?
训练框架指的就是常说的,需要安装到系统里的【训练环境】(不推荐)
占用C盘空间,也就是占用系统盘空间。
那么使用【离火插件】不需要你去给系统里安装那些复杂的训练环境。
因为已经把所需要的环境文件都整理打包好了。
所以不需要你自己再去安装【训练环境】到系统盘中。
直接下载打包好的训练框架到任何磁盘分区中,即可正常使用。
==============================================
1.2 优先选择CUDA11.3CUDA11.3训练框架兼容显卡型号多
CUDA11.3版本的训练框架除了1660、1650等不支持,其余显卡都支持
1660、1650等显卡使用CUDA10.2
像750ti、1080这些显卡其实CUDA10.2、CUDA11.3均支持
=============================================
在网盘中下载框架:
打开网盘会看到三个训练框架,分别是CPU、CUDA10、CUDA11。
CUDA是显卡厂商NVIDIA(英伟达)推出的运算平台。
该框架使GPU能够快速解决复杂的计算问题。
根据自己机器的显卡配置,选择其中一个框架,进行使用即可。
=======================================
训练框架选择:
=======================================
使用CPU框架训练
A卡、集成显卡或者达不到要求的N卡(不推荐,训练速度很慢)
=======================================
使用CUDA10框架训练
1、首先N卡显卡驱动版本大于等于441.22
2、不支持范围:RTX30以上系列。例如:3060、4060等。30、40开头或者更高的系列。
3、支持范围:RTX30以下系列都支持。例如:750、960、10或20等开头的系列。
========================================
使用CUDA11框架训练
1、首先N卡显卡驱动版本大于等于465.89
2、不支持范围:GTX16系列。例如:1660、1650等。16开头的显卡系列
3、支持范围:除了GTX16系列以外,N卡系列都支持。
========================================
注:
1、如果N卡显卡驱动版本自动升级不到最低版本要求,
则是系统版本过于老旧,需要更换版本较新的系统。
2、只要Yolo版本相同,用任何框架训练出来的模型都是一样的通用的。
=======================================
1.3 显卡驱动的要求CUDA11.3版本训练框架要求N卡驱动版本大于等于465.89
CUDA10.2版本训练框架要求N卡驱动版本大于等于441.22
=====================================================
易语言Yolo多线程调用例子:
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | lh | 离火插件 | 3 | 离火AI插件注册 (“注册码”)按钮_加载多模型.禁止 = 真 计次循环首 (3, i )启动线程 (&多模型加载, i, )计次循环尾 ()按钮_卸载模型.禁止 = 假 按钮_加载多模型.禁止 = 真 按钮_多线程识别.禁止 = 真 按钮_卸载模型.禁止 = 真 标签1.标题 = “加载中请稍等”调试输出 (“开始加载第” + 到文本 (i ) + “个模型”)CoInitializeEx (0, 0 ) lh [i ]. 创建 ()调试输出 (“离火插件第” + 到文本 (i ) + “个创建取版本号:” + 到文本 (lh [i ]. 取版本号 ()) )ret = lh [i ]. yolov5_加载模型 (1, 0, #param, #bin, #names, ) 判断开始断 (i = 1 ) . . 如果 (ret = 1 )调试输出 (“第” + 到文本 (i ) + “模型加载成功”)按钮_卸载模型.禁止 = 假 按钮_多线程识别.禁止 = 假 标签1.标题 = “模型加载成功”调试输出 (“第” + 到文本 (i ) + “模型加载失败,错误代码:” + 到文本 (ret )) 按钮_加载多模型.禁止 = 假 按钮_卸载模型.禁止 = 真 标签1.标题 = “模型加载失败”启动线程 (&识别一号模型, , ) 启动线程 (&识别二号模型, , ) 启动线程 (&识别三号模型, , ) 变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_目标数 | 整数型 | | | 局_图片路径 | 文本型 | | | 局_结果数组 | yolo结果 | | 0 | 局_结果文本 | 文本型 | | | 局_耗时 | 文本型 | | | i | 整数型 | | | 计次循环首 (5, )局_图片路径 = 取运行目录 () + “\bus.jpg”局_目标数 = lh [1 ]. yolov5_识别路径 (局_图片路径, 0.2, 640, 640, 局_结果数组, 局_结果文本, 局_耗时 ) 调试输出 (“一号模型”, “【检测到” + 到文本 (局_目标数 ) + “个目标】” + “【耗时” + 局_耗时 + “ms】”)计次循环首 (取数组成员数 (局_结果数组 ), i )调试输出 (“第” + 到文本 (i ) + “目标ID:” + 到文本 (局_结果数组 [i ].obj_id ), “目标名字:” + 局_结果数组 [i ].name, “目标X:” + 到文本 (局_结果数组 [i ].x ), “目标X:” + 到文本 (局_结果数组 [i ].y ), “目标宽度:” + 到文本 (局_结果数组 [i ].w ), “目标高度:” + 到文本 (局_结果数组 [i ].h )) 计次循环尾 ()计次循环尾 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_目标数 | 整数型 | | | 局_图片 | 字节集 | | | 局_结果数组 | yolo结果 | | 0 | 局_结果文本 | 文本型 | | | 局_耗时 | 文本型 | | | i | 整数型 | | | 计次循环首 (5, )局_图片 = 读入文件 (取运行目录 () + “\bus.jpg”)局_目标数 = lh [2 ]. yolov5_识别图片 (局_图片, 0.2, 640, 640, 局_结果数组, 局_结果文本, 局_耗时 ) 调试输出 (“二号模型”, “【检测到” + 到文本 (局_目标数 ) + “个目标】” + “【耗时” + 局_耗时 + “ms】”)计次循环首 (取数组成员数 (局_结果数组 ), i )调试输出 (“第” + 到文本 (i ) + “目标ID:” + 到文本 (局_结果数组 [i ].obj_id ), “目标名字:” + 局_结果数组 [i ].name, “目标X:” + 到文本 (局_结果数组 [i ].x ), “目标X:” + 到文本 (局_结果数组 [i ].y ), “目标宽度:” + 到文本 (局_结果数组 [i ].w ), “目标高度:” + 到文本 (局_结果数组 [i ].h )) 计次循环尾 ()计次循环尾 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_目标数 | 整数型 | | | 局_图片 | 字节集 | | | 局_结果数组 | yolo结果 | | 0 | 局_结果文本 | 文本型 | | | 局_耗时 | 文本型 | | | i | 整数型 | | | 计次循环首 (5, )局_图片 = #测试图片 局_目标数 = lh [3 ]. yolov5_识别图片 (局_图片, 0.2, 640, 640, 局_结果数组, 局_结果文本, 局_耗时 ) 调试输出 (“三号模型”, “【检测到” + 到文本 (局_目标数 ) + “个目标】” + “【耗时” + 局_耗时 + “ms】”)计次循环首 (取数组成员数 (局_结果数组 ), i )调试输出 (“第” + 到文本 (i ) + “目标ID:” + 到文本 (局_结果数组 [i ].obj_id ), “目标名字:” + 局_结果数组 [i ].name, “目标X:” + 到文本 (局_结果数组 [i ].x ), “目标X:” + 到文本 (局_结果数组 [i ].y ), “目标宽度:” + 到文本 (局_结果数组 [i ].w ), “目标高度:” + 到文本 (局_结果数组 [i ].h )) 计次循环尾 ()计次循环尾 ()lh [1 ]. yolov5_卸载模型 () lh [2 ]. yolov5_卸载模型 () lh [3 ]. yolov5_卸载模型 () 按钮_加载多模型.禁止 = 假 按钮_卸载模型.禁止 = 真 计次循环首 (3, i )lh [i ]. yolov5_卸载模型 ()计次循环尾 ()
注:
这个是收费软件:每台机器1天1毛,不是免费的!!
离火插件网址:https://www.lihuochajian.com
B站视频链接:https://space.bilibili.com/3546586762185124
网盘下载地址:https://www.123pan.com/s/98SqVv-A2ol.html
|
|