索尼 IMX500 出口用于Ultralytics YOLOv8
本指南涵盖将Ultralytics YOLOv8 模型导出和部署到配备索尼 IMX500 传感器的 Raspberry Pi AI 相机。
在计算能力有限的设备(如Raspberry Pi AI Camera)上部署计算机视觉模型可能很棘手。使用为提高性能而优化的模型格式会带来巨大的不同。
IMX500 型号格式旨在使用最少的功率,同时为神经网络提供快速性能。它允许你优化你的 Ultralytics YOLOv8模型进行优化,以实现高速和低功耗推理。在本指南中,我们将指导您将模型导出并部署为 IMX500 格式,同时使您的模型更容易在Raspberry Pi AI 摄像头上良好运行。
为什么要导出到 IMX500
索尼的IMX500 智能视觉传感器是边缘人工智能处理领域一款改变游戏规则的硬件。它是全球首款具有片上人工智能功能的智能视觉传感器。该传感器有助于克服边缘人工智能领域的诸多挑战,包括数据处理瓶颈、隐私问题和性能限制。
其他传感器只是传递图像和帧,而 IMX500 却能讲述一个完整的故事。它直接在传感器上处理数据,让设备能够实时产生洞察力。
索尼 IMX500 出口YOLOv8 机型
IMX500 旨在改变设备直接在传感器上处理数据的方式,而无需将数据发送到云端进行处理。
IMX500 可使用量化模型。量化可使模型更小、更快,而不会损失太多精度。它是边缘计算有限资源的理想选择,通过减少延迟和在本地快速处理数据,使应用程序能够快速响应,而无需依赖云。本地处理还能保证用户数据的私密性和安全性,因为数据不会发送到远程服务器。
IMX500 主要功能
- 元数据输出:IMX500 可以同时输出图像和元数据(推理结果),而不是只传输图像,也可以只输出元数据,以尽量减小数据量、减少带宽和降低成本。
- 解决隐私问题:通过在设备上处理数据,IMX500 解决了隐私问题,是人员计数和占用跟踪等以人为本的应用的理想之选。
- 实时处理:快速的传感器处理支持实时决策,非常适合自主系统等边缘人工智能应用。
开始之前:为获得最佳效果,请按照我们的《模型训练指南》、《数据准备指南》和《超参数调整指南》,确保您的YOLOv8 模型为导出做好充分准备。
使用示例
将Ultralytics YOLOv8 模型导出为 IMX500 格式,并使用导出的模型运行推理。
备注
在这里,我们进行推理只是为了确保模型能按预期运行。不过,要在树莓派人工智能相机上进行部署和推理,请跳转到 "部署"部分的 "使用 IMX500 导出"。
示例
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="imx") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolov8n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
导出过程将创建一个ONNX 模型用于量化验证,同时创建一个名为 <model-name>_imx_model
.该目录将包括 packerOut.zip
文件,这对打包模型以便在 IMX500 硬件上部署至关重要。此外,该 <model-name>_imx_model
文件夹将包含一个文本文件 (labels.txt
) 列出了与模型相关的所有标签。
yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt
论据
将模型导出为 IMX500 格式时,可以指定各种参数:
钥匙 | 价值 | 说明 |
---|---|---|
format |
imx |
导出格式(imx) |
int8 |
True |
为模型启用 INT8 量化(默认值: True ) |
imgsz |
640 |
模型输入的图像大小(默认值: 640 ) |
在部署中使用 IMX500 导出
将Ultralytics YOLOv8n 模型导出为 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 软件更新到最新版本。
第 2 步: 安装运行 IMX500 传感器所需的 IMX500 固件和打包工具。
第 3 步:安装运行的先决条件 picamera2
应用程序。我们稍后将在部署过程中使用该应用程序。
步骤 4:重启 Raspberry Pi 使更改生效
打包模型并部署到人工智能相机
在获得 packerOut.zip
在 IMX500 转换过程中,您可以将此文件传入打包工具,以获得 RPK 文件。然后可使用以下工具将此文件直接部署到 AI 摄像机上 picamera2
.
第 1 步:将模型打包成 RPK 文件
上述操作将生成一个 network.rpk
指定输出文件夹内的文件。
步骤 2:克隆 picamera2
安装,并导航至 imx500 示例
git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
步骤 3: 使用 IMX500 导出过程中生成的 labels.txt 文件,运行YOLOv8 对象检测。
python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels <path to labels.txt>
然后,您就可以看到实时推理输出,如下所示
基准
YOLOv8 以下基准测试由Ultralytics 团队在 Raspberry Pi AI 摄像头上运行,该摄像头配备了 imx
模型格式测量速度和精度。
模型 | 格式 | 现状 | 大小(MB) | mAP50-95(B) | 推理时间(毫秒/分钟) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.9 | 0.522 | 66.66 |
备注
使用 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 YOLOv8 模型的转换,确保它们在指定硬件上兼容并高效运行。模型量化后的导出程序包括生成二进制文件,这些文件封装了基本数据和特定设备配置,从而简化了在 Raspberry Pi AI 相机上的部署过程。
真实世界使用案例
导出为 IMX500 格式在各行各业都有广泛的适用性。下面是一些例子:
- 边缘人工智能和物联网:在无人机或安防摄像头上实现物体检测,在这种情况下,必须在低功耗设备上进行实时处理。
- 可穿戴设备:在健康监测可穿戴设备上部署为小规模人工智能处理而优化的模型。
- 智能城市:使用 IMX500 导出的YOLOv8 模型进行交通监控和安全分析,处理速度更快,延迟最小。
- 零售分析:通过在销售点系统或智能货架上部署优化模型,加强店内监控。
结论
将Ultralytics YOLOv8 模型导出为索尼 IMX500 格式后,您就可以在基于 IMX500 的相机上部署模型,进行高效推理。利用先进的量化技术,您可以缩小模型大小,提高推理速度,而不会明显影响精度。
更多信息和详细指南,请参阅索尼IMX500 网站。
常见问题
如何为 Raspberry Pi AI 相机将YOLOv8 模型导出为 IMX500 格式?
要将YOLOv8 模型导出为 IMX500 格式,请使用Python API 或CLI 命令:
from ultralytics import YOLO
model = YOLO("yolov8n.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
)
YOLOv8 型号在 IMX500 上的性能如何?
基于Ultralytics Raspberry Pi AI 摄像头基准测试:
- YOLOv8n 每幅图像的推理时间达到 66.66ms
- COCO8 数据集的 mAP50-95 为 0.522
- 量化后的模型大小仅为 2.9MB
这表明,IMX500 格式可为边缘人工智能应用提供高效的实时推理,同时保持良好的精度。
如何将导出的模型打包并部署到 Raspberry Pi AI 摄像机?
导出为 IMX500 格式后:
-
使用打包工具创建 RPK 文件:
-
克隆并安装 picamera2:
-
使用生成的 RPK 文件运行推理: