コンテンツへスキップ

ソニーIMX500輸出Ultralytics YOLOv8

このガイドでは、Sony IMX500 センサーを搭載した Raspberry Pi AI カメラへのUltralytics YOLOv8 モデルのエクスポートと展開について説明します。

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

IMX500のモデル・フォーマットは、ニューラル・ネットワークの高速性能を実現しながら、最小限の電力しか消費しないように設計されています。モデルを最適化することができます。 Ultralytics YOLOv8モデルを最適化することができます。このガイドでは、Raspberry Pi AI Camera上でモデルがより簡単に動作するようにしながら、IMX500フォーマットへのモデルのエクスポートとデプロイについて説明します。

ラズベリーパイAIカメラ

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

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

ソニーのIMX500輸出YOLOv8 モデル

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

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

IMX500 主な特徴

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

始める前に最良の結果を得るためには、モデル・トレーニング・ガイドデータ準備ガイド、およびハイパーパラメータ調整ガイドに従って、YOLOv8 モデルがエクスポートのために十分に準備されていることを確認してください。

使用例

Ultralytics YOLOv8 モデルを IMX500 フォーマットにエクスポートし、エクスポートしたモデルで推論を実行します。

IMXエクスポートは、現在YOLOv8n モデルに対してのみサポートされている。ここでは、モデルが期待通りに動作することを確認するために推論を行います。ただし、Raspberry PiのAIカメラへのデプロイと推論については、デプロイのIMX500エクスポートを使用するセクションにジャンプしてください。

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model
model.export(format="imx", data="coco8.yaml")  # 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")
# Export a YOLOv8n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolov8n.pt format=imx data=coco8.yaml

# Run inference with the exported model
yolo predict model=yolov8n_imx_model source='https://ultralytics.com/images/bus.jpg'

エクスポートの引数

議論 タイプ デフォルト 説明
format str 'imx' エクスポートされたモデルのターゲットフォーマットで、さまざまな展開環境との互換性を定義します。
imgsz int または tuple 640 モデル入力に必要な画像サイズ。正方形画像の場合は整数,正方形画像の場合はタプルになります. (height, width) 具体的な寸法については
int8 bool True INT8量子化を有効にし、モデルをさらに圧縮し、主にエッジデバイスのために、最小限の精度損失で推論を高速化する。
data str 'coco8.yaml' への道 データセット 設定ファイル(デフォルト: coco8.yaml)、量子化に不可欠である。

エクスポートプロセスの詳細については、Ultralytics ドキュメントのエクスポートに関するページをご覧ください。

エクスポート処理により、量子化検証用の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 Exportの展開での使用

Ultralytics YOLOv8n モデルを IMX500 フォーマットにエクスポートした後、推論用に Raspberry Pi AI Camera に展開することができる。

ハードウェアの前提条件

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

  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

ステップ 3: IMX500 エクスポート時に生成された labels.txt ファイルを使用して、YOLOv8 オブジェクト検出を実行します。

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 以下のベンチマークは、Ultralytics チームが Raspberry Pi AI Camera で実行したものです。 imx スピードと精度を測定するモデル形式。

モデル フォーマット ステータス サイズ (MB) mAP50-95(B) 推論時間(ms/im)
YOLOv8n イミックス 2.9 0.522 58.82

上記のベンチマークの検証は、coco8データセットを用いて行われた。

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

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コンバータツール(コンパイラ)

IMX500 Converter Tool は IMX500 ツールセットに不可欠なもので、Sony の IMX500 センサー(例えば、Raspberry Pi AI Cameras)上で展開するモデルのコンパイルを可能にします。このツールは、Ultralytics ソフトウェアを通して処理されたUltralytics YOLOv8 モデルの移行を容易にし、互換性があり、指定されたハードウェア上で効率的に動作することを保証します。モデルの量子化後のエクスポート手順では、重要なデータとデバイス固有の設定をカプセル化したバイナリファイルが生成され、Raspberry Pi AI Cameraへの展開プロセスが効率化されます。

実際の使用例

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

  • エッジAIとIoT:低消費電力デバイスでのリアルタイム処理が不可欠なドローンやセキュリティカメラでの物体検出を可能にする。
  • ウェアラブルデバイス:小規模なAI処理に最適化されたモデルを健康モニタリング用ウェアラブルに展開する。
  • スマートシティ:IMX500からエクスポートされたYOLOv8 、より高速な処理と最小限のレイテンシーで、交通モニタリングと安全分析に使用できます。
  • リテール・アナリティクス:POSシステムやスマートシェルフに最適化されたモデルを導入することで、店舗内のモニタリングを強化。

結論

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パッケージャー・ツールで使用できる。

エッジ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)

IMX500のYOLOv8 、どのようなパフォーマンスが期待できますか?

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

  • YOLOv8n 画像1枚あたりの推論時間58.82msを達成
  • 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
    
📅作成 4ヶ月前 ✏️更新 10日前

コメント