YOLO-v5新手教程:预训练模型快速测试与推理
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版”一样。
| 模型代号 | 特点 | 适用场景 |
|---|---|---|
| yolov5n | Nano,最小最快,精度较低 | 对速度要求极高的移动端或嵌入式设备 |
| yolov5s | Small,小且快,精度与速度平衡 | 入门测试、实时检测的首选 |
| yolov5m | Medium,中等大小,精度更高 | 对精度有一定要求的通用场景 |
| yolov5l | Large,大模型,精度高 | 追求高精度的服务器端应用 |
| yolov5x | XLarge,最大最准,速度最慢 | 学术研究或对精度有极致要求的场景 |
你可以像换衣服一样轻松切换模型,只需修改加载模型的那行代码:
# 试试更大、更准的模型
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)方式加载。
- 解决:镜像通常已经预下载了常用模型。如果遇到问题,可以检查网络,或者手动下载模型文件(.pt格式)放到指定目录,然后通过
-
问题:
results.show()在Jupyter里不显示图片。- 解决:Jupyter有时需要额外配置。更可靠的方式是直接保存图片然后查看:
results.save(),然后去runs/detect/exp文件夹里找到生成的图片。
- 解决:Jupyter有时需要额外配置。更可靠的方式是直接保存图片然后查看:
-
问题:如何只检测特定的物体(比如只检测人和车)?
- 解决:加载模型时可以指定类别。例如,只检测‘person’和‘car’:
或者使用model = torch.hub.load('ultralytics/yolov5', 'yolov5s', classes=[0, 2]) # COCO数据集中,0是人,2是车model.conf = 0.25调整置信度阈值,过滤掉把握不大的检测框。
- 解决:加载模型时可以指定类别。例如,只检测‘person’和‘car’:
-
技巧:批量检测多张图片。
- 非常简单,把图片路径放在一个列表里传给模型就行:
image_list = [‘img1.jpg’, ‘img2.jpg’, ‘img3.jpg’] batch_results = model(image_list) batch_results.show() # 会显示所有图片的结果 batch_results.save() # 会保存所有图片的结果
- 非常简单,把图片路径放在一个列表里传给模型就行:
6. 总结
通过这个简短的教程,你已经掌握了使用预训练YOLO-v5模型进行目标检测的核心流程:
- 环境免配置:利用预置镜像,跳过所有安装烦恼,直接进入实战。
- 核心三板斧:加载模型 (
torch.hub.load)、输入图片、执行推理 (model(img)),三行代码就能看到效果。 - 结果随心用:可以屏幕显示、保存图片,还能导出详细数据表格进行进一步分析。
- 模型可切换:根据需求在速度(yolov5n/s)和精度(yolov5l/x)之间灵活选择。
这仅仅是YOLO-v5世界的入口。这个预训练模型已经能识别80种常见物体(COCO数据集)。如果你想让它识别特定的东西,比如识别某种零件、某种植物,下一步就是准备自己的图片数据,对模型进行微调训练——这将是另一个有趣的故事。
现在,尽情尝试吧!换不同的图片,试试不同的模型,感受一下现代计算机视觉技术带来的“火眼金睛”。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)