|
先上易语言: 窗口程序集名 | 保 留 | 保 留 | 备 注 | YOLO | | | | 变量名 | 类 型 | 数组 | 备 注 | 置信阈值 | 小数型 | | 抑制阈值 | 小数型 | | 输入宽 | 整数型 | | 输入高 | 整数型 | | 网络名 | 文本型 | | 类数组 | 文本型 | 0 | 网络 | 网络类 | | YOLO_网络 | YOLO_网络_配置 | 4 |
YOLO_网络 [1 ].置信阈值 = 0.5 YOLO_网络 [1 ].抑制阈值 = 0.4 YOLO_网络 [1 ].输入宽度 = 416 YOLO_网络 [1 ].输入高度 = 416 YOLO_网络 [1 ].模型配置 = “E:\BaiduNetdiskDownload\yolov3\yolov3.cfg”YOLO_网络 [1 ].模型权重 = “E:\BaiduNetdiskDownload\\yolov3\yolov3.weights”YOLO_网络 [1 ].网络名称 = “YOLOv3” YOLO_网络 [2 ].置信阈值 = 0.5 YOLO_网络 [2 ].抑制阈值 = 0.4 YOLO_网络 [2 ].输入宽度 = 608 YOLO_网络 [2 ].输入高度 = 608 YOLO_网络 [2 ].模型配置 = “E:\BaiduNetdiskDownload\yolov4\yolov4.cfg”YOLO_网络 [2 ].模型权重 = “E:\BaiduNetdiskDownload\yolov4\yolov4.weights”YOLO_网络 [2 ].网络名称 = “YOLOv4” YOLO_网络 [3 ].置信阈值 = 0.5 YOLO_网络 [3 ].抑制阈值 = 0.4 YOLO_网络 [3 ].输入宽度 = 320 YOLO_网络 [3 ].输入高度 = 320 YOLO_网络 [3 ].模型配置 = “E:\BaiduNetdiskDownload\yolo-fastest\yolo-fastest-xl.cfg”YOLO_网络 [3 ].模型权重 = “E:\BaiduNetdiskDownload\yolo-fastest\yolo-fastest-xl.weights”YOLO_网络 [3 ].网络名称 = “YOLO_Fastest” YOLO_网络 [4 ].置信阈值 = 0.5 YOLO_网络 [4 ].抑制阈值 = 0.4 YOLO_网络 [4 ].输入宽度 = 320 YOLO_网络 [4 ].输入高度 = 320 YOLO_网络 [4 ].模型配置 = “E:\BaiduNetdiskDownload\yolobile\csdarknet53s-panet-spp.cfg”YOLO_网络 [4 ].模型权重 = “E:\BaiduNetdiskDownload\yolobile\yolobile.weights”YOLO_网络 [4 ].网络名称 = “YOLObile”视觉_控制台输出 (“网络 使用 %T\r”, YOLO_网络 [网络 ].网络名称 )置信阈值 = YOLO_网络 [网络 ].置信阈值 抑制阈值 = YOLO_网络 [网络 ].抑制阈值 输入宽 = YOLO_网络 [网络 ].输入宽度 输入高 = YOLO_网络 [网络 ].输入高度 网络名 = YOLO_网络 [网络 ].网络名称 类数组 = 分割文本 ( #类名, #换行符, )网络 = 视觉_从Darknet读取网络 (YOLO_网络 [网络 ].模型配置, YOLO_网络 [网络 ].模型权重 )网络. 设置首选后端 ( #网络_后端_OPENCV )网络. 设置首选目备 ( #网络_目标_CPU )变量名 | 类 型 | 静态 | 数组 | 备 注 | 预处理 | 多维矩阵类 | | | 输出数组 | 多维矩阵类 | | 0 | 频率 | 双精度小数型 | | | 时间 | 双精度小数型 | | | 网络层计时数组 | 双精度小数型 | | 0 | 标签 | 文本型 | | |
预处理 = 视觉_图像前景目标 (输入图, 1 ÷ 255, 尺寸2i (输入宽, 输入高 ), 标量 (0, 0, 0 ), 真, 假, 5 )网络. 设置输入 (预处理, “”, 1, )网络. 前向计算V (输出数组, 网络. 获取未连接的输出层名称 ()) 后期处理 (输入图, 输出数组 )频率 = 视觉_获取滴答频率 () ÷ 1000 时间 = 网络. 视觉_获取性能 (网络层计时数组 ) ÷ 频率 标签 = 网络名 + “ Inference time :” + 到文本 (四舍五入 (时间, 2 )) 视觉_放置文本 (输入图, 标签, 点2i (0, 30 ), #字体_衬线_简单, 1, 标量 (0, 0, 255 ), 2, 8, 假)变量名 | 类 型 | 静态 | 数组 | 备 注 | 类ID数组 | 整数型 | | 0 | 置信度数组 | 小数型 | | 0 | 预测框数组 | 矩形2i类 | | 0 | i | 整数型 | | | 数据指针 | 小数型指针类 | | | j | 整数型 | | | 分 | 多维矩阵类 | | | 类ID位置 | 点2i类 | | | 置信度 | 双精度小数型 | | | 中心X | 整数型 | | | 中心Y | 整数型 | | | 宽 | 整数型 | | | 高 | 整数型 | | | 左 | 整数型 | | | 上 | 整数型 | | | 筛选数组 | 整数型 | | 0 | 预测id | 整数型 | | | 预测框 | 矩形2i类 | | | 计次循环首 (取数组成员数 (输出数组 ), i ) 数据指针.指针 = 输出数组 [i ]. 数据指针 ()变量循环首 (0, 输出数组 [i ]. 行数 () - 1, 1, j )分 = 输出数组 [i ]. 行 (j ). 列范围 (5, 输出数组 [i ]. 列数 ()) 视觉_最小最大位置 (分, , 置信度, , 类ID位置, )如果真 (置信度 > 置信阈值 )中心X = 数据指针. 读 (0 ) × 输入图. 列数 ()中心Y = 数据指针. 读 (1 ) × 输入图. 行数 ()宽 = 数据指针. 读 (2 ) × 输入图. 列数 ()高 = 数据指针. 读 (3 ) × 输入图. 行数 ()左 = 中心X - 宽 ÷ 2 上 = 中心Y - 高 ÷ 2 加入成员 (类ID数组, 类ID位置.左边 )加入成员 (置信度数组, 置信度 )加入成员 (预测框数组, 矩形2i (左, 上, 宽, 高 )) 数据指针.偏移 (输出数组 [i].列数 ())变量循环尾 ()计次循环尾 () 视觉_非最大抑制 (预测框数组, 置信度数组, 置信阈值, 抑制阈值, 筛选数组, 1, 0 )计次循环首 (取数组成员数 (筛选数组 ), i )预测id = 筛选数组 [i ] + 1 预测框 = 预测框数组 [预测id ]绘制预测 (类ID数组 [预测id ], 置信度数组 [预测id ], 预测框.左边, 预测框.顶边, 预测框.左边 + 预测框.宽度, 预测框.顶边 + 预测框.高度, 输入图 )计次循环尾 ()|
绘制预测 | | | |
classId | 整数型 | | | | conf | 小数型 | | | | left | 整数型 | | | | top | 整数型 | | | | right | 整数型 | | | | bottom | 整数型 | | | | frame | 多维矩阵类 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | baseLine | 整数型 | | | labelSize | 尺寸2i类 | | | label | 文本型 | | | 视觉_矩形P (frame, 点2i (left, top ), 点2i (right, bottom ), 标量 (0, 0, 255 ), 3, 8, 0 ) label = 到文本 (四舍五入 (conf, 2 )) 如果真 (取数组成员数 (类数组 ) ≠ 0 ) classId = classId + 1 如果真 (classId > 取数组成员数 (类数组 )) 视觉_控制台输出 (“类名数组 下标错误\n”, )暂停 ()label = 类数组 [classId] + “:” + label
labelSize = 视觉_获取文本尺寸 (label, #字体_衬线_简单, 0.5, 1, baseLine )top = 视觉_取最大值 (top, labelSize.高 ) 视觉_放置文本 (frame, label, 点2i (left, top ), #字体_衬线_简单, 0.75, 标量 (0, 255, 0 ), 1, 8, 假) 变量名 | 类 型 | 静态 | 数组 | 备 注 | YOLO网络 | YOLO | | | 图片路径 | 文本型 | | | 输入图片 | 多维矩阵类 | | | 窗口名称 | 文本型 | | |
YOLO网络. 初始化 ( #Demo_YOLO_Fastest )图片路径 = “C:\Users\hanyo\Desktop\yolov34-cpp-opencv-dnn-master\person.jpg”输入图片 = 视觉_图像读取 (图片路径, 1 )YOLO网络. 检测识别 (输入图片 )窗口名称 = “易语言 OpenCV 中的深度学习对象检测”视觉_创建窗口 (窗口名称, #窗口_标准 )视觉_显示图像 (窗口名称, 输入图片 )视觉_等待按键 (0 )视觉_销毁所有窗口 ()返回 (0 )
效果展示:
|
|