コンテンツぞスキップ

゜ニヌ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 フォヌマットに゚クスポヌトし、゚クスポヌトしたモデルで掚論を実行したす。

泚

ここでは、モデルが期埅通りに動䜜するこずを確認するために掚論を行いたす。ただし、Raspberry PiのAIカメラぞのデプロむず掚論に぀いおは、デプロむのIMX500 Exportを䜿うのセクションにゞャンプしおください。

䟋

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

# Run inference with the exported model
yolo predict model=yolov8n_imx_model source='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 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 <output folder>

䞊蚘は 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>

するず、次のようにラむブの掚論出力を芋るこずができる。

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

ベンチマヌク

YOLOv8 以䞋のベンチマヌクは、Ultralytics チヌムが Raspberry Pi AI Camera で実行したものです。 imx スピヌドず粟床を枬定するモデル圢匏。

モデル フォヌマット ステヌタス サむズ (MB) mAP50-95(B) 掚論時間ms/im
YOLOv8n むミックス ✅ 2.9 0.522 66.66

泚

䞊蚘のベンチマヌクの怜蚌は、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枚あたりの掚論時間66.66msを達成
  • COCO8デヌタセットでのmAP50-95は0.522
  • 量子化埌のモデルサむズはわずか2.9MB

これは、IMX500フォヌマットが、゚ッゞAIアプリケヌションの粟床を維持しながら、効率的なリアルタむム掚論を提䟛するこずを瀺しおいる。

゚クスポヌトしたモデルをRaspberry Pi AI Cameraにデプロむする方法を教えおください。

IMX500フォヌマットに゚クスポヌト埌

  1. パッケヌゞャヌツヌルを䜿っおRPKファむルを䜜成する

    imx500-package -i <path to packerOut.zip> -o <output folder>
    
  2. picamera2をクロヌンしおむンストヌルする

    git clone -b next 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 25 --bbox-normalization --labels <path to labels.txt>
    
📅䜜成 0 日前 ✏曎新 0日前

コメント