【Raspberry Pi 5 测评】部署YOLO11实时物体检测模型
[复制链接]
【Raspberry Pi 5 测评】部署YOLO11实时物体检测模型
【Raspberry Pi 5 测评】部署YOLO11实时物体检测模型
一、YOLO11概述
二、YOLO11主要功能
三、创建Python虚拟环境
四、激活Python虚拟环境
五、安装ultralytics包
六、体验YOLO11模型
七、绘制推理结果
九、参考链接
一、YOLO11概述
YOLO11 是 UltralyticsYOLO 是实时物体检测器系列中的最新产品,以最先进的 精度、速度和效率重新定义了可能实现的目标。在之前YOLO 版本令人印象深刻的进步基础上,YOLO11 在架构和训练方法上进行了重大改进,使其成为广泛的 计算机视觉任务的多功能选择。
二、YOLO11主要功能
- 增强型特征提取: YOLO11 采用改进的骨干和颈部架构,增强了特征提取能力,从而实现更精确的目标检测和复杂任务性能。
- 优化效率和速度: YOLO11 引入了完善的架构设计和优化的训练管道,提供更快的处理速度,并在准确性和性能之间保持最佳平衡。
- 参数更少,精度更高:随着模型设计的进步,YOLO11m 在 COCO 数据集上实现了更高的平均精度(mAP),同时使用的参数比YOLOv8m 减少了 22%,从而在不影响精度的情况下提高了计算效率。
- 跨环境适应性: YOLO11 可在各种环境中无缝部署,包括边缘设备、云平台和支持NVIDIA GPU 的系统,确保最大的灵活性。
- 支持的任务范围广泛:无论是对象检测、实例分割、图像分类、姿态估计,还是面向对象检测 (OBB),YOLO11 都能应对各种计算机视觉挑战。
三、创建Python虚拟环境
树莓派上默认使用的是Python3,不允许直接使用pip安装软件包,直接使用pip install会报错:
并且提示使用python3 -m venv path/to/venv的方式创建虚拟环境。
接下来,使用如下命令创建一个虚拟环境,用于后续的yolo11下载和运行:
python3 -m venv yolo11env
四、激活Python虚拟环境
执行如下命令,将会激活Python虚拟环境:
source yolo11env/bin/activate
激活后,命令提示符最前面会有一个括号,显示当前虚拟环境名称。
五、安装ultralytics包
执行如下命令,安装ultralytics包:
pip install ultralytics
执行过程中会下载并安装很多依赖的软件包。
六、体验YOLO11模型
安装完ultralytics包之后,就可以在当前Python虚拟环境中体验YOLO11模型了。
首先,输入python命令并回车,打开一个交互式Python命令行。
输入如下代码,下载YOLO11模型:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
接下来,就可以使用YOLO11模型进行推理了:
可以看到,推理耗时 357.3 毫秒,识别到了4个人和1个巴士,图片保存到了/home/xu/bus.jpg。
图片实际画面如下:
七、绘制推理结果
结合OpenCV绘制矩形框和文本的功能,可以写一段代码,将推理结果绘制出来,并保存为图片:
from ultralytics import YOLO
import cv2
import sys
# 1. 加载预训练模型(YOLOv8 官方模型)
model = YOLO("yolo11n.pt")
# 2. 读取输入图片
image_path = sys.argv[1]
image = cv2.imread(image_path)
# 3. 运行目标检测
results = model.predict(image, save=False) # save=False 避免自动保存覆盖
# 4. 提取检测结果并绘制矩形框
for result in results:
boxes = result.boxes # 获取边界框信息
for box in boxes:
# 提取坐标 (xyxy 格式: 左上右下)
x1, y1, x2, y2 = map(int, box.xyxy[0])
# 提取类别和置信度
cls_id = int(box.cls[0])
conf = float(box.conf[0])
cls_name = model.names[cls_id]
# 绘制矩形框
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
# 添加类别和置信度标签
label = f"{cls_name} {conf:.2f}"
cv2.putText(image, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# 5. 保存结果图片
output_path = image_path.split('.')[0] + "output.png"
cv2.imwrite(output_path, image)
print(f"检测结果已保存到 {output_path}")
运行以上脚本,输出output.jpg文件,内容如下:
九、参考链接
- YOLO11介绍: https://docs.ultralytics.com/zh/models/yolo11/
- OpenCV-Python接口说明: https://docs.opencv.org/4.x/d7/d16/tutorial_py_table_of_contents_core.html
- ultralytics快速入门: https://docs.ultralytics.com/zh/quickstart/
|