|
本帖最后由 z13228604287 于 2022-8-24 21:09 编辑
yolo-fastestV2版本已发布:[color=var(--color-accent-fg)]https ://github.com/dog-qiuqiu/Yolo-FastestV2
- 简单、快速、紧凑、易于移植
- 资源占用少,单核性能出色,功耗更低
- 更快更小:以 0.3% 的精度损失换取推理速度提高 30%,参数量减少 25%
- 训练速度快,算力要求低,训练只需要3GB显存,gtx1660ti训练COCO 1个epoch只需要4分钟
窗口程序集名 | 保 留 | 保 留 | 备 注 | YOLO_Fast | | | 变量名 | 类 型 | 数组 | 备 注 | 锚 | 小数型 | 2,6 | 步 | 小数型 | 0 | 输入宽 | 整数型 | | 输入高 | 整数型 | | 阶段数 | 整数型 | | 锚数 | 整数型 | | 对象阈值 | 小数型 | | 置信阈值 | 小数型 | | 抑制阈值 | 小数型 | | 类名数组 | 文本型 | 0 | 类名数 | 整数型 | | 网络 | 网络类 | |
锚 [1 ] [1 ] = 12.64 锚 [1 ] [2 ] = 19.39 锚 [1 ] [3 ] = 37.88 锚 [1 ] [4 ] = 51.48 锚 [1 ] [5 ] = 55.71 锚 [1 ] [6 ] = 138.31 锚 [2 ] [1 ] = 126.91 锚 [2 ] [2 ] = 78.23 锚 [2 ] [3 ] = 131.57 锚 [2 ] [4 ] = 214.55 锚 [2 ] [5 ] = 279.92 锚 [2 ] [6 ] = 258.87 步 = { 16, 32 }类名数组 = 分割文本 ( #coco, #换行符, )类名数 = 取数组成员数 (类名数组 )输入宽 = 352 输入高 = 352 阶段数 = 2 锚数 = 3 |
初始化 | | | |
模型路径 | 文本型 | | | | 对象_阈值 | 小数型 | | | | 置信_阈值 | 小数型 | | | | 抑制_阈值 | 小数型 | | | |
对象阈值 = 对象_阈值 置信阈值 = 置信_阈值 抑制阈值 = 抑制_阈值 网络 = 视觉_读取网络 (模型路径, , “”)变量名 | 类 型 | 静态 | 数组 | 备 注 | 预处理 | 多维矩阵类 | | | 输出数组 | 多维矩阵类 | | 0 | 类ID数组 | 整数型 | | 0 | 置信度数组 | 小数型 | | 0 | 预测框数组 | 矩形2i类 | | 0 | 高系数 | 小数型 | | | 宽系数 | 小数型 | | | n | 整数型 | | | q | 整数型 | | | i | 整数型 | | | j | 整数型 | | | 步进 | 整数型 | | | 行 | 整数型 | | | 数据指针 | 小数型指针类 | | | X网格数 | 整数型 | | | Y网格数 | 整数型 | | | 分 | 多维矩阵类 | | | 类ID位置 | 点2i类 | | | 最大类得分 | 双精度小数型 | | | 锚_宽 | 小数型 | | | 锚_高 | 小数型 | | | 预测框分 | 小数型 | | | 中心X | 小数型 | | | 中心Y | 小数型 | | | 宽 | 小数型 | | | 高 | 小数型 | | | 左 | 小数型 | | | 顶 | 小数型 | | | 抑制数组 | 整数型 | | 0 | 目标ID | 整数型 | | | 目标预测框 | 矩形2i类 | | | 频率 | 双精度小数型 | | | 时间 | 双精度小数型 | | | 网络层计时数组 | 双精度小数型 | | 0 | 标签 | 文本型 | | |
预处理 = 视觉_图像前景目标 (输入图, 1 ÷ 255, 尺寸2i (输入宽, 输入高 ), , 假, 假, 5 )网络. 设置输入 (预处理, “”, 1, )网络. 前向计算V (输出数组, 网络. 获取未连接的输出层名称 ()) 高系数 = 输入图. 行数 () ÷ 输入高 宽系数 = 输入图. 列数 () ÷ 输入宽 步进 = 锚数 × 5 + 取数组成员数 (类名数组 )数据指针.指针 = 输出数组 [1 ]. 数据指针 ()计次循环首 (阶段数, n )X网格数 = 输入宽 ÷ 步 [n ]Y网格数 = 输入高 ÷ 步 [n ]变量循环首 (0, Y网格数 - 1, 1, i )变量循环首 (0, X网格数 - 1, 1, j )分 = 输出数组 [1 ]. 行 (行 ). 列范围 (锚数 × 5, 输出数组 [1 ]. 列数 ()) 视觉_最小最大位置 (分, , 最大类得分, , 类ID位置, )变量循环首 (0, 锚数 - 1, 1, q )锚_宽 = 锚 [n ] [q × 2 + 1 ]锚_高 = 锚 [n ] [q × 2 + 2 ]预测框分 = 数据指针. 读 (4 × 锚数 + q )如果真 (预测框分 > 对象阈值 且 最大类得分 > 置信阈值 )中心X = (数据指针. 读 (4 × q ) × 2 - 0.5 + j ) × 步 [n ]中心Y = (数据指针. 读 (4 × q + 1 ) × 2 - 0.5 + i ) × 步 [n ]宽 = 求次方 (数据指针. 读 (4 × q + 2 ) × 2, 2 ) × 锚_宽 高 = 求次方 (数据指针. 读 (4 × q + 3 ) × 2, 2 ) × 锚_高 左 = (中心X - 0.5 × 宽 ) × 宽系数 顶 = (中心Y - 0.5 × 高 ) × 高系数 加入成员 (类ID数组, 类ID位置.左边 )加入成员 (置信度数组, 预测框分 × 最大类得分 )加入成员 (预测框数组, 矩形2i (左, 顶, 宽 × 宽系数, 高 × 高系数 )) 变量循环尾 ()行 = 行 + 1 数据指针. 偏移 (步进 )变量循环尾 ()变量循环尾 ()计次循环尾 ()视觉_非最大抑制 (预测框数组, 置信度数组, 置信阈值, 抑制阈值, 抑制数组, 1, 0 )计次循环首 (取数组成员数 (抑制数组 ), i )目标ID = 抑制数组 [i ] + 1 目标预测框 = 预测框数组 [目标ID ]绘制预测 (类ID数组 [目标ID ], 置信度数组 [目标ID ], 目标预测框.左边, 目标预测框.顶边, 目标预测框.左边 + 目标预测框.宽度, 目标预测框.顶边 + 目标预测框.高度, 输入图 )计次循环尾 ()频率 = 视觉_获取滴答频率 () ÷ 1000 时间 = 网络. 视觉_获取性能 (网络层计时数组 ) ÷ 频率 标签 = “Yolo-FastestV2 Inference time :” + 到文本 (四舍五入 (时间, 2 )) + “ms”视觉_放置文本 (输入图, 标签, 点2i (0, 20 ), #字体_衬线_简单, 0.5, 标量 (0, 0, 255 ), 1, 8, 假)|
绘制预测 | | | |
类ID | 整数型 | | | | 置信度 | 小数型 | | | | 左 | 整数型 | | | | 顶 | 整数型 | | | | 右 | 整数型 | | | | 底 | 整数型 | | | | 输入图 | 多维矩阵类 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 基线 | 整数型 | | | 标签尺寸 | 尺寸2i类 | | | 标签 | 文本型 | | | 视觉_矩形P (输入图, 点2i (左, 顶 ), 点2i (右, 底 ), 标量 (0, 0, 255 ), 3, 8, 0 ) 标签 = 到文本 (四舍五入 (置信度, 2 )) 类ID = 类ID + 1 标签 = 类名数组 [类ID ] + “:” + 标签 标签尺寸 = 视觉_获取文本尺寸 (标签, #字体_衬线_简单, 0.5, 1, 基线 )顶 = 视觉_取最大值 (顶, 标签尺寸.高 ) 视觉_放置文本 (输入图, 标签, 点2i (左, 顶 ), #字体_衬线_简单, 0.75, 标量 (0, 255, 0 ), 1, 8, 假)
窗口程序集名 | 保 留 | 保 留 | 备 注 | YOLO_Fastestv2 | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | YOLO_Fastv2 | YOLO_Fast | | | imgpath | 文本型 | | | srcimg | 多维矩阵类 | | | kWinName | 文本型 | | |
YOLO_Fastv2. 初始化 (“C:\Users\hanyo\Desktop\yolo-fastestv2-opencv-main\model.onnx”, 0.3, 0.3, 0.4 )imgpath = “C:\Users\hanyo\Desktop\yolo-fastestv2-opencv-main\img\000181.jpg”srcimg = 视觉_图像读取 (imgpath, 1 )YOLO_Fastv2. 检测识别 (srcimg )kWinName = “易语言 深度学习对象检测”视觉_创建窗口 (kWinName, #窗口_标准 )视觉_显示图像 (kWinName, srcimg )视觉_等待按键 (0 )视觉_销毁所有窗口 ()返回 (0 )
|
|