コンテンツへスキップ

Sony IMX500 Export for Ultralytics YOLO11

This guide covers exporting and deploying Ultralytics YOLO11 models to Raspberry Pi AI Cameras that feature the Sony IMX500 sensor.

Raspberry Pi AI Cameraのような、計算能力が限られているデバイスにコンピュータ・ビジョン・モデルを導入するのは厄介なことです。より高速なパフォーマンスのために最適化されたモデルフォーマットを使用することで、大きな違いが生まれます。

The IMX500 model format is designed to use minimal power while delivering fast performance for neural networks. It allows you to optimize your Ultralytics YOLO11 models for high-speed and low-power inferencing. In this guide, we'll walk you through exporting and deploying your models to the IMX500 format while making it easier for your models to perform well on the Raspberry Pi AI Camera.

ラズベリーパイAIカメラ

IMX500にエクスポートする理由

ソニーのIMX500インテリジェント・ビジョン・センサーは、エッジAI処理における画期的なハードウェアです。これは、オンチップAI機能を備えた世界初のインテリジェント・ビジョン・センサーです。このセンサーは、データ処理のボトルネック、プライバシーの懸念、パフォーマンスの制限など、エッジAIにおける多くの課題を克服するのに役立ちます。
他のセンサーが単に画像やフレームを伝えるだけであるのに対し、IMX500は全体のストーリーを伝えます。センサー上で直接データを処理するため、デバイスはリアルタイムで洞察を得ることができる。

Sony's IMX500 Export for YOLO11 Models

IMX500は、クラウドにデータを送信して処理することなく、センサー上で直接データを処理するように設計されている。

IMX500は量子化されたモデルで動作します。量子化することで、精度をそれほど落とすことなく、モデルをより小さく高速化することができる。これはエッジコンピューティングの限られたリソースに最適で、レイテンシーを削減することでアプリケーションの迅速な対応を可能にし、クラウドに依存することなくローカルで迅速にデータ処理を行うことができます。また、ローカル処理では、ユーザーデータがリモートサーバーに送信されないため、プライベートかつセキュアに保たれます。

IMX500 主な特徴

  • メタデータ出力:IMX500は、画像のみを送信するのではなく、画像とメタデータ(推論結果)の両方を出力することができ、データサイズの最小化、帯域幅の削減、コストの削減のためにメタデータのみを出力することができます。
  • プライバシーの問題に対応:デバイス上でデータを処理することにより、IMX500はプライバシーに関する懸念に対応し、人物カウントや居住者追跡のような人間中心のアプリケーションに最適です。
  • リアルタイム処理:高速なオンセンサー処理がリアルタイムの判断をサポートし、自律システムなどのエッジAIアプリケーションに最適です。

Before You Begin: For best results, ensure your YOLO11 model is well-prepared for export by following our Model Training Guide, Data Preparation Guide, and Hyperparameter Tuning Guide.

使用例

Export an Ultralytics YOLO11 model to IMX500 format and run inference with the exported model.

ここでは、モデルが期待通りに動作することを確認するために推論を行います。ただし、Raspberry PiのAIカメラへのデプロイと推論については、デプロイのIMX500 Exportを使うのセクションにジャンプしてください。

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'

警告

The Ultralytics package installs additional export dependencies at runtime. The first time you run the export command, you may need to restart your console to ensure it works correctly.

エクスポートの引数

議論 タイプ デフォルト 説明
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 Exportの展開での使用

After exporting Ultralytics YOLO11n model to IMX500 format, it can be deployed to Raspberry Pi AI Camera for inference.

ハードウェアの前提条件

以下のハードウェアがあることを確認してください:

  1. Raspberry Pi 5 または Raspberry Pi 4 Model B
  2. ラズベリーパイAIカメラ

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

モデルをパッケージ化し、AIカメラにデプロイする

取得後 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

Step 3: Run YOLO11 object detection, using the labels.txt file that has been generated during the IMX500 export.

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

すると、次のようにライブの推論出力を見ることができる。

Raspberry PiのAIカメラによる推論

ベンチマーク

YOLOv8 and YOLO11n benchmarks below were run by the Ultralytics team on Raspberry Pi AI Camera with imx スピードと精度を測定するモデル形式。

モデル フォーマット ステータス Size of RPK (MB) mAP50-95(B) 推論時間(ms/im)
YOLOv8n イミックス 3.1 0.602 58.82
YOLO11n イミックス 3.2 0.644 62.50

Validation for the above benchmark was done using coco8 dataset on a Raspberry Pi 5

ボンネットの下には何がある?

IMX500の展開

ソニーモデルコンプレッションツールキット(MCT)

ソニーのModel Compression Toolkit(MCT)は、量子化と枝刈りによってディープラーニングモデルを最適化するための強力なツールです。様々な量子化手法をサポートし、精度を大幅に犠牲にすることなくモデルサイズと計算の複雑さを低減する高度なアルゴリズムを提供します。MCTは、リソースに制約のあるデバイスにモデルを展開する際に特に有用で、効率的な推論と待ち時間の短縮を実現します。

MCTのサポート機能

ソニーのMCTは、ニューラルネットワークモデルを最適化するために設計されたさまざまな機能を提供する:

  1. グラフの最適化:バッチ正規化などのレイヤーを直前のレイヤーに折りたたむことで、モデルをより効率的なバージョンに変換します。
  2. 量子化パラメータ探索:Mean-Square-Error、No-Clipping、Mean-Average-Errorなどのメトリクスを使用して量子化ノイズを最小化します。
  3. 高度な量子化アルゴリズム:
    • シフトマイナス補正:対称活性化量子化によるパフォーマンスの問題に対処。
    • 外れ値フィルタリング:Zスコアを使用して外れ値を検出し、除去します。
    • クラスタリング:より良い分布マッチングのために不均一な量子化グリッドを利用する。
    • 混合精度サーチ:感度に基づき、レイヤーごとに異なる量子化ビット幅を割り当てる。
  4. 可視化:TensorBoardを使用して、モデル性能の洞察、量子化フェーズ、およびビット幅の構成を観察します。

量子化

MCTは、モデルサイズを縮小し、推論速度を向上させるために、いくつかの量子化手法をサポートしている:

  1. ポストトレーニング量子化(PTQ):
    • KerasおよびPyTorch API経由で利用可能。
    • 複雑さ:低い
    • 計算コスト:低い (CPU 分)
  2. 勾配ベースのポストトレーニング量子化(GPTQ):
    • KerasおよびPyTorch API経由で利用可能。
    • 複雑さ:ミディアム
    • 計算コスト:中程度 (2-3GPU 時間)
  3. 量子化対応トレーニング(QAT):
    • 複雑さ:高
    • 計算コスト:高い (12-36GPU 時間)

MCTはまた、重みと活性化のためのさまざまな量子化スキームをサポートしている:

  1. パワーオブツー(ハードウェアに優しい)
  2. シンメトリック
  3. ユニフォーム

構造化された剪定

MCTは、特定のハードウェアアーキテクチャ向けに設計された、構造化されたハードウェアを意識したモデル刈り込みを導入しています。この技法は、SIMDグループをプルーニングすることで、ターゲットプラットフォームのSIMD(Single Instruction, Multiple Data)機能を活用します。これにより、モデルのサイズと複雑さを削減し、チャネル利用を最適化します。KerasおよびPyTorch API経由で利用可能です。

IMX500コンバータツール(コンパイラ)

The IMX500 Converter Tool is integral to the IMX500 toolset, allowing the compilation of models for deployment on Sony's IMX500 sensor (for instance, Raspberry Pi AI Cameras). This tool facilitates the transition of Ultralytics YOLO11 models processed through Ultralytics software, ensuring they are compatible and perform efficiently on the specified hardware. The export procedure following model quantization involves the generation of binary files that encapsulate essential data and device-specific configurations, streamlining the deployment process on the Raspberry Pi AI Camera.

実際の使用例

IMX500フォーマットへのエクスポートは、業界を問わず幅広く適用できます。以下はその例です:

  • エッジAIとIoT:低消費電力デバイスでのリアルタイム処理が不可欠なドローンやセキュリティカメラでの物体検出を可能にする。
  • ウェアラブルデバイス:小規模なAI処理に最適化されたモデルを健康モニタリング用ウェアラブルに展開する。
  • Smart Cities: Use IMX500-exported YOLO11 models for traffic monitoring and safety analysis with faster processing and minimal latency.
  • リテール・アナリティクス:POSシステムやスマートシェルフに最適化されたモデルを導入することで、店舗内のモニタリングを強化。

結論

Exporting Ultralytics YOLO11 models to Sony's IMX500 format allows you to deploy your models for efficient inference on IMX500-based cameras. By leveraging advanced quantization techniques, you can reduce model size and improve inference speed without significantly compromising accuracy.

詳細とガイドラインについては、ソニーのIMX500ウェブサイトを参照してください。

よくあるご質問

How do I export a YOLO11 model to IMX500 format for Raspberry Pi AI Camera?

To export a YOLO11 model to IMX500 format, use either the Python API or CLI command:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="imx")  # Exports with PTQ quantization by default

エクスポートプロセスは、以下のようなデプロイに必要なファイルを含むディレクトリを作成します。 packerOut.zip これは、Raspberry Pi上のIMX500パッケージャー・ツールで使用できる。

エッジAIの展開にIMX500フォーマットを使用する主な利点は何ですか?

IMX500フォーマットは、エッジ展開においていくつかの重要な利点を提供する:

  • オンチップのAI処理でレイテンシーと消費電力を削減
  • 画像のみではなく、画像とメタデータ(推論結果)の両方を出力。
  • クラウドに依存しないローカルなデータ処理によるプライバシーの強化
  • 一刻を争うアプリケーションに最適なリアルタイム処理機能
  • リソースに制約のあるデバイスへの効率的なモデル展開のための量子化の最適化

IMX500の導入には、どのようなハードウェアとソフトウェアの前提条件が必要ですか?

IMX500モデルを導入するには、以下のものが必要です:

ハードウェアだ:

  • Raspberry Pi 5 または Raspberry Pi 4 Model B
  • IMX500センサー搭載Raspberry Pi AIカメラ

ソフトウェアだ:

  • ラズベリーパイOSの本の虫
  • IMX500のファームウェアとツール(sudo apt install imx500-all imx500-tools)
  • Python パッケージ picamera2 (sudo apt install python3-opencv python3-munkres)

What performance can I expect from YOLO11 models on the IMX500?

Raspberry Pi AI CameraのUltralytics ベンチマークに基づく:

  • YOLO11n achieves 58.82ms inference time per image
  • COCO8データセットでのmAP50-95は0.522
  • 量子化後のモデルサイズはわずか2.9MB

これは、IMX500フォーマットが、エッジAIアプリケーションの精度を維持しながら、効率的なリアルタイム推論を提供することを示している。

エクスポートしたモデルをRaspberry Pi AI Cameraにデプロイする方法を教えてください。

IMX500フォーマットにエクスポート後:

  1. パッケージャーツールを使ってRPKファイルを作成する:

    imx500-package -i path/to/packerOut.zip -o path/to/output/folder
    
  2. picamera2をクローンしてインストールする:

    git clone https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. 生成されたRPKファイルを使用して推論を実行する:

    python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --labels path/to/labels.txt
    
📅作成:5ヶ月前 ✏️更新しました 6日前

コメント