YOLO-v5新手教程:预训练模型快速测试与推理

想试试目标检测模型到底有多厉害,但又担心环境配置太复杂、代码看不懂?别担心,这篇教程就是为你准备的。我们不讲复杂的原理,也不搞繁琐的环境搭建,直接带你用最简单、最快速的方式,体验YOLO-v5这个“网红”目标检测模型的能力。

想象一下,你只需要几行代码,就能让电脑自动识别出照片里的人、车、狗、杯子……是不是很酷?今天,我们就用CSDN星图镜像广场上已经配置好的YOLO-v5镜像,跳过所有安装坑,直奔主题——快速测试与推理。整个过程,从启动到看到结果,可能比你泡一杯咖啡的时间还短。

1. 零门槛启动:你的YOLO-v5“开箱即用”环境

通常,运行一个深度学习模型需要安装Python、PyTorch、各种依赖库,版本不对还可能报错,对新手极不友好。但在这里,这一切都已经被打包好了。

1.1 获取并启动镜像

首先,你需要访问CSDN星图镜像广场,找到名为 “Yolo-v5” 的镜像。这个镜像已经预装了运行YOLO-v5所需的一切:PyTorch深度学习框架、YOLO-v5的官方代码库以及所有必要的依赖。

点击“部署”或类似的启动按钮后,系统会为你分配一个云端计算环境。启动成功后,你会看到几种访问方式,我们选择最直观、最适合新手的 Jupyter Notebook

1.2 进入Jupyter Notebook工作区

点击Jupyter的访问链接,你会进入一个类似文件管理器的网页界面。这就是你的云端编程环境。所有操作都在浏览器里完成,不需要在本地安装任何软件。

在文件列表中,你应该能看到一个名为 yolov5 的文件夹。这就是我们今天要用的“武器库”,里面包含了YOLO-v5的所有源代码和示例。

2. 五分钟体验:用预训练模型识别万物

好了,环境就绪,我们直接上代码。整个过程就像搭积木一样简单。

2.1 第一步:打开并运行示例代码

在Jupyter界面中,进入 /root/yolov5/ 目录。为了方便大家,镜像里通常已经准备好了一个演示用的Notebook文件(比如 demo.ipynb)或者你可以直接新建一个。

我们新建一个Notebook,然后把下面这段核心代码复制进去。这段代码的作用是:加载一个预训练好的YOLO-v5模型,然后让它分析一张网络图片

import torch

# 1. 加载YOLO-v5模型(‘yolov5s’是最小的版本,速度快,适合测试)
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')

# 2. 指定要检测的图片(这里直接用了一个网络图片的链接)
img_url = "https://ultralytics.com/images/zidane.jpg"
# 你也可以换成你自己的图片,比如:img_path = 'path/to/your/image.jpg'

# 3. 进行推理!模型会自动处理图片缩放、归一化等所有步骤
results = model(img_url)

# 4. 查看结果
results.print()  # 在下方打印出检测到的物体、位置和置信度
results.show()   # 弹出一个窗口显示带检测框的图片(在Notebook里直接显示)

选中这个代码单元格,按 Shift + Enter 运行。你会看到程序开始下载模型(第一次运行需要下载,稍等片刻),然后输出类似下面的信息:

image 1/1: 720x1280 2 persons, 1 tie, 1 sports ball
Speed: 10.2ms pre-process, 12.8ms inference, 1.2ms NMS per image at shape (1, 3, 640, 640)

同时,图片会显示出来,上面用框标出了两个人、一条领带和一个运动球,并标注了名称和置信度(比如 person 0.89 表示89%的把握认为这是一个人)。

恭喜你!你已经完成了第一次目标检测! 模型成功地从一张复杂的图片中找出了多个物体。

2.2 第二步:试试你自己的图片

用网络图片演示很酷,但用你自己的图片更有成就感。有两种简单的方法:

方法一:使用本地图片 如果你在Jupyter里上传了自己的图片(比如 my_cat.jpg),只需修改代码中的图片路径:

# 假设图片上传到了当前目录
img_path = './my_cat.jpg'
results = model(img_path)
results.show()

方法二:使用摄像头或视频(进阶) YOLO-v5也支持实时摄像头流或视频文件。例如,检测电脑摄像头:

# 检测默认摄像头(摄像头索引通常是0)
results = model(0)  # 这会打开一个实时检测窗口

或者检测一个视频文件:

results = model('my_video.mp4')

3. 结果解读与保存:看懂模型在说什么

运行完代码,除了看到带框的图片,我们还能对结果做什么?

3.1 理解输出信息

运行 results.print() 后,终端会输出几行信息:

  • 2 persons, 1 tie...: 这行告诉你图片里检测到了什么,以及数量。
  • Speed: ...: 这行显示了处理速度,包括预处理、推理(模型计算)和后处理(NMS非极大值抑制)的时间。这个速度是在特定硬件(比如镜像提供的GPU)上测得的,体现了YOLO“快”的特点。

3.2 多种方式处理结果

YOLO-v5的 results 对象非常强大,提供了多种处理结果的方式:

# 继续使用上面的 results 对象

# 1. 将结果保存为图片
results.save()  # 默认保存到 ‘runs/detect/exp’ 文件夹,每次运行会新建一个(如exp2, exp3)

# 2. 以Pandas DataFrame格式获取详细结果(适合做数据分析)
pandas_results = results.pandas().xyxy[0]  # 获取第一张图片的检测结果表
print(pandas_results)
# 这个表格会包含每个检测框的坐标(xmin, ymin, xmax, ymax)、置信度、类别名等信息。

# 3. 裁剪出检测到的物体
cropped_imgs = results.crop()  # 将每个检测到的物体保存为单独的图片文件

对于数据分析,pandas_results 表格特别有用。你可以轻松地统计图片中出现了多少种物体,或者过滤出置信度高于某个阈值(比如0.8)的所有“人”。

4. 探索不同模型:从快到准,总有一款适合你

你可能注意到了,我们加载模型时用的是 ‘yolov5s’。YOLO-v5官方提供了多个不同大小的预训练模型,就像手机有“标准版”、“Pro版”和“Ultra版”一样。

模型代号特点适用场景
yolov5nNano,最小最快,精度较低对速度要求极高的移动端或嵌入式设备
yolov5sSmall,小且快,精度与速度平衡入门测试、实时检测的首选
yolov5mMedium,中等大小,精度更高对精度有一定要求的通用场景
yolov5lLarge,大模型,精度高追求高精度的服务器端应用
yolov5xXLarge,最大最准,速度最慢学术研究或对精度有极致要求的场景

你可以像换衣服一样轻松切换模型,只需修改加载模型的那行代码:

# 试试更大、更准的模型
model_large = torch.hub.load('ultralytics/yolov5', 'yolov5l')  # 加载Large模型
results_large = model_large(img_url)
results_large.show()

运行后你会发现,yolov5l 模型可能会检测出更多、更准确的物体(比如远处更小的物体),但处理速度会比 yolov5s 慢一些。这就体现了在速度精度之间的权衡。

5. 常见问题与小技巧

第一次尝试,难免会遇到一些小问题。这里列出几个最常见的:

  • 问题:运行 torch.hub.load 时下载模型很慢或失败。

    • 解决:镜像通常已经预下载了常用模型。如果遇到问题,可以检查网络,或者手动下载模型文件(.pt格式)放到指定目录,然后通过 model = torch.hub.load(..., local_model_path) 方式加载。
  • 问题:results.show() 在Jupyter里不显示图片。

    • 解决:Jupyter有时需要额外配置。更可靠的方式是直接保存图片然后查看:results.save(),然后去 runs/detect/exp 文件夹里找到生成的图片。
  • 问题:如何只检测特定的物体(比如只检测人和车)?

    • 解决:加载模型时可以指定类别。例如,只检测‘person’和‘car’:
      model = torch.hub.load('ultralytics/yolov5', 'yolov5s', classes=[0, 2])  # COCO数据集中,0是人,2是车
      
      或者使用 model.conf = 0.25 调整置信度阈值,过滤掉把握不大的检测框。
  • 技巧:批量检测多张图片。

    • 非常简单,把图片路径放在一个列表里传给模型就行:
      image_list = [‘img1.jpg’, ‘img2.jpg’, ‘img3.jpg’]
      batch_results = model(image_list)
      batch_results.show() # 会显示所有图片的结果
      batch_results.save() # 会保存所有图片的结果
      

6. 总结

通过这个简短的教程,你已经掌握了使用预训练YOLO-v5模型进行目标检测的核心流程:

  1. 环境免配置:利用预置镜像,跳过所有安装烦恼,直接进入实战。
  2. 核心三板斧加载模型 (torch.hub.load)、输入图片执行推理 (model(img)),三行代码就能看到效果。
  3. 结果随心用:可以屏幕显示、保存图片,还能导出详细数据表格进行进一步分析。
  4. 模型可切换:根据需求在速度(yolov5n/s)和精度(yolov5l/x)之间灵活选择。

这仅仅是YOLO-v5世界的入口。这个预训练模型已经能识别80种常见物体(COCO数据集)。如果你想让它识别特定的东西,比如识别某种零件、某种植物,下一步就是准备自己的图片数据,对模型进行微调训练——这将是另一个有趣的故事。

现在,尽情尝试吧!换不同的图片,试试不同的模型,感受一下现代计算机视觉技术带来的“火眼金睛”。


获取更多AI镜像

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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐