开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3564|回复: 16
收起左侧

[易相关软件分享] 易语言 YOLOV5 多线程调用,无环境GPU识别!

[复制链接]
发表于 2023-12-9 21:05:12 | 显示全部楼层 |阅读模式   陕西省西安市
本帖最后由 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插件注册 (“注册码”)
子程序名返回值类型公开备 注
_按钮_加载多模型_被单击  
变量名类 型静态数组备 注
i整数型 
按钮_加载多模型.禁止 = 真
计次循环首 (3, i)
启动线程 (&多模型加载, i, )
计次循环尾 ()
按钮_卸载模型.禁止 = 假
子程序名返回值类型公开备 注
多模型加载  
参数名类 型参考可空数组备 注
i整数型
变量名类 型静态数组备 注
ret整数型 
按钮_加载多模型.禁止 = 真
按钮_多线程识别.禁止 = 真
按钮_卸载模型.禁止 = 真
标签1.标题 = “加载中请稍等”
调试输出 (“开始加载第”到文本 (i)“个模型”)
CoInitializeEx (0, 0)  ' 初始化为MTA
lh [i].创建 ()
调试输出 (“离火插件第”到文本 (i)“个创建取版本号:”到文本 (lh [i].取版本号 ()))
ret = lh [i].yolov5_加载模型 (1, 0, #param, #bin, #names, )  ' 模型导入资源表里,加载用此命令
' 同时加载不同的模型
' 例:
判断开始断 (i = 1)
' lh [i].yolov5_加载模型_从路径 (1, 0, 取运行目录()+“\一号模型.param”, 取运行目录()+“\一号模型.bin”, 取运行目录()+“\lh.names”, )
. ' 判断 (i = 2)
' lh [i].yolov5_加载模型_从路径 (1, 0, 取运行目录()+“\二号模型.param”, 取运行目录()+“\二号模型.bin”,取运行目录()+“\lh.names”, )
. ' 判断 (i = 3)
' lh [i].yolov5_加载模型 (1, 0, #三号模型, #三号模型, #三号模型, )



如果 (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_卸载模型 ()  ' 卸载第三个模型
按钮_加载多模型.禁止 = 假
按钮_卸载模型.禁止 = 真
子程序名返回值类型公开备 注
__启动窗口_将被销毁 或者循环卸载
变量名类 型静态数组备 注
i整数型 
' 或者循环卸载 例:
计次循环首 (3, i)
lh [i].yolov5_卸载模型 ()
计次循环尾 ()


i支持库列表   支持库注释   
EThread多线程支持库
spec特殊功能支持库

注:
这个是收费软件:每台机器1天1毛,不是免费的!!

离火插件网址:https://www.lihuochajian.com

B站视频链接:https://space.bilibili.com/3546586762185124
网盘下载地址:https://www.123pan.com/s/98SqVv-A2ol.html









签到天数: 5 天

发表于 2024-5-29 23:28:12 | 显示全部楼层   浙江省湖州市
  感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 4 天

发表于 2024-5-7 09:56:45 | 显示全部楼层   浙江省宁波市

感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:100% (25/25)

签到天数: 5 天

发表于 2024-5-5 20:10:34 | 显示全部楼层   广东省揭阳市
易智趣吖 发表于 2024-1-28 10:45
离火作者好像很忙平时不爱搭话的,反馈BUG也是一样。
基础的好像是一分钱一天, ...

不应该是1毛吗
回复 支持 反对

使用道具 举报

结帖率:100% (34/34)

签到天数: 8 天

发表于 2024-1-28 10:45:04 | 显示全部楼层   湖北省恩施土家族苗族自治州
离火作者好像很忙平时不爱搭话的,反馈BUG也是一样。
基础的好像是一分钱一天,
回复 支持 反对

使用道具 举报

发表于 2024-1-27 23:52:03 | 显示全部楼层   四川省甘孜藏族自治州
离火贵的飞起
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2024-1-16 20:32:16 | 显示全部楼层   山东省临沂市
呵呵 你这个代码。。。。。。
回复 支持 反对

使用道具 举报

发表于 2024-1-2 17:44:17 | 显示全部楼层   广西壮族自治区柳州市

收费的 来打广告的
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2024-1-2 16:13:01 | 显示全部楼层   河南省鹤壁市
大哥厉害
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-29 16:28:42 | 显示全部楼层   江苏省盐城市
鸿运 发表于 2023-12-28 14:13
收费的 来打广告的

是呀  最后不是说了是收费的   没说是免费的呀   本来就是打广告呀。
打广告推广送使用点数,我才能白嫖呀!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表