news 2026/5/1 6:46:05

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/5/1 6:29:24

YOLOv12官版镜像实战:如何快速验证你的数据集

YOLOv12官版镜像实战:如何快速验证你的数据集 在现代目标检测任务中,模型迭代速度日益加快,开发者面临的核心挑战已从“能否训练”转向“能否高效验证”。YOLOv12作为新一代以注意力机制为核心的实时检测器,凭借其卓越的精度与推…

作者头像 李华
网站建设 2026/5/1 6:23:08

RePKG终极指南:Wallpaper Engine壁纸提取与资源管理全攻略

RePKG终极指南:Wallpaper Engine壁纸提取与资源管理全攻略 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg Wallpaper Engine壁纸提取工具RePKG是一款专为壁纸爱好者设计…

作者头像 李华
网站建设 2026/5/1 5:02:06

Supertonic多语言实战:5种语言语音合成,云端一键切换

Supertonic多语言实战:5种语言语音合成,云端一键切换 你是不是也遇到过这样的问题:作为语言学习类APP的开发者,想测试不同语言的语音合成效果,结果本地环境只能跑英文TTS,一换到西班牙语、法语就报错&…

作者头像 李华
网站建设 2026/5/1 5:04:13

制造业企业如何构建高效数据采集系统:从挑战到实践

在当今竞争激烈的全球市场中,制造业企业正面临着前所未有的压力。产品生命周期缩短、客户需求日益个性化、供应链波动加剧,这些因素共同推动着企业向智能化、数字化方向转型。然而,许多制造企业在数字化转型的起步阶段就遇到了巨大障碍——数…

作者头像 李华
网站建设 2026/5/1 4:59:41

Claude自己写出Claude!2小时干完两月活,人类在工位上多余了?

Claude Cowork的横空出世,不仅是用10天自建系统的技术奇迹,更是对人类职业价值的一次残酷拷问:当AI两小时能干完两个月的工作,我们是该庆幸解放,还是该恐惧被替代? 打工人版Claude重磅出世,给全…

作者头像 李华
网站建设 2026/4/29 17:08:43

改进A星算法:剔除冗余节点与光滑转折点

改进A星算法 剔除冗余节点,光滑转折点 对比优化前后路径。在路径规划领域,A星算法无疑是一颗耀眼的明星。然而,原始的A星算法生成的路径可能存在冗余节点,并且转折点不够光滑,影响了路径的实用性和美观性。今天咱们就来…

作者头像 李华