コンテンツへスキップ

クイックスタートガイドラズベリーパイとUltralytics YOLOv8

この包括的なガイドは、Ultralytics YOLOv8 をRaspberry Piデバイス上に展開するための詳細なウォークスルーを提供します。さらに、これらの小型で強力なデバイス上でのYOLOv8 の機能を実証するためのパフォーマンスベンチマークも紹介しています。



見るんだ: Raspberry Pi 5のアップデートと改良。

このガイドは最新のRaspberry Pi OS Bookworm (Debian 12)が動作するRaspberry Pi 4とRaspberry Pi 5でテストされています。Raspberry Pi 3などの古いRaspberry Piデバイスにこのガイドを使用しても、同じRaspberry Pi OS Bookwormがインストールされている限り、動作することが期待されます。

ラズベリーパイとは?

ラズベリー・パイは小型で手頃な価格のシングルボードコンピューターだ。趣味のホームオートメーションから産業用途まで、幅広いプロジェクトやアプリケーションで人気を博している。ラズベリー・パイのボードは、さまざまなオペレーティング・システムを実行でき、センサーやアクチュエーター、その他のハードウェア・コンポーネントと簡単に統合できるGPIO(汎用入出力)ピンを備えている。さまざまな仕様のモデルがあるが、低価格、コンパクト、多用途という基本的な設計思想は共通している。

Raspberry Piシリーズの比較

ラズベリーパイ3 ラズベリーパイ4 ラズベリーパイ5
CPU Broadcom BCM2837、Cortex-A53 64ビットSoC Broadcom BCM2711、Cortex-A72 64ビットSoC Broadcom BCM2712、Cortex-A76 64ビットSoC
CPU 最大周波数 1.4GHz 1.8GHz 2.4GHz
GPU ビデオコアIV ビデオコアVI ビデオコアVII
GPU 最大周波数 400Mhz 500Mhz 800Mhz
メモリー 1GB LPDR2 SDRAM 1GB、2GB、4GB、8GB LPDR4-3200 SDRAM 4GB、8GB LPDR4X-4267 SDRAM
PCIe 該当なし 該当なし 1xPCIe 2.0インターフェイス
最大消費電力 2.5A@5V 3A@5V 5A@5V(PD有効)

ラズベリーパイOSとは?

Raspberry Pi OS(旧称:Raspbian)は、Raspberry Pi Foundationが配布するコンパクトなシングルボードコンピュータRaspberry Piファミリ用のDebian GNU/LinuxディストリビューションをベースにしたUnixライクなオペレーティングシステムである。Raspberry Pi OSは、ARM CPUを搭載したRaspberry Pi向けに高度に最適化されており、Openboxスタッキングウィンドウマネージャを備えた修正版LXDEデスクトップ環境を使用している。Raspberry Pi OS は、Raspberry Pi 上で可能な限り多くの Debian パッケージの安定性と性能を向上させることに重点を置き、活発に開発が進められています。

Raspberry Pi OSをRaspberry Piにフラッシュする

Raspberry Piを手に入れたらまず最初にすることは、Raspberry Pi OSが入ったマイクロSDカードをフラッシュし、デバイスに挿入してOSを起動することです。Raspberry Piによる詳細な「Getting Started Documentation」に沿って、デバイスを初めて使う準備をしましょう。

セットアップUltralytics

次のComputer Visionプロジェクトを構築するために、Raspberry PiでUltralytics パッケージをセットアップする方法は2つあります。どちらを使っても構いません。

Dockerで始める

Raspberry Pi でUltralytics YOLOv8 を使い始める最も早い方法は、Raspberry Pi 用にビルド済みの docker イメージを使って実行することだ。

以下のコマンドを実行すると、Raspberry Pi上でDockerコンテナが実行されます。これは、Python3環境のDebian 12 (Bookworm) を含むarm64v8/debiandockerイメージに基づいています。

t=ultralytics/ultralytics:latest-arm64 && sudo docker pull $t && sudo docker run -it --ipc=host $t

これが終わったら、Raspberry PiでNCNN

Dockerなしで始める

Ultralytics パッケージのインストール

ここにインストールします Ultralytics パッケージを Raspberry Pi にオプションの依存関係を追加して、 PyTorch モデルを他の異なる形式に変換します。

  1. パッケージリストの更新、pipのインストール、最新版へのアップグレード

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. インストール ultralytics pip パッケージと依存関係のあるオプション

    pip install ultralytics[export]
    
  3. デバイスを再起動する

    sudo reboot
    

Raspberry PiでNCNN 。

Ultralytics でサポートされているすべてのモデルエクスポートフォーマットの中で、、 NCNNNCNN はモバイル/組込みプラットフォーム(ARMアーキテクチャなど)に高度に最適化されているため、Raspberry Piデバイスで作業する際に最高の推論パフォーマンスを発揮します。そのため、NCNN を Raspberry Pi で使用することをお勧めします。

モデルをNCNN に変換し、推論を実行する。

PyTorch フォーマットのYOLOv8n モデルは、エクスポートされたモデルで推論を実行するためにNCNN に変換されます。

from ultralytics import YOLO

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

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolov8n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolov8n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to NCNN format
yolo export model=yolov8n.pt format=ncnn  # creates 'yolov8n_ncnn_model'

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

チップ

サポートされているエクスポートオプションの詳細については、Ultralytics 配置オプションのドキュメントページを参照してください。

Raspberry Pi 5 vs Raspberry Pi 4YOLOv8 ベンチマーク

YOLOv8 ベンチマークは、 Ultralytics 速度と精度を測定する9つの異なるモデルフォーマットのチーム: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF ライト、 PaddlePaddle, NCNN.ベンチマークは、Raspberry Pi 5とRaspberry Pi 4の両方でFP32の精度で実行され、デフォルトの入力画像サイズは640でした。

他のモデルのサイズはラズベリー・ピスで実行するには大きすぎ、まともなパフォーマンスを提供しないため、YOLOv8n 、YOLOv8s モデルのベンチマークのみを掲載した。

比較表

パフォーマンス

NVIDIA ジェットソン・エコシステム

NVIDIA ジェットソン・エコシステム

詳細比較表

以下の表は、2つの異なるモデル(YOLOv8n, YOLOv8s) を 9 つの異なる形式 (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF ライト、 PaddlePaddle, NCNN)、Raspberry Pi 4 と Raspberry Pi 5 の両方で実行し、各組み合わせのステータス、サイズ、mAP50-95(B) メトリック、および推論時間を提供します。

パフォーマンス

フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(ms/im)
PyTorch 6.2 0.6381 508.61
TorchScript 12.4 0.6092 558.38
ONNX 12.2 0.6092 198.69
OpenVINO 12.3 0.6092 704.70
TF SavedModel 30.6 0.6092 367.64
TF GraphDef 12.3 0.6092 473.22
TF ライト 12.3 0.6092 380.67
PaddlePaddle 24.4 0.6092 703.51
NCNN 12.2 0.6034 94.28
フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(ms/im)
PyTorch 21.5 0.6967 969.49
TorchScript 43.0 0.7136 1110.04
ONNX 42.8 0.7136 451.37
OpenVINO 42.9 0.7136 873.51
TF SavedModel 107.0 0.7136 658.15
TF GraphDef 42.8 0.7136 946.01
TF ライト 42.8 0.7136 1013.27
PaddlePaddle 85.5 0.7136 1560.23
NCNN 42.7 0.7204 211.26
フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(ms/im)
PyTorch 6.2 0.6381 1068.42
TorchScript 12.4 0.6092 1248.01
ONNX 12.2 0.6092 560.04
OpenVINO 12.3 0.6092 534.93
TF SavedModel 30.6 0.6092 816.50
TF GraphDef 12.3 0.6092 1007.57
TF ライト 12.3 0.6092 950.29
PaddlePaddle 24.4 0.6092 1507.75
NCNN 12.2 0.6092 414.73
フォーマット ステータス ディスク上のサイズ (MB) mAP50-95(B) 推論時間(ms/im)
PyTorch 21.5 0.6967 2589.58
TorchScript 43.0 0.7136 2901.33
ONNX 42.8 0.7136 1436.33
OpenVINO 42.9 0.7136 1225.19
TF SavedModel 107.0 0.7136 1770.95
TF GraphDef 42.8 0.7136 2146.66
TF ライト 42.8 0.7136 2945.03
PaddlePaddle 85.5 0.7136 3962.62
NCNN 42.7 0.7136 1042.39

結果を再現する

上記のUltralytics のベンチマークをすべてのエクスポートフォーマットで再現するには、以下のコードを実行してください:

from ultralytics import YOLO

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

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

ベンチマークの結果は、システムの正確なハードウェアとソフトウェアの構成、およびベンチマークの実行時のシステムの現在の作業負荷によって異なる可能性があることに注意してください。最も信頼性の高い結果を得るには、画像数の多いデータセットを使用します。 data='coco8.yaml' (4 val images), ordata='coco.yaml'` (5000 val images)。

ラズベリーパイのカメラを使う

Raspberry PiをComputer Visionプロジェクトに使用する場合、リアルタイムのビデオフィードを取得して推論を実行することが基本になります。Raspberry Piに搭載されているMIPI CSIコネクタを使えば、Raspberry Piの公式カメラモジュールを接続することができます。このガイドでは、Raspberry Pi カメラモジュール 3を使用してビデオフィードを取得し、YOLOv8 モデルを使用して推論を実行します。

Raspberry Pi 5はRaspberry Pi 4より小さいCSIコネクタ(15ピン対22ピン)を使用しているため、Raspberry Pi Cameraに接続するには15ピンから22ピンへのアダプタケーブルが必要です。

カメラのテスト

カメラをRaspberry Piに接続した後、以下のコマンドを実行します。カメラのライブ映像が約5秒間表示されるはずです。

rpicam-hello

カメラによる推論

YOLOv8 モデルの推論にラズベリー・パイ・カメラを使うには、2つの方法がある。

使用方法

を使うことができる。 picamera2ラズベリー・パイOSがプリインストールされており、カメラと推論YOLOv8 モデルにアクセスできる。

import cv2
from picamera2 import Picamera2

from ultralytics import YOLO

# Initialize the Picamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

while True:
    # Capture frame-by-frame
    frame = picam2.capture_array()

    # Run YOLOv8 inference on the frame
    results = model(frame)

    # Visualize the results on the frame
    annotated_frame = results[0].plot()

    # Display the resulting frame
    cv2.imshow("Camera", annotated_frame)

    # Break the loop if 'q' is pressed
    if cv2.waitKey(1) == ord("q"):
        break

# Release resources and close windows
cv2.destroyAllWindows()

でTCPストリームを開始する必要がある。 rpicam-vid 接続されたカメラからのストリームURLを入力として使用できるようにします。以下のコマンドを実行して、TCPストリームを開始する。

rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888

詳細はこちら rpicam-vid Raspberry Pi公式ドキュメントの使い方

from ultralytics import YOLO

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

# Run inference
results = model("tcp://127.0.0.1:8888")
yolo predict model=yolov8n.pt source="tcp://127.0.0.1:8888"

チップ

画像/ビデオ入力タイプを変更したい場合は、推論ソースに関するドキュメントをチェックしてください。

Raspberry Piを使用する際のベストプラクティス

YOLOv8 が動作する Raspberry Pis で最大限のパフォーマンスを発揮するためには、いくつかのベストプラクティスがあります。

  1. SSDの使用

    Raspberry Piを24時間365日使い続ける場合、SDカードでは連続書き込みに耐えられず壊れてしまう可能性があるため、システムにはSSDを使用することをお勧めします。Raspberry Pi 5のオンボードPCIeコネクタでは、NVMe Base for Raspberry Pi 5のようなアダプタを使用してSSDを接続することができます。

  2. GUIなしのフラッシュ

    Raspberry Pi OSをフラッシュする際、デスクトップ環境(Raspberry Pi OS Lite)をインストールしないことを選択することができ、これによりデバイスのRAMを少し節約することができ、コンピュータビジョン処理により多くのスペースを残すことができます。

次のステップ

Raspberry PiにYOLO !さらなる学習とサポートについては、Ultralytics YOLOv8 DocsandKashmir World Foundationをご覧ください。

謝辞と引用

このガイドブックは当初、Daan Eeltink氏によって、絶滅危惧種の保護にYOLO 。我々は、物体検出技術の領域における彼らの先駆的な仕事と教育的な焦点に敬意を表します。

カシミール・ワールド・ファウンデーションの活動については、ウェブサイトをご覧ください。

よくあるご質問

Dockerを使わずにRaspberry Pi上でUltralytics YOLOv8 。

Dockerを使わずにRaspberry Pi上でUltralytics YOLOv8 をセットアップするには、以下の手順に従ってください:

  1. パッケージリストを更新し、インストールする pip:
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Ultralytics パッケージとオプションの依存関係をインストールする:
    pip install ultralytics[export]
    
  3. デバイスを再起動して変更を適用する:
    sudo reboot
    

詳細な手順については、Dockerなしで開始するセクションを参照してください。

なぜAIタスクのためにRaspberry Pi上でUltralytics YOLOv8 'のNCNN フォーマットを使う必要があるのか?

Ultralytics YOLOv8 NCNN NCNN はARMアーキテクチャを活用することで推論パフォーマンスを最大化し、他のフォーマットと比較してより高速で効率的な処理を提供します。サポートされているエクスポートオプションの詳細については、Ultralytics ドキュメントのデプロイオプションのページをご覧ください。

ラズベリーパイで使用するために、YOLOv8 のモデルをNCNN フォーマットに変換するにはどうすればよいですか?

Python またはCLI コマンドを使用して、PyTorch YOLOv8 モデルをNCNN フォーマットに変換できます:

from ultralytics import YOLO

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

# Export the model to NCNN format
model.export(format="ncnn")  # creates 'yolov8n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("yolov8n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to NCNN format
yolo export model=yolov8n.pt format=ncnn  # creates 'yolov8n_ncnn_model'

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

詳しくは、Raspberry PiでNCNN

YOLOv8 の実行に関連する Raspberry Pi 4 と Raspberry Pi 5 のハードウェアの違いは何ですか?

主な違いは次のとおりです。

  • CPU:Raspberry Pi 4はBroadcom BCM2711、Cortex-A72 64ビットSoCを使用し、Raspberry Pi 5はBroadcom BCM2712、Cortex-A76 64ビットSoCを使用しています。
  • 最大周波数CPU :Raspberry Pi 4の最大周波数は1.8GHzですが、Raspberry Pi 5は2.4GHzです。
  • メモリ:Raspberry Pi 4は最大8GBのLPDDR4-3200 SDRAMを、Raspberry Pi 5は4GBと8GBのLPDDR4X-4267 SDRAMを搭載しています。

これらの機能強化により、Raspberry Pi 5のYOLOv8 モデルの性能ベンチマークは、Raspberry Pi 4に比べて向上しています。詳細については、Raspberry Piシリーズの比較表を参照してください。

Raspberry Pi カメラモジュールをUltralytics YOLOv8 で動作させるにはどうすればいいですか?

YOLOv8 推論用にRaspberry Pi Cameraをセットアップするには2つの方法がある:

  1. 使用 picamera2:

    import cv2
    from picamera2 import Picamera2
    
    from ultralytics import YOLO
    
    picam2 = Picamera2()
    picam2.preview_configuration.main.size = (1280, 720)
    picam2.preview_configuration.main.format = "RGB888"
    picam2.preview_configuration.align()
    picam2.configure("preview")
    picam2.start()
    
    model = YOLO("yolov8n.pt")
    
    while True:
        frame = picam2.capture_array()
        results = model(frame)
        annotated_frame = results[0].plot()
        cv2.imshow("Camera", annotated_frame)
    
        if cv2.waitKey(1) == ord("q"):
            break
    
    cv2.destroyAllWindows()
    
  2. TCPストリームの使用

    rpicam-vid -n -t 0 --inline --listen -o tcp://127.0.0.1:8888
    
    from ultralytics import YOLO
    
    model = YOLO("yolov8n.pt")
    results = model("tcp://127.0.0.1:8888")
    

詳細な設定方法については、「カメラによる推論」のセクションをご覧ください。



作成日:2023-11-12 更新日:2024-07-05
著者:Glenn-Jocher(9),IvorZhu331(1),lakshanthad(2)

コメント