news 2026/4/3 4:13:06

YOLO-v5代码实例:从图片路径到结果可视化的完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLO-v5代码实例:从图片路径到结果可视化的完整流程

YOLO-v5代码实例:从图片路径到结果可视化的完整流程

1. 引言

1.1 YOLO-v5 技术背景

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的 Joseph Redmon 和 Ali Farhadi 开发。自2015年首次发布以来,YOLO 系列因其在保持高检测精度的同时具备极快的推理速度而广受关注。其核心思想是将目标检测任务视为一个回归问题,通过单次前向传播即可完成对整张图像中所有目标的定位与分类。

YOLO-v5 是该系列中由 Ultralytics 团队于2020年推出的实现版本,虽然并非官方 YOLO 论文作者直接开发,但凭借其简洁的代码结构、高效的训练性能以及良好的可部署性,迅速成为工业界和研究领域广泛使用的工具之一。它支持多种模型尺寸(如 yolov5n、yolov5s、yolov5m 等),适用于从边缘设备到服务器级硬件的不同应用场景。

1.2 镜像环境简介

本文基于YOLO-V5 深度学习镜像展开实践操作。该镜像预装了 PyTorch 深度学习框架及 YOLOv5 官方仓库代码,集成了完整的依赖库与开发工具,极大简化了环境配置过程。用户可通过 Jupyter Notebook 或 SSH 方式接入,快速启动目标检测任务。

此外,镜像内置示例脚本与测试数据,支持一键加载预训练模型进行推理,非常适合初学者入门或开发者快速验证算法效果。


2. 使用环境准备

2.1 接入方式说明

本镜像提供两种主要使用方式:

  • Jupyter Notebook:适合交互式开发与可视化调试。
  • SSH 远程连接:适合长期运行任务或批量处理。

图片描述:Jupyter 登录界面与文件浏览页面截图

图片描述:SSH 登录提示界面

推荐新手使用 Jupyter 方式,便于查看每一步输出结果。

2.2 进入项目目录

无论采用哪种方式,首先需进入 YOLOv5 的主项目路径:

cd /root/yolov5/

该目录包含models/utils/detect.pytrain.py等核心组件,已配置好所需 Python 包(如torch,opencv-python,matplotlib等),无需额外安装。


3. 完整推理流程实现

3.1 加载预训练模型

YOLOv5 支持通过torch.hub直接加载不同规模的预训练模型。常用型号包括:

模型参数量推理速度(GPU)适用场景
yolov5n~1.9M极快边缘设备、实时检测
yolov5s~7.2M平衡精度与速度
yolov5m~21.2M中等通用场景
yolov5l~46.5M较慢高精度需求
yolov5x~86.7M最大精度

本文以yolov5s为例,执行以下代码:

import torch # Load a YOLOv5 model (options: yolov5n, yolov5s, yolov5m, yolov5l, yolov5x) model = torch.hub.load("ultralytics/yolov5", "yolov5s") # Default: yolov5s

首次运行时会自动下载权重文件(约140MB),后续调用将直接从本地缓存加载。

3.2 输入图像定义

YOLOv5 支持多种输入格式,包括:

  • 网络图片 URL
  • 本地图片路径
  • PIL 图像对象
  • OpenCV 读取的 numpy 数组
  • 多图列表

示例使用官方提供的测试图像链接:

img = "https://ultralytics.com/images/zidane.jpg" # Example image

若要使用本地图片,请确保路径正确,并确认文件存在:

img = "/root/yolov5/data/images/bus.jpg" # 替换为实际路径

3.3 执行推理

调用模型进行推理非常简单,只需传入图像即可:

# Perform inference (handles batching, resizing, normalization automatically) results = model(img)

此步骤内部完成了以下操作: - 图像解码(如果是 URL 或路径) - 缩放至合适尺寸(默认 640×640) - 归一化处理 - 批量前向传播 - NMS(非极大值抑制)后处理

整个过程对用户透明,极大降低了使用门槛。

3.4 结果处理与输出

YOLOv5 提供丰富的结果处理方法,便于不同用途的数据提取和展示。

打印检测结果
results.print()

输出示例如下:

zidane.jpg: 384x640 (w,h), 2 persons, 1 tie, Done. (0.012s)

显示图像尺寸、检测到的目标类别与数量、耗时等信息。

显示检测图像
results.show()

弹出窗口展示原始图像上叠加边界框和标签的结果。注意:在无图形界面的服务器环境中需启用 X 转发或保存图像代替显示。

保存检测结果
results.save()

将带标注的图像保存至runs/detect/exp/目录下。若已有同名目录,则自动创建exp2,exp3等避免覆盖。

裁剪检测目标
cropped_images = results.crop()

返回每个检测框内的裁剪图像列表,可用于后续分类或分析任务。

获取结构化数据(Pandas 格式)
df = results.pandas().xyxy[0] print(df)

输出如下表格形式的结果:

xminyminxmaxymaxconfidenceclassname
100.2150.4300.1500.30.9870person
400.5200.1450.2250.00.921tietie

方便进一步做数据分析、筛选或导出 CSV 文件。


4. 自定义图像检测实战

4.1 准备本地图像

假设我们有一张名为dog_cat.jpg的本地图片,存放于/root/yolov5/data/images/目录下。

img_path = "/root/yolov5/data/images/dog_cat.jpg"

4.2 完整代码整合

以下是完整可运行的检测脚本:

import torch import cv2 import matplotlib.pyplot as plt # Step 1: Load model model = torch.hub.load("ultralytics/yolov5", "yolov5s") # Step 2: Define input img_path = "/root/yolov5/data/images/dog_cat.jpg" # Step 3: Inference results = model(img_path) # Step 4: Process results results.print() # Print to console results.save() # Save annotated image # Optional: Show using matplotlib img_bgr = cv2.imread(img_path) img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB) plt.figure(figsize=(10, 6)) plt.imshow(results.render()[0]) plt.axis('off') plt.title("Detected Objects") plt.show()

results.render()返回绘制了边界框和标签的图像数组,可用于 Matplotlib 可视化。

4.3 输出说明

执行完成后,在runs/detect/exp/目录中可找到生成的图像文件,包含清晰标注的目标框和类别名称。

同时控制台输出类似:

dog_cat.jpg: 480x640 (w,h), 1 dog, 1 cat, Done. (0.014s)

表明成功识别出一只狗和一只猫,推理时间仅约14毫秒(取决于硬件性能)。


5. 常见问题与优化建议

5.1 常见问题解答

问题原因解决方案
urllib.error.URLError网络不通或URL失效更换图片源或使用本地文件
ModuleNotFoundError缺少依赖包使用pip install -r requirements.txt
CUDA out of memoryGPU显存不足切换为更小模型(如 yolov5n)或降低 batch size
No such file or directory图像路径错误检查路径是否存在,使用绝对路径

5.2 性能优化建议

  1. 选择合适模型:根据设备资源选择模型大小,边缘设备优先使用yolov5nyolov5s
  2. 启用半精度(FP16):减少内存占用并提升推理速度:python model = model.half().cuda() img = img.half().cuda()
  3. 批量推理:当处理多张图像时,传入图像列表以提高效率:python imgs = ["img1.jpg", "img2.jpg", "img3.jpg"] results = model(imgs)
  4. 关闭日志冗余:生产环境中可通过设置日志级别减少输出干扰:python import logging logging.getLogger("yolov5").setLevel(logging.WARNING)

6. 总结

6.1 核心要点回顾

本文围绕 YOLOv5 的实际应用,详细介绍了从环境准备到完整推理流程的全过程:

  • 使用预置镜像快速搭建开发环境;
  • 通过torch.hub.load加载预训练模型;
  • 支持多种输入源(URL、本地路径等);
  • 实现检测结果的打印、显示、保存、裁剪与结构化提取;
  • 展示了自定义图像检测的完整代码示例;
  • 提供常见问题排查与性能优化建议。

6.2 最佳实践建议

  1. 优先使用本地图像进行调试,避免网络不稳定影响实验;
  2. 定期清理runs/detect/目录,防止磁盘空间被占满;
  3. 结合 Pandas 分析检测结果,便于统计与过滤;
  4. 在部署前导出为 ONNX 模型,以便跨平台部署。

通过本文所述流程,开发者可在几分钟内完成一次端到端的目标检测任务,显著提升研发效率。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 18:24:55

Keil添加文件图解说明:界面操作一目了然

Keil 添加文件实战指南:从界面操作到工程管理的深度理解你有没有遇到过这种情况——代码明明写好了,头文件也放进了工程目录,可编译时却报错“undefined reference”或“cannot open source file”?翻来覆去检查,最后发…

作者头像 李华
网站建设 2026/3/17 11:50:48

Waldmann发布全球首款年龄智适应落地灯:全新一代 Lavigo

2025年,来自德国黑森林、拥有近百年历史的专业照明品牌 Waldmann沃达迈 发布全新一代 Lavigo 落地灯。作为全球首款搭载“年龄智慧科技”的专注照明产品,Lavigo 针对“不同年龄、不同场景的光需求均不相同”这一长期被忽视的难题,给出了行业首…

作者头像 李华
网站建设 2026/3/27 11:38:13

FRCRN语音降噪参数详解:推理脚本配置最佳实践

FRCRN语音降噪参数详解:推理脚本配置最佳实践 1. 技术背景与应用场景 随着智能语音设备在消费电子、车载系统和远程会议等场景中的广泛应用,单通道麦克风在复杂噪声环境下的语音质量成为影响用户体验的关键因素。FRCRN(Full-Resolution Com…

作者头像 李华
网站建设 2026/3/28 20:06:45

低延迟、高隐私|Supertonic TTS在音乐教育中的创新应用

低延迟、高隐私|Supertonic TTS在音乐教育中的创新应用 1. 引言:TTS技术如何赋能音乐教育场景 在现代音乐教育中,语音辅助教学正逐渐成为提升学习效率的重要手段。无论是初学者对音名(如do、re、mi)的识记&#xff0…

作者头像 李华
网站建设 2026/3/23 7:59:06

python基于vue的课程在线考试管理系统django flask pycharm

目录基于Python与Vue的在线考试管理系统技术架构设计核心功能模块系统特色与创新开发与部署流程开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Python与Vue的在线考试管理系统 该系统采…

作者头像 李华
网站建设 2026/4/2 8:04:13

如何提升嘈杂环境语音质量?FRCRN单麦降噪镜像来了

如何提升嘈杂环境语音质量?FRCRN单麦降噪镜像来了 在远程会议、语音通话或现场录音等实际场景中,背景噪声常常严重影响语音的清晰度和可懂度。尤其是在地铁站、咖啡馆、街道等人流密集区域,单麦克风设备采集到的语音往往夹杂着风扇声、车流声…

作者头像 李华