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星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NotaGen音乐生成大模型实战|用AI谱写贝多芬风格交响乐

NotaGen音乐生成大模型实战|用AI谱写贝多芬风格交响乐 在人工智能与艺术融合的前沿领域,符号化音乐生成正迎来突破性进展。传统MIDI生成方法受限于音符序列的局部依赖性,难以捕捉古典音乐中复杂的结构逻辑与情感表达。而NotaGen的出现&#…

CV-UNet抠图模型对比测试:与传统工具性能差异

CV-UNet抠图模型对比测试:与传统工具性能差异 1. 引言 1.1 抠图技术的演进背景 图像抠图(Image Matting)是计算机视觉中的基础任务之一,广泛应用于电商、广告设计、影视后期和AI内容生成等领域。传统抠图方法依赖人工在Photosh…

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

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

Meta-Llama-3-8B-Instruct一键启动:英文对话机器人快速上手

Meta-Llama-3-8B-Instruct一键启动:英文对话机器人快速上手 1. 引言 随着大语言模型在企业服务、智能客服和自动化内容生成等场景的广泛应用,轻量级、高性能的开源模型成为开发者关注的焦点。Meta于2024年4月发布的 Meta-Llama-3-8B-Instruct&#xff…

基于微信小程序的在线商城【源码+文档+调试】

🔥🔥作者: 米罗老师 🔥🔥个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 🔥🔥各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

ms-swift量化实战:4bit压缩模型,显存占用直降70%

ms-swift量化实战:4bit压缩模型,显存占用直降70% 1. 引言 随着大语言模型(LLM)参数规模的持续增长,推理和部署过程中的显存消耗已成为制约其广泛应用的核心瓶颈。以Qwen2.5-7B-Instruct为例,FP16精度下模…

Glyph客服知识库处理:长文档检索系统部署实战

Glyph客服知识库处理:长文档检索系统部署实战 1. 引言 1.1 业务场景描述 在现代企业级客服系统中,知识库通常包含大量非结构化文本数据,如产品手册、服务协议、FAQ文档等。这些文档往往长达数千甚至上万字,传统基于Token的自然…

应急方案:当本地GPU故障时如何快速迁移DamoFD项目

应急方案:当本地GPU故障时如何快速迁移DamoFD项目 你是不是也遇到过这样的情况:正在赶一个关键的人脸检测功能开发,模型训练到一半,本地工作站突然蓝屏、显卡报错,甚至直接开不了机?别慌,这事儿…

如何免费降低论文AI率?这10款降AIGC工具亲测有效,让你轻松应对AI检测,顺畅毕业!

最近很多同学问我,为什么导师一眼就看出来了论文借助AI了呢? 我一看大家的文章,很多句子读起来太机械了,长句子一堆,读起来别扭。别说导师了,连我都能读的出来。 大家又问了:怎么才能避免这些问…

AI研究基础设施:NewBie-image-Exp0.1可复现实验环境建设

AI研究基础设施:NewBie-image-Exp0.1可复现实验环境建设 1. 背景与目标 在当前生成式AI快速发展的背景下,动漫图像生成技术正逐步从实验性探索走向系统化研究。然而,研究人员在复现前沿模型时常常面临环境配置复杂、依赖冲突、源码Bug频发等…

Wan2.2视频生成实操手册:Mac用户也能轻松玩转

Wan2.2视频生成实操手册:Mac用户也能轻松玩转 你是不是也遇到过这种情况:看到别人用AI生成炫酷的短视频,自己也想试试,结果发现大多数工具都不支持Mac系统?要么是只能在Windows上运行,要么需要强大的NVIDI…

2026这3款免费台球游戏,玩过的人都停不下来

2025年,台球竞技手游市场迎来爆发式增长,越来越多玩家渴望摆脱线下场地、时间与消费成本的束缚,在指尖享受台球的优雅与热血。但面对同质化严重、付费门槛高的行业现状,如何找到一款免费又优质的台球游戏?今天&#xf…

Claude版Manus只用10天搓出,代码全AI写的!网友:小扎140亿并购像冤大头

开发用时1周半(约10天),Claude Code写了全部代码。Claude Cowork来了。一款面向工作场景的通用智能体,基于Anthropic最强自研模型打造。更让人恐怖的是背后的开发细节:开发用时1周半(约10天)&am…

2026年1月14日学习计划

文章目录本周计划GPT-2 BPE匹配规则本周计划 学透BPE算法,动手构建,优化2部分 1 更新算法 2 多线程训练 为什么去空格 优化更新函数 优化多线程计算 GPT-2 官方实现 https://github.com/openai/gpt-2/blob/master/src/encoder.py收尾happy_llm&#xff…

大数据领域数据标注的行业应用案例分享

大数据时代的数据标注:6大行业真实案例拆解与价值洞察 副标题:从AI训练到业务决策,看标注如何激活“数据石油”的真正价值 摘要/引言 如果说大数据是“未来的石油”,那么数据标注就是“炼油厂”——它把杂乱无章的原始数据&#x…

亲测有效!10款免费降低AI率的工具盘点,让论文有效降低AIGC痕迹,轻松通过检测。

最近很多同学问我,为什么导师一眼就看出来了论文借助AI了呢? 我一看大家的文章,很多句子读起来太机械了,长句子一堆,读起来别扭。别说导师了,连我都能读的出来。 大家又问了:怎么才能避免这些问…

Keil MDK C语言编译器设置:完整示例说明

Keil MDK 编译器配置实战:从调试到性能极致优化在嵌入式开发的世界里,写代码只是第一步。真正决定系统能否稳定运行、响应及时、功耗可控的,往往是那些藏在.uvprojx文件背后的一行行编译选项。你有没有遇到过这样的场景?- 程序明明…

基于UNet的卡通化用户激励体系:分享得积分机制设计

基于UNet的卡通化用户激励体系:分享得积分机制设计 1. 背景与动机 随着AI图像生成技术的普及,个性化人像处理应用在社交、娱乐和内容创作领域展现出巨大潜力。基于UNet架构的cv_unet_person-image-cartoon模型(由阿里达摩院ModelScope提供&…

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

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

不用额外缓存!英伟达开源大模型记忆压缩方案,128K上下文提速2.7倍

联合Astera研究所、斯坦福大学、UC伯克利、加州大学圣地亚哥分校等机构推出了TTT-E2E方法。提高大模型记忆这块儿,美国大模型开源王者——英伟达也出招了。联合Astera研究所、斯坦福大学、UC伯克利、加州大学圣地亚哥分校等机构推出了TTT-E2E方法。在128K超长文本上…