コンテンツへスキップ

クイックスタートガイドラズベリーパイと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 パッケージのインストール

Here we will install Ultralytics package on the Raspberry Pi with optional dependencies so that we can export the PyTorch models to other different formats.

  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 。

Out of all the model export formats supported by Ultralytics, NCNN delivers the best inference performance when working with Raspberry Pi devices because NCNN is highly optimized for mobile/ embedded platforms (such as ARM architecture). Therefor our recommendation is to use NCNN with 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 benchmarks were run by the Ultralytics team on nine different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN. Benchmarks were run on both Raspberry Pi 5 and Raspberry Pi 4 at FP32 precision with default input image size of 640.

注

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

比較表

パフォーマンス

NVIDIA Jetsonエコシステム

NVIDIA Jetsonエコシステム

詳細比較表

The below table represents the benchmark results for two different models (YOLOv8n, YOLOv8s) across nine different formats (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN), running on both Raspberry Pi 4 and Raspberry Pi 5, giving us the status, size, mAP50-95(B) metric, and inference time for each combination.

パフォーマンス

フォーマット ステータス ディスク上のサイズ (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 。我々は、物体検出技術の領域における彼らの先駆的な仕事と教育的な焦点に敬意を表します。

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



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (7), IvorZhu331 (1), lakshanthad (2)

コメント