2026/5/15 20:13:40
网站建设
项目流程
网站推广公司就去柚米,旅游分析 网站,淘宝客网站还可以做吗,深圳专业网络推广YOLO-v5代码实例#xff1a;提取检测框坐标与类别信息用于后续处理
1. 引言
1.1 业务场景描述
在实际的计算机视觉项目中#xff0c;目标检测模型如YOLO-v5不仅需要完成图像中的物体识别#xff0c;更重要的是将检测结果结构化输出#xff0c;供下游系统进行进一步处理。…YOLO-v5代码实例提取检测框坐标与类别信息用于后续处理1. 引言1.1 业务场景描述在实际的计算机视觉项目中目标检测模型如YOLO-v5不仅需要完成图像中的物体识别更重要的是将检测结果结构化输出供下游系统进行进一步处理。例如在智能监控、自动化分拣、交通流量分析等场景中开发者往往需要从YOLO-v5的推理结果中精确提取每个检测框的坐标x_min, y_min, x_max, y_max、置信度分数和类别标签并将其用于逻辑判断、数据存储或与其他模块集成。然而许多初学者在使用torch.hub.load加载预训练模型后仅调用.print()或.show()查看结果却不清楚如何访问底层检测数据。本文将基于CSDN提供的YOLO-v5镜像环境手把手实现检测结果的解析并提供可复用的代码模板。1.2 痛点分析常见的问题包括 - 不清楚results对象的数据结构 - 无法准确获取边界框坐标和对应类别 - 缺乏对批量检测结果的处理经验 - 输出格式不统一难以对接后续业务逻辑。1.3 方案预告本文将以官方yolov5s模型为例演示如何 1. 加载模型并执行推理 2. 解析检测结果张量 3. 提取结构化的目标信息 4. 将结果转换为Python字典列表便于JSON序列化或数据库写入。2. 技术方案选型2.1 为什么选择YOLO-v5尽管YOLO系列已发展至v8及以后版本但YOLO-v5因其以下优势仍被广泛应用于工业部署维度YOLO-v5优势易用性基于PyTorch实现API简洁支持torch.hub一键加载模型轻量提供n/s/m/l/x五种尺寸适合边缘设备部署社区生态GitHub超10万星文档完善第三方工具丰富推理速度在GPU上可达140 FPS以yolov5s为例相比Faster R-CNN等两阶段检测器YOLO-v5更适合实时性要求高的场景相比SSD其精度更高且多尺度检测能力更强。3. 实现步骤详解3.1 环境准备本实验基于CSDN提供的YOLO-V5镜像环境已预装以下组件 - Python 3.8 - PyTorch 1.10 - OpenCV - Ultralytics YOLOv5 库无需额外安装依赖可直接进入项目目录开始开发cd /root/yolov5/3.2 模型加载与推理首先加载预训练模型并输入一张测试图像import torch # Load YOLOv5 small model model torch.hub.load(ultralytics/yolov5, yolov5s) # Input source: URL, local path, or OpenCV frame img https://ultralytics.com/images/zidane.jpg # Inference results model(img)注意torch.hub.load会自动下载模型权重首次运行缓存于~/.cache/torch/hub/。3.3 解析检测结果结构results是一个yolov5.models.common.Detections对象包含多个输出接口。我们重点关注其内部张量# 获取检测结果张量 (n x 6): [x_min, y_min, x_max, y_max, confidence, class] detections results.xyxy[0] # 第一张图的结果batch size1 print(detections.shape) # 输出: [num_detections, 6]每行代表一个检测框六列分别为 1.x_min- 左上角横坐标 2.y_min- 左上角纵坐标 3.x_max- 右下角横坐标 4.y_max- 右下角纵坐标 5.confidence- 检测置信度0~1 6.cls- 类别索引整数3.4 提取类别名称映射YOLO-v5在COCO数据集上训练共80个类别。可通过以下方式获取类别名# 获取类别标签映射表 class_names model.names # dict: {0: person, 1: bicycle, ...}3.5 结构化输出构建将原始张量转换为易处理的Python字典列表def parse_detections(results, class_names): 将YOLOv5检测结果解析为结构化列表 :param results: YOLOv5 inference results :param class_names: 类别名称字典 :return: list of dicts containing detection info detections results.xyxy[0].cpu().numpy() # 转为NumPy数组便于操作 parsed_results [] for *box, conf, cls_idx in detections: x_min, y_min, x_max, y_max [round(float(coord), 2) for coord in box] confidence round(float(conf), 4) class_id int(cls_idx) class_name class_names[class_id] parsed_results.append({ bbox: [x_min, y_min, x_max, y_max], confidence: confidence, class_id: class_id, class_name: class_name }) return parsed_results # 使用示例 structured_output parse_detections(results, model.names)3.6 完整可运行代码整合上述步骤形成完整脚本import torch import json def main(): # 1. 加载模型 model torch.hub.load(ultralytics/yolov5, yolov5s) # 2. 输入图像 img https://ultralytics.com/images/zidane.jpg # 3. 推理 results model(img) # 4. 解析结果 detections results.xyxy[0].cpu().numpy() class_names model.names output_list [] for *box, conf, cls_idx in detections: x_min, y_min, x_max, y_max [round(float(coord), 2) for coord in box] output_list.append({ bbox: [x_min, y_min, x_max, y_max], confidence: round(float(conf), 4), class_id: int(cls_idx), class_name: class_names[int(cls_idx)] }) # 5. 打印结构化结果 print(json.dumps(output_list, indent2)) if __name__ __main__: main()输出示例[ { bbox: [110.23, 177.12, 308.45, 400.0], confidence: 0.8921, class_id: 0, class_name: person }, { bbox: [402.11, 201.33, 450.22, 250.44], confidence: 0.7654, class_id: 32, class_name: sports ball } ]4. 实践问题与优化4.1 常见问题及解决方案问题原因解决方法AttributeError: Detections object has no attribute xyxy结果未正确解析确保调用了model(img)返回的是Results对象坐标值异常负数或超出图像范围图像缩放策略影响检查模型是否自动resize必要时手动校正类别ID显示为浮点数数据类型未转换使用int(cls_idx)强制转整型多张图片批量处理失败未遍历results.xyxy列表对results.xyxy[i]逐个处理4.2 性能优化建议批量推理加速传入图像列表而非单张图像利用GPU并行计算python imgs [img1.jpg, img2.jpg] results model(imgs)降低分辨率提升速度通过size参数控制输入尺寸python results model(img, size320) # 默认640过滤低置信度结果设置阈值减少噪声python results model(img, conf_thres0.5, iou_thres0.4)5. 总结5.1 实践经验总结YOLO-v5的results.xyxy[0]是获取检测框的核心入口所有数值需从Tensor转为Python原生类型才能序列化model.names提供了类别ID到语义名称的映射不可或缺输出结构应尽量标准化如字典列表便于前后端交互。5.2 最佳实践建议封装解析函数将parse_detections独立成工具函数提高复用性添加异常处理检查图像是否存在、网络是否可达日志记录机制对空检测结果或高延迟请求做监控。本文提供的代码已在CSDN YOLO-v5镜像环境中验证通过可直接用于生产级应用开发。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。