开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

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

[技术专题] 易语言 YOLOX v1.0 目标检测

[复制链接]
结帖率:87% (79/91)
发表于 2022-8-7 10:46:46 | 显示全部楼层 |阅读模式   江苏省苏州市
logo.png
  • 论文地址:https://arxiv.org/abs/2107.08430
  • 项目地址:https://github.com/Megvii-BaseDetection/YOLOX


QQ图片20220807104442.png
  
窗口程序集名保 留  保 留备 注
yolox, , 公开   
变量名类 型数组备 注
stride整数型3 
输入_尺寸整数型2 
平均小数型3 
标准小数型3 
置信阈值小数型  
抑制阈值小数型  
类数整数型  
DNN网络网络类  
类名数组字节集0 

子程序名返回值类型公开备 注
_初始化 当基于本类的对象被创建后,此方法会被自动调用
stride = { 8, 16, 32 }
输入_尺寸 = { 640, 640 }  ' //// height, width
平均 = { 0.485, 0.456, 0.406 }
标准 = { 0.229, 0.224, 0.225 }
类名数组 = 分割字节集 (读入文件 (“C:\Users\hanyo\Desktop\yolox-opencv-dnn-main\coco.names”), { 10 }, )
类数 = 取数组成员数 (类名数组)
子程序名返回值类型公开备 注
_销毁 当基于本类的对象被销毁前,此方法会被自动调用

子程序名返回值类型公开备 注
初始化 
参数名类 型参考可空数组备 注
模型路径文本型
配置阈值小数型
NMS制阈值小数型
置信阈值 = 配置阈值
抑制阈值 = NMS制阈值
DNN网络 = 视觉_读取网络 (模型路径, , “”)
子程序名返回值类型公开备 注
识别 
参数名类 型参考可空数组备 注
输入图多维矩阵类
变量名类 型静态数组备 注
尺度小数型 
输出图多维矩阵类 
前景目标多维矩阵类 
输出s多维矩阵类0
提取数量整数型 
高比率小数型 
宽比率小数型 
n整数型 
i整数型 
j整数型 
数t整数型 
row_ind整数型 
指针小数型指针类 
网格_x数整数型 
网格_y数整数型 
预测_分数小数型 
分数多维矩阵类 
类ID坐标点2i类 
最大类分数双精度小数型 
类_idx整数型 
类_分数小数型 
预测_概率小数型 
中心X小数型 
中心Y小数型 
w小数型 
h小数型 
x0小数型 
y0小数型 
类ID集整数型0
置信度集小数型0
预测框集矩形2i类0
抑制索引整数型0
索引整数型 
预测框矩形2i类 
左上角X小数型 
左上角Y小数型 
有下角X小数型 
有下角Y小数型 
标签文本型 
标签尺寸尺寸2i类 
基线坐标整数型基线相对于最底部文本的 y 坐标
尺度 = 1
输出图 = 调整大小图像 (输入图, 尺度)
归一化 (输出图)
前景目标 = 视觉_图像前景目标 (输出图, 1, , , 假, 假, 5)
DNN网络.设置输入 (前景目标, “”, 1, )
DNN网络.前向计算V (输出s, DNN网络.获取未连接的输出层名称 ())
如果真 (输出s [1].维度 () = 3)
提取数量 = 输出s [1].维度元素数 (1)
输出s [1] = 输出s [1].重塑 (0, 提取数量)
高比率 = 输入图.行数 () ÷ 输入_尺寸 [1]
宽比率 = 输入图.列数 () ÷ 输入_尺寸 [2]
数t = 取数组成员数 (类名数组) + 5
指针.指针 = 输出s [1].数据指针 ()
计次循环首 (3, n)
网格_x数 = 输入_尺寸 [2] ÷ stride [n]
网格_y数 = 输入_尺寸 [1] ÷ stride [n]
计次循环首 (网格_y数, i)
计次循环首 (网格_x数, j)
预测_分数 = 指针. (4)
分数 = 输出s [1]. (row_ind).列范围 (5, 输出s [1].列数 ())
' 获取最高分的数值和位置
视觉_最小最大位置 (分数, , 最大类分数, , 类ID坐标, )
类_idx = 类ID坐标.左边
类_分数 = 指针. (5 + 类_idx)
预测_概率 = 预测_分数 × 类_分数
如果真 (预测_概率 > 置信阈值)
' -1  修正易语言索引 1开始
中心X (指针. (0) + j - 1) × stride [n]
中心Y (指针. (1) + i - 1) × stride [n]
w = 求反对数 (指针. (2)) × stride [n]
h = 求反对数 (指针. (3)) × stride [n]
x0 = 中心X - w × 0.5
y0 = 中心Y - h × 0.5
加入成员 (类ID集, 类_idx)
加入成员 (置信度集, 预测_概率)
加入成员 (预测框集, 矩形2i (x0, y0, w, h))
指针.偏移 (数t)
row_ind = row_ind + 1
计次循环尾 ()
计次循环尾 ()
计次循环尾 ()
' // 执行非最大抑制以消除冗余重叠框
' // 降低置信度
视觉_非最大抑制 (预测框集, 置信度集, 置信阈值, 抑制阈值, 抑制索引, 1, 0)
计次循环首 (取数组成员数 (抑制索引), i)
索引 = 抑制索引 [i]
' +1补偿 易语言索引1开始
预测框 = 预测框集 [索引 + 1]
' // 将偏移量调整为原始未填充
左上角X = 预测框.左边 ÷ 尺度
左上角Y = 预测框.顶边 ÷ 尺度
有下角X (预测框.左边 + 预测框.宽度) ÷ 尺度
有下角Y (预测框.顶边 + 预测框.高度) ÷ 尺度
' // 缩减
左上角X = 视觉_取最大值 (视觉_取最小值 (左上角X, 输入图.列数 () - 1), 0)
左上角Y = 视觉_取最大值 (视觉_取最小值 (左上角Y, 输入图.行数 () - 1), 0)
有下角X = 视觉_取最大值 (视觉_取最小值 (有下角X, 输入图.列数 () - 1), 0)
有下角Y = 视觉_取最大值 (视觉_取最小值 (有下角Y, 输入图.行数 () - 1), 0)
视觉_矩形1 (输入图, 点2i (左上角X, 左上角Y), 点2i (有下角X, 有下角Y), 标量 (0, 0, 255), 2, 0, 0)
' //获取类名的标签及其置信度
标签 = 到文本 (类名数组 [类ID集 [索引 + 1] + 1])“:”到文本 (置信度集 [索引 + 1])
标签尺寸 = 视觉_获取文本尺寸 (标签, #字体_衬线_简单, 0.5, 1, 基线坐标)
左上角Y = 视觉_取最大值 (左上角Y, 标签尺寸.高)
视觉_放置文本 (输入图, 标签, 点2i (左上角X, 左上角Y), #字体_衬线_简单, 0.75, 标量 (0, 255, 0), 1, 8, )
计次循环尾 ()
子程序名返回值类型公开备 注
调整大小图像多维矩阵类 
参数名类 型参考可空数组备 注
输入图多维矩阵类
规模小数型
变量名类 型静态数组备 注
r小数型 
填充_w整数型 
填充_h整数型 
零时多维矩阵类 
输出多维矩阵类 
r = 视觉_取最小值 (输入_尺寸 [2] ÷ 输入图.列数 (), 输入_尺寸 [1] ÷ 输入图.行数 ())
规模 = r
' // r = std::min(r, 1.0f);
填充_w = r × 输入图.列数 ()
填充_h = r × 输入图.行数 ()
零时.初始化 (填充_h, 填充_w, #Cv无符号字节型_三通道, )
视觉_调整尺寸 (输入图, 零时, 零时.尺寸2i (), 0, 0, 1)
输出.初始化 (输入_尺寸 [2], 输入_尺寸 [1], #Cv无符号字节型_三通道, 标量 (114, 114, 114))
零时.复制 (输出.感兴区域 (矩形2i (0, 0, 零时.列数 (), 零时.行数 ())), )
返回 (输出)
子程序名返回值类型公开备 注
归一化  
参数名类 型参考可空数组备 注
多维矩阵类
变量名类 型静态数组备 注
i整数型 
j整数型 
指针小数型指针类 
' 2021年10月20日 后更新的 使用本DEMO 需要注释掉“BGR2RGB, 除以255.0, 减均值除以方差这几步”
视觉_颜色空间转换 (图, 图, #颜色_BGR转RGB, 0)
图.转换到 (图, #Cv小数型, 1, 0)
变量循环首 (0, 图.行数 () - 1, 1, i)
指针.指针 = 图.数据指针 () + i × 图.维度元素尺寸 (0)
变量循环首 (0, 图.列数 () - 1, 1, j)
指针. (0, (指针. (0) ÷ 255 - 平均 [1]) ÷ 标准 [1])
指针. (1, (指针. (1) ÷ 255 - 平均 [2]) ÷ 标准 [2])
指针. (2, (指针. (2) ÷ 255 - 平均 [3]) ÷ 标准 [3])
指针.偏移 (3)
变量循环尾 ()
变量循环尾 ()


i支持库列表   支持库注释   
OpenCV(未知支持库)
  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
netyolox 
预测图多维矩阵类 
net.初始化 (“C:\Users\hanyo\Desktop\yolox_s.onnx”, 0.6, 0.6)
预测图 = 视觉_图像解码 ( #预测图, #读图_彩色 )
net.识别 (预测图)
视觉_创建窗口 (“小白鼠 YOLOX Demo”, #窗口_标准 )
视觉_显示图像 (“小白鼠 YOLOX Demo”, 预测图)
视觉_等待按键 (0)
视觉_销毁所有窗口 ()
调试输出 (“完成”)
返回 (0)  ' 可以根据您的需要返回任意数值



i支持库列表   支持库注释   
OpenCV(未知支持库)
spec特殊功能支持库


结帖率:0% (0/1)
发表于 2024-8-4 11:10:22 | 显示全部楼层   河南省新乡市
666666666666666
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2024-7-21 10:01:12 | 显示全部楼层   贵州省黔西南布依族苗族自治州
法国哇嘎哇挖嘎嘎2
回复 支持 反对

使用道具 举报

签到天数: 8 天

发表于 2023-10-20 01:30:16 | 显示全部楼层   四川省眉山市

请问你是怎么在C++ DLL里面把opencv Mat图像传回易语言字节集的?C++怎么返回图像指针,用易语言整数接收然后用指针到字节集转换
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2023-10-14 16:58:09 | 显示全部楼层   江苏省徐州市
这个真是太厉害了
回复 支持 反对

使用道具 举报

发表于 2023-9-25 14:26:48 | 显示全部楼层   山东省青岛市
初春下小雪 发表于 2022-8-7 13:16
牛逼呀,还能封装给易语言用

888888888888888888888888888888888888888888888888
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2023-8-31 13:54:15 | 显示全部楼层   山东省临沂市
请问你是怎么在C++ DLL里面把opencv Mat图像传回易语言字节集的?C++怎么返回图像指针,用易语言整数接收然后用指针到字节集转换
回复 支持 反对

使用道具 举报

结帖率:86% (12/14)
发表于 2023-6-16 13:24:37 | 显示全部楼层   浙江省杭州市
请问你是怎么在C++ DLL里面把opencv Mat图像传回易语言字节集的?C++怎么返回图像指针,用易语言整数接收然后用指针到字节集转换

点评

和字体转换差不多,就是格式转换问题,这 需要你对它结构体有一定了解。   江苏省*  发表于 2023-6-16 15:41
回复 支持 反对

使用道具 举报

发表于 2022-9-20 13:09:09 | 显示全部楼层   河北省保定市
6666666666666666
回复 支持 反对

使用道具 举报

签到天数: 14 天

发表于 2022-8-28 08:34:00 | 显示全部楼层   浙江省温州市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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