|
变量名 | 类 型 | 静态 | 数组 | 备 注 | img_path | 文本型 | | | model_path | 文本型 | | | test | Yolo | | | net | 网络类 | | | color | 标量类 | | 0 | R | 整数型 | | | G | 整数型 | | | B | 整数型 | | | i | 整数型 | | | result | 输出 | | 0 | img | 多维矩阵类 | | |
img_path = “D:\Desktop\zidane.jpg”model_path = “D:\Desktop\yolov5n.onnx”如果 (test. 读模型 (net, model_path, 真)) 视觉_控制台输出 (“读取网络成功!”)返回 (-1 )视觉_种子_随机 (取启动时间 ())计次循环首 (80, i )B = 视觉_随机 () % 256 G = 视觉_随机 () % 256 R = 视觉_随机 () % 256 加入成员 (color, 标量 (B, G, R )) 计次循环尾 ()img = 视觉_图像读取 (img_path, 1 )如果 (test. 检测 (img, net, result )) test. 绘制预测结果 (img, result, color )视觉_控制台输出 (“Detect Failed!”)视觉_控制台命令 (“pause”)返回 (0 ) 窗口程序集名 | 保 留 | 保 留 | 备 注 | Yolo | | | | 变量名 | 类 型 | 数组 | 备 注 | 网络宽 | 整数型 | | 网络高 | 整数型 | | 类名集 | 文本型 | 0 | 网络Anchors | 小数型 | 3,6 | 网络Stride | 小数型 | 3 | 最大抑制阈值 | 小数型 | | 预测框阈值 | 小数型 | | 类ID阈值 | 小数型 | |
网络Anchors [1 ] [1 ] = 10 网络Anchors [1 ] [2 ] = 13 网络Anchors [1 ] [3 ] = 16 网络Anchors [1 ] [4 ] = 30 网络Anchors [1 ] [5 ] = 33 网络Anchors [1 ] [6 ] = 23 网络Anchors [2 ] [1 ] = 30 网络Anchors [2 ] [2 ] = 61 网络Anchors [2 ] [3 ] = 62 网络Anchors [2 ] [4 ] = 45 网络Anchors [2 ] [5 ] = 59 网络Anchors [2 ] [6 ] = 119 网络Anchors [3 ] [1 ] = 116 网络Anchors [3 ] [2 ] = 90 网络Anchors [3 ] [3 ] = 156 网络Anchors [3 ] [4 ] = 198 网络Anchors [3 ] [5 ] = 373 网络Anchors [3 ] [6 ] = 326 网络Stride = { 8, 16, 32 }网络宽 = 640 网络高 = 640 最大抑制阈值 = 0.45 预测框阈值 = 0.25 类ID阈值 = 0.25 类名集 = { “person”, “bicycle”, “car”, “motorcycle”, “airplane”, “bus”, “train”, “truck”, “boat”, “traffic light”, “fire hydrant”, “stop sign”, “parking meter”, “bench”, “bird”, “cat”, “dog”, “horse”, “sheep”, “cow”, “elephant”, “bear”, “zebra”, “giraffe”, “backpack”, “umbrella”, “handbag”, “tie”, “suitcase”, “frisbee”, “skis”, “snowboard”, “sports ball”, “kite”, “baseball bat”, “baseball glove”, “skateboard”, “surfboard”, “tennis racket”, “bottle”, “wine glass”, “cup”, “fork”, “knife”, “spoon”, “bowl”, “banana”, “apple”, “sandwich”, “orange”, “broccoli”, “carrot”, “hot dog”, “pizza”, “donut”, “cake”, “chair”, “couch”, “potted plant”, “bed”, “dining table”, “toilet”, “tv”, “laptop”, “mouse”, “remote”, “keyboard”, “cell phone”, “microwave”, “oven”, “toaster”, “sink”, “refrigerator”, “book”, “clock”, “vase”, “scissors”, “teddy bear”, “hair drier”, “toothbrush” }|
读模型 | 逻辑型 | | |
net | 网络类 | | | | netPath | 文本型 | | | | isCuda | 逻辑型 | | | |
net = 视觉_读取网络 (netPath, , “”)判断 (isCuda ) net. 设置首选后端 ( #网络_后端_CUDA )net. 设置首选目标 ( #网络_目标_CUDA_FP16 ) net. 设置首选后端 ( #网络_后端_默认 )net. 设置首选目标 ( #网络_目标_CPU )返回 (真)|
检测 | 逻辑型 | | |
输入图片 | 多维矩阵类 | | | | 网络 | 网络类 | | | | output | 输出 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 前景目标 | 多维矩阵类 | | | 列数 | 整数型 | | | 行数 | 整数型 | | | 最大长 | 整数型 | | | 网络输入图 | 多维矩阵类 | | | 返回尺寸图 | 多维矩阵类 | | | 网络输出图 | 多维矩阵类 | | 0 | 类ID集 | 整数型 | | 0 | 置信度集 | 小数型 | | 0 | 预测框集 | 矩形2i类 | | 0 | 高比率 | 小数型 | | | 宽比率 | 小数型 | | | 网络宽度 | 整数型 | | | 矩阵数据指针 | 整数型 | | | 步数 | 整数型 | | | 网格_x | 整数型 | | | 网格_y | 整数型 | | | anchor | 整数型 | | | anchor_宽 | 小数型 | | | anchor_高 | 小数型 | | | i | 整数型 | | | 预测框_分数 | 小数型 | | | j | 整数型 | | | 对象分数 | 多维矩阵类 | | | 类ID坐标 | 点2i类 | | | 最大_类_分数 | 双精度小数型 | | | x | 小数型 | | | y | 小数型 | | | w | 小数型 | | | h | 小数型 | | | 左边 | 整数型 | | | 顶边 | 整数型 | | | 最大抑制结果 | 整数型 | | 0 | 结果 | 输出 | | | idx | 整数型 | | |
列数 = 输入图片. 列数 ()行数 = 输入图片. 行数 ()最大长 = 取最大 (列数, 行数 )网络输入图 = 输入图片. 克隆 ()如果真 (最大长 > 1.2 × 列数 或 最大长 > 1.2 × 行数 )返回尺寸图 = 矩阵 (最大长, 最大长, #八位无符号整数_三通道, )输入图片. 复制 (返回尺寸图. 感兴区域 (矩形2i (0, 0, 列数, 行数 )), )网络输入图 = 返回尺寸图 前景目标 = 视觉_来自图像的目标 (网络输入图, 1 ÷ 255, 尺寸2i (网络宽, 网络高), 标量 (104, 117, 123), 真, 假, 5)网络. 设置输入 (前景目标, “”, 1, )网络. 向前 (网络输出图, 网络. 获取未连接的输出层名称 ()) 高比率 = 网络输入图. 行数 () ÷ 网络高 宽比率 = 网络输入图. 列数 () ÷ 网络宽 网络宽度 = 取数组成员数 (类名集 ) + 5 矩阵数据指针 = 网络输出图 [1 ]. 数据指针 ()计次循环首 (3, 步数 )网格_x = 网络宽 ÷ 网络Stride [步数 ]网格_y = 网络高 ÷ 网络Stride [步数 ]计次循环首 (3, anchor )anchor_宽 = 网络Anchors [步数 ] [anchor × 2 - 1 ]anchor_高 = 网络Anchors [步数 ] [anchor × 2 ]计次循环首 (网格_y, i )计次循环首 (网格_y, j )预测框_分数 = 指针到小数 (矩阵数据指针 + 16 ) 如果真 (预测框_分数 > 预测框阈值 )如果真 (预测框_分数 > 类ID阈值 )对象分数 = 矩阵 (1, 取数组成员数 (类名集 ), #三十二位浮点数_单通道, 到整数 (矩阵数据指针 + 20 )) 视觉_最小最大位置 (对象分数, , 最大_类_分数, , 类ID坐标, )如果真 (最大_类_分数 > 类ID阈值 ) x = 指针到小数 (矩阵数据指针 ) y = 指针到小数 (矩阵数据指针 + 4 ) w = 指针到小数 (矩阵数据指针 + 8 ) h = 指针到小数 (矩阵数据指针 + 12 ) 左边 = (x - 0.5 × w ) × 宽比率 顶边 = (y - 0.5 × h ) × 高比率 加入成员 (类ID集, 类ID坐标.左边 )加入成员 (置信度集, 最大_类_分数 × 预测框_分数 )加入成员 (预测框集, 矩形2i (左边, 顶边, w × 宽比率, h × 高比率 )) 矩阵数据指针 = 网络宽度 × 4 + 矩阵数据指针 计次循环尾 ()计次循环尾 ()计次循环尾 ()计次循环尾 () 视觉_非最大抑制 (预测框集, 置信度集, 类ID阈值, 最大抑制阈值, 最大抑制结果, 1, 0 )计次循环首 (取数组成员数 (最大抑制结果 ), i )idx = 最大抑制结果 [i ] - 1 结果.类别id = 类ID集 [idx ] + 1 结果.置信度 = 置信度集 [idx + 2 ]结果.预测框 = 预测框集 [idx + 2 ]加入成员 (output, 结果 )计次循环尾 ()如果 (取数组成员数 (output ) > 0 )返回 (真)返回 (假)如果 (v1 > v2 )返回 (v1 )返回 (v2 )|
绘制预测结果 | | | |
图像 | 多维矩阵类 | | | | 返回结果 | 输出 | | | | 颜色 | 标量类 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | 左边 | 整数型 | | | 顶边 | 整数型 | | | 颜色索引 | 整数型 | | | 标签 | 文本型 | | | 基线 | 整数型 | | | 标签尺寸 | 尺寸2i类 | | | 计次循环首 (取数组成员数 (返回结果 ), i )左边 = 返回结果 [i ].预测框.左边 顶边 = 返回结果 [i ].预测框.顶边 颜色索引 = i 视觉_矩形 (图像, 返回结果 [i ].预测框, 颜色 [返回结果 [i ].类别id ], 2, 8, 0 )标签 = 类名集 [返回结果 [i ].类别id ] + “:” + 到文本 (返回结果 [i ].置信度 )标签尺寸 = 视觉_获取文本尺寸 (标签, #字体_衬线_简单, 0.5, 1, 基线 )顶边 = 取最大 (顶边, 标签尺寸.高 ) 视觉_放置文本 (图像, 标签, 点2i (左边, 顶边 ), #字体_衬线_简单, 1, 颜色 [返回结果 [i ].类别id ], 2, 8, 假)计次循环尾 ()视觉_显示图像 (“YOLO5”, 图像 ) 视觉_等待按键 (0 )
|
本帖被以下淘专辑推荐:
- · 鱼木|主题: 1560, 订阅: 152
- · AI训练 学习|主题: 34, 订阅: 28
- · 坐标贴|主题: 224, 订阅: 13
|