|
本帖最后由 z13228604287 于 2022-8-2 09:13 编辑
简单说明
使用OpenCV、部署YOLOV7目标检测,一共包含12个onnx模型,易语言程序实现 需要OPENCV 支持库。
由于onnx文件太多,无法直接上传到论坛里,需要从百度云盘下载,
链接:https://pan.baidu.com/s/1VSYkILerRQsoDiIhl-6eTQ 提取码:4ypk
YOLOV7的训练源码是:
https://github.com/WongKinYiu/yolov7
详细实现代码如下:
窗口程序集名 | 保 留 | 保 留 | 备 注 | YOLOV7, , 公开, 1.0版本 | | | | 变量名 | 类 型 | 数组 | 备 注 | 网络宽 | 整数型 | | 网络高 | 整数型 | | 类名 | 字节集 | 0 | 类数 | 整数型 | | 置信阈值 | 小数型 | | 非最大抑制阈值 | 小数型 | | 网络 | 网络类 | |
置信阈值 = 0.3 非最大抑制阈值 = 0.5 网络高 = 480 网络宽 = 640 网络 = 视觉_读取网络 (模型, “”, “”)类名 = 分割字节集 (读入文件 (类名 ), { 10 }, )类数 = 取数组成员数 (类名 )变量名 | 类 型 | 静态 | 数组 | 备 注 | 密保 | 多维矩阵类 | | | 输出 | 多维矩阵类 | | 0 | 结果_数 | 整数型 | | | N输出 | 整数型 | | | 位移长度 | 整数型 | | | 高比率 | 小数型 | | | 宽比率 | 小数型 | | | 计次 | 整数型 | | | 行_位置 | 整数型 | | | 小数指针 | 整数型 | | | 预测框分数 | 小数型 | | | 分数 | 多维矩阵类 | | | 最大类分数 | 双精度小数型 | | | 类ID位置 | 点2i类 | | | 类_ID | 整数型 | | | 中心X | 小数型 | | | 中心y | 小数型 | | | 宽 | 小数型 | | | 高 | 小数型 | | | 左边 | 整数型 | | | 顶边 | 整数型 | | | 置信度数组 | 小数型 | | 0 | 预测框数组 | 矩形2i类 | | 0 | 类ID数组 | 整数型 | | 0 | 抑制索引 | 整数型 | | 0 | 类ID | 整数型 | | | 预测框 | 矩形2i类 | | |
密保 = 视觉_图像前景目标 (图, 1 ÷ 255, 尺寸2i (网络宽, 网络高 ), , 真, 假, 5 )网络. 设置输入 (密保, “”, 1, )网络. 前向计算V (输出, 网络. 获取未连接的输出层名称 ()) 结果_数 = 输出 [1 ]. 维度元素数 (0 )N输出 = 输出 [1 ]. 维度元素数 (1 )如果真 (输出 [1 ]. 维度 () > 2 )结果_数 = 输出 [1 ]. 维度元素数 (1 )N输出 = 输出 [1 ]. 维度元素数 (2 )输出 [1 ] = 输出 [1 ]. 重塑 (0, 结果_数 )高比率 = 图. 行数 () ÷ 网络高 宽比率 = 图. 列数 () ÷ 网络宽 小数指针 = 输出 [1 ]. 数据指针 ()位移长度 = N输出 × 4 计次循环首 (结果_数, 计次 )预测框分数 = 指针到小数 (小数指针 + 16 )如果真 (预测框分数 > 置信阈值 )分数 = 输出 [1 ]. 行 (行_位置 ). 列范围 (5, N输出 ) 视觉_最小最大位置 (分数, , 最大类分数, , 类ID位置, )最大类分数 = 最大类分数 × 预测框分数 如果真 (最大类分数 > 置信阈值 )类_ID = 类ID位置.左边 中心X = 指针到小数 (小数指针 ) × 宽比率 中心y = 指针到小数 (小数指针 + 4 ) × 高比率 宽 = 指针到小数 (小数指针 + 8 ) × 宽比率 高 = 指针到小数 (小数指针 + 12 ) × 高比率 左边 = 中心X - 0.5 × 宽 顶边 = 中心y - 0.5 × 高 加入成员 (置信度数组, 最大类分数 )加入成员 (预测框数组, 矩形2i (左边, 顶边, 宽, 高 )) 加入成员 (类ID数组, 类_ID )行_位置 = 行_位置 + 1小数指针 = 小数指针 + 位移长度 计次循环尾 () 视觉_非最大抑制 (预测框数组, 置信度数组, 置信阈值, 非最大抑制阈值, 抑制索引, 1, 0 )计次循环首 (取数组成员数 (抑制索引 ), 计次 )类ID = 抑制索引 [计次 ]预测框 = 预测框数组 [类ID + 1 ]绘制结果 (置信度数组 [类ID ], 预测框.左边, 预测框.顶边, 预测框.左边 + 预测框.宽度, 预测框.顶边 + 预测框.高度, 图, 类ID数组 [类ID ])计次循环尾 ()|
绘制结果 | | | |
自信度 | 小数型 | | | | 左边 | 整数型 | | | | 顶边 | 整数型 | | | | 右边 | 整数型 | | | | 底边 | 整数型 | | | | 图 | 多维矩阵类 | | | | 类ID | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 标签 | 文本型 | | | 标签尺寸 | 尺寸2i类 | | | 基线 | 整数型 | | | 视觉_矩形1 (图, 点2i (左边, 顶边 ), 点2i (右边, 底边 ), 标量 (0, 0, 255 ), 2, 0, 0 )标签 = 到文本 (类名 [类ID + 1 ]) + “:” + 到文本 (自信度 )标签尺寸 = 视觉_获取文本尺寸 (标签, #字体_衬线_简单, 0.5, 1, 基线 )顶边 = 视觉_取最大值 (顶边, 标签尺寸.高 )视觉_放置文本 (图, 标签, 点2i (左边, 顶边 ), #字体_衬线_简单, 0.75, 标量 (0, 255, 0 ), 1, 8, 假) 窗口程序集名 | 保 留 | 保 留 | 备 注 | 程序集1 | | | | 变量名 | 类 型 | 数组 | 备 注 | 配置 | 网络_配置 | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 网络 | YOLOV7 | | | srcimg | 多维矩阵类 | | | 计时 | 长整数型 | | |
网络. 初始化 (“C:\Users\hanyo\Desktop\yolov7-tiny_480x640.onnx”, “E:\OPENCV\YOLO4\darknet-master\build\darknet\x64\data\coco.names”)srcimg = 视觉_图像读取 (“C:\Users\hanyo\Desktop\YOLO-v6.0\YOLO5_测试模型\dog.jpg”, #读图_彩色 )计时 = 视觉_取启动时间 ()网络. 检测 (srcimg )调试输出 (“耗时:”, 视觉_取启动时间差异 (计时, 0 )) 视觉_创建窗口 (“OpenCV YOLO7 调用测试”, #窗口_标准 )视觉_显示图像 (“OpenCV YOLO7 调用测试”, srcimg )视觉_等待按键 (0 )视觉_销毁所有窗口 ()返回 (0 )
|
|