索尼 IMX500 出口用于Ultralytics YOLO11
本指南涵盖将Ultralytics YOLO11 模型导出和部署到配备索尼 IMX500 传感器的 Raspberry Pi AI 相机。
在计算能力有限的设备(如Raspberry Pi AI Camera)上部署计算机视觉模型可能很棘手。使用为提高性能而优化的模型格式会带来巨大的不同。
IMX500 型号格式旨在使用最少的功率,同时为神经网络提供快速性能。它能让你优化 Ultralytics YOLO11模型进行优化,以实现高速和低功耗推理。在本指南中,我们将指导您将模型导出并部署为 IMX500 格式,同时使您的模型更容易在Raspberry Pi AI 摄像头上良好运行。
为什么要导出到 IMX500
索尼的IMX500 智能视觉传感器是边缘人工智能处理领域一款改变游戏规则的硬件。它是全球首款具有片上人工智能功能的智能视觉传感器。该传感器有助于克服边缘人工智能领域的诸多挑战,包括数据处理瓶颈、隐私问题和性能限制。
其他传感器只是传递图像和帧,而 IMX500 却能讲述一个完整的故事。它直接在传感器上处理数据,让设备能够实时产生洞察力。
索尼 IMX500 出口YOLO11 机型
IMX500 旨在改变设备直接在传感器上处理数据的方式,而无需将数据发送到云端进行处理。
IMX500 可使用量化模型。量化可使模型更小、更快,而不会损失太多精度。它是边缘计算有限资源的理想选择,通过减少延迟和在本地快速处理数据,使应用程序能够快速响应,而无需依赖云。本地处理还能保证用户数据的私密性和安全性,因为数据不会发送到远程服务器。
IMX500 主要功能
- 元数据输出:IMX500 可以同时输出图像和元数据(推理结果),而不是只传输图像,也可以只输出元数据,以尽量减小数据量、减少带宽和降低成本。
- 解决隐私问题:通过在设备上处理数据,IMX500 解决了隐私问题,是人员计数和占用跟踪等以人为本的应用的理想之选。
- 实时处理:快速的传感器处理支持实时决策,非常适合自主系统等边缘人工智能应用。
开始之前:为获得最佳效果,请按照我们的《模型培训指南》、《数据准备指南》和《超参数调整指南》,确保您的YOLO11 模型为导出做好充分准备。
使用示例
将Ultralytics YOLO11 模型导出为 IMX500 格式,并使用导出的模型运行推理。
备注
在这里,我们进行推理只是为了确保模型能按预期运行。不过,要在树莓派人工智能相机上进行部署和推理,请跳转到 "部署"部分的 "使用 IMX500 导出"。
示例
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model
model.export(format="imx", data="coco8.yaml") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolo11n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolo11n.pt format=imx data=coco8.yaml
# Run inference with the exported model
yolo predict model=yolo11n_imx_model source='https://ultralytics.com/images/bus.jpg'
警告
Ultralytics 软件包会在运行时安装额外的导出依赖项。第一次运行导出命令时,可能需要重启控制台,以确保其正常运行。
出口参数
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
format |
str |
'imx' |
导出模型的目标格式,定义与各种部署环境的兼容性。 |
imgsz |
int 或 tuple |
640 |
模型输入所需的图像尺寸。对于正方形图像,可以是一个整数,或者是一个元组 (height, width) 了解具体尺寸。 |
int8 |
bool |
True |
激活 INT8 量化,进一步压缩模型并加快推理速度,同时将精度损失降至最低,主要用于边缘设备。 |
data |
str |
'coco8.yaml' |
通往 数据集 配置文件(默认: coco8.yaml ),对量化至关重要。 |
fraction |
float |
1.0 |
指定用于 INT8 量化校准的数据集分数。允许在完整数据集的子集上进行校准,这对实验或资源有限的情况非常有用。如果在启用 INT8 时没有指定,则将使用整个数据集。 |
device |
str |
None |
指定导出设备:GPU (device=0 )、CPU (device=cpu ). |
提示
如果在支持CUDA 的GPU 上导出,请通过参数 device=0
以便更快地导出。
有关导出过程的更多详情,请访问Ultralytics 有关导出的文档页面。
导出过程将创建一个ONNX 模型用于量化验证,同时创建一个名为 <model-name>_imx_model
.该目录将包括 packerOut.zip
文件,这对打包模型以便在 IMX500 硬件上部署至关重要。此外,该 <model-name>_imx_model
文件夹将包含一个文本文件 (labels.txt
) 列出了与模型相关的所有标签。
yolo11n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolo11n_imx.onnx
├── yolo11n_imx500_model_MemoryReport.json
└── yolo11n_imx500_model.pbtxt
在部署中使用 IMX500 导出
将Ultralytics YOLO11n 模型导出为 IMX500 格式后,就可以将其部署到树莓派人工智能相机中进行推理。
硬件先决条件
确保有以下硬件:
- Raspberry Pi 5 或 Raspberry Pi 4 Model B
- 树莓派人工智能摄像头
将 Raspberry Pi AI 摄像头连接到 Raspberry Pi 上的 15 针 MIPI CSI 接口,并打开 Raspberry Pi 电源
软件先决条件
备注
本指南使用 Raspberry Pi 5 上运行的 Raspberry Pi OS Bookworm 进行测试。
步骤 1:打开终端窗口,执行以下命令将 Raspberry Pi 软件更新到最新版本。
sudo apt update && sudo apt full-upgrade
第 2 步: 安装运行 IMX500 传感器所需的 IMX500 固件和打包工具。
sudo apt install imx500-all imx500-tools
第 3 步:安装运行的先决条件 picamera2
应用程序。我们稍后将在部署过程中使用该应用程序。
sudo apt install python3-opencv python3-munkres
步骤 4:重启 Raspberry Pi 使更改生效
sudo reboot
打包模型并部署到人工智能相机
在获得 packerOut.zip
在 IMX500 转换过程中,您可以将此文件传入打包工具,以获得 RPK 文件。然后可使用以下工具将此文件直接部署到 AI 摄像机上 picamera2
.
第 1 步:将模型打包成 RPK 文件
imx500-package -i path/to/packerOut.zip -o path/to/output/folder
上述操作将生成一个 network.rpk
指定输出文件夹内的文件。
步骤 2:克隆 picamera2
安装,并导航至 imx500 示例
git clone https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
第 3 步: 使用 IMX500 导出过程中生成的 labels.txt 文件,运行YOLO11 对象检测。
python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels path/to/labels.txt
然后,您就可以看到实时推理输出,如下所示
基准
下面的YOLOv8 和 YOLO11n 基准测试由Ultralytics 团队在 Raspberry Pi AI Camera 上运行,并配备了 imx
模型格式测量速度和精度。
模型 | 格式 | 现状 | 尺寸 RPK (MB) |
mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 3.1 | 0.602 | 58.82 |
YOLO11n | imx | ✅ | 3.2 | 0.644 | 62.50 |
备注
上述基准的验证是在 Raspberry Pi 5 上使用 coco8 数据集完成的。
引擎盖下有什么?
索尼模型压缩工具包(MCT)
索尼的模型压缩工具包(MCT)是通过量化和剪枝优化深度学习模型的强大工具。它支持各种量化方法,并提供先进的算法来减少模型大小和计算复杂度,同时不会明显牺牲准确性。MCT 特别适用于在资源受限的设备上部署模型,确保高效推理和减少延迟。
MCT 的支持功能
索尼的 MCT 具有一系列旨在优化神经网络模型的功能:
- 图形优化:通过将批量归一化等层折叠到前面的层中,将模型转化为更高效的版本。
- 量化参数搜索:利用均方误差、无削边和均方误差等指标将量化噪声最小化。
- 高级量化算法:
- 移位负校正:解决对称激活量化带来的性能问题。
- 异常值过滤:使用 z 分数检测并清除异常值。
- 聚类:利用非均匀量化网格实现更好的分布匹配。
- 混合精度搜索:根据灵敏度为每层分配不同的量化位宽。
- 可视化:使用 TensorBoard 观察模型性能、量化阶段和位宽配置。
量化
MCT 支持多种量化方法,以减小模型大小并提高推理速度:
- 训练后量化 (PTQ):
- 可通过 Keras 和PyTorch API 使用。
- 复杂性:低
- 计算成本:低 (CPU 分钟)
- 基于梯度的后训练量化(GPTQ):
- 可通过 Keras 和PyTorch API 使用。
- 复杂度中等
- 计算成本:中等(2-3GPU 小时)
- 量化感知训练(QAT):
- 复杂性:高
- 计算成本:高(12-36GPU 小时)
MCT 还支持各种权重和激活的量化方案:
- 二合一电源(硬件友好型)
- 对称
- 制服
结构化修剪
MCT 引入了针对特定硬件架构设计的结构化硬件感知模型剪枝技术。该技术通过剪枝 SIMD 组,充分利用目标平台的单指令多数据(SIMD)功能。这样可以减少模型大小和复杂性,同时优化通道利用率,并与 SIMD 架构保持一致,以便有针对性地利用加权内存空间。通过 Keras 和PyTorch API 提供。
IMX500 转换器工具(编译器)
IMX500 转换工具是 IMX500 工具集不可或缺的一部分,它允许编译模型,以便在索尼 IMX500 传感器(例如 Raspberry Pi AI 相机)上部署。该工具为通过Ultralytics 软件处理的Ultralytics YOLO11 模型的转换提供了便利,确保它们在指定硬件上兼容并高效运行。模型量化后的导出过程包括生成二进制文件,这些文件封装了基本数据和特定设备配置,从而简化了在 Raspberry Pi AI 相机上的部署过程。
真实世界使用案例
导出为 IMX500 格式在各行各业都有广泛的适用性。下面是一些例子:
- 边缘人工智能和物联网:在无人机或安防摄像头上实现物体检测,在这种情况下,必须在低功耗设备上进行实时处理。
- 可穿戴设备:在健康监测可穿戴设备上部署为小规模人工智能处理而优化的模型。
- 智慧城市:使用 IMX500 导出的YOLO11 模型,以更快的处理速度和最小的延迟进行交通监控和安全分析。
- 零售分析:通过在销售点系统或智能货架上部署优化模型,加强店内监控。
结论
将Ultralytics YOLO11 模型导出为索尼 IMX500 格式后,您就可以在基于 IMX500 的相机上部署模型,进行高效推理。利用先进的量化技术,您可以缩小模型大小,提高推理速度,而不会明显影响精度。
更多信息和详细指南,请参阅索尼IMX500 网站。
常见问题
如何为 Raspberry Pi AI 相机将YOLO11 模型导出为 IMX500 格式?
要将YOLO11 模型导出为 IMX500 格式,请使用Python API 或CLI 命令:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="imx") # Exports with PTQ quantization by default
导出过程将创建一个目录,其中包含部署所需的文件,包括 packerOut.zip
可与 Raspberry Pi 上的 IMX500 打包工具一起使用。
使用 IMX500 格式进行边缘人工智能部署的主要优势是什么?
IMX500 格式为边缘部署提供了几个重要优势:
- 片上人工智能处理减少了延迟和功耗
- 同时输出图像和元数据(推理结果),而不是只输出图像
- 无需依赖云,在本地处理数据,提高隐私性
- 实时处理功能是时间敏感型应用的理想选择
- 优化量化,在资源有限的设备上高效部署模型
部署 IMX500 需要哪些硬件和软件前提条件?
部署 IMX500 型号时,您需要
硬件
- Raspberry Pi 5 或 Raspberry Pi 4 Model B
- 配备 IMX500 传感器的树莓派人工智能相机
软件
- 树莓派操作系统书虫
- IMX500 固件和工具 (
sudo apt install imx500-all imx500-tools
) - Python 套餐为
picamera2
(sudo apt install python3-opencv python3-munkres
)
YOLO11 型号在 IMX500 上的性能如何?
基于Ultralytics Raspberry Pi AI 摄像头基准测试:
- YOLO11n 每幅图像的推理时间为 58.82 毫秒
- COCO8 数据集的 mAP50-95 为 0.522
- 量化后的模型大小仅为 2.9MB
这表明,IMX500 格式可为边缘人工智能应用提供高效的实时推理,同时保持良好的精度。
如何将导出的模型打包并部署到 Raspberry Pi AI 摄像机?
导出为 IMX500 格式后:
-
使用打包工具创建 RPK 文件:
imx500-package -i path/to/packerOut.zip -o path/to/output/folder
-
克隆并安装 picamera2:
git clone https://github.com/raspberrypi/picamera2 cd picamera2 && pip install -e . --break-system-packages
-
使用生成的 RPK 文件运行推理:
python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --labels path/to/labels.txt