クイックスタートガイドラズベリーパイと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イメージに基づいています。
これが終わったら、Raspberry PiでNCNN 。
Dockerなしで始める
Ultralytics パッケージのインストール
ここにインストールします Ultralytics パッケージを Raspberry Pi にオプションの依存関係を追加して、 PyTorch モデルを他の異なる形式に変換します。
-
パッケージリストの更新、pipのインストール、最新版へのアップグレード
-
インストール
ultralytics
pip パッケージと依存関係のあるオプション -
デバイスを再起動する
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")
チップ
サポートされているエクスポートオプションの詳細については、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 モデルのベンチマークのみを掲載した。
比較表
パフォーマンス
詳細比較表
以下の表は、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 のベンチマークをすべてのエクスポートフォーマットで再現するには、以下のコードを実行してください:
例
ベンチマークの結果は、システムの正確なハードウェアとソフトウェアの構成、およびベンチマークの実行時のシステムの現在の作業負荷によって異なる可能性があることに注意してください。最も信頼性の高い結果を得るには、画像数の多いデータセットを使用します。 data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val images)。
ラズベリーパイのカメラを使う
Raspberry PiをComputer Visionプロジェクトに使用する場合、リアルタイムのビデオフィードを取得して推論を実行することが基本になります。Raspberry Piに搭載されているMIPI CSIコネクタを使えば、Raspberry Piの公式カメラモジュールを接続することができます。このガイドでは、Raspberry Pi カメラモジュール 3を使用してビデオフィードを取得し、YOLOv8 モデルを使用して推論を実行します。
チップ
Raspberry Piが提供する様々なカメラモジュールの詳細と、Raspberry Piカメラモジュールの始め方についてご紹介します。
注
Raspberry Pi 5はRaspberry Pi 4より小さいCSIコネクタ(15ピン対22ピン)を使用しているため、Raspberry Pi Cameraに接続するには15ピンから22ピンへのアダプタケーブルが必要です。
カメラのテスト
カメラをRaspberry Piに接続した後、以下のコマンドを実行します。カメラのライブ映像が約5秒間表示されるはずです。
チップ
カメラによる推論
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ストリームを開始する。
チップ
画像/ビデオ入力タイプを変更したい場合は、推論ソースに関するドキュメントをチェックしてください。
Raspberry Piを使用する際のベストプラクティス
YOLOv8 が動作する Raspberry Pis で最大限のパフォーマンスを発揮するためには、いくつかのベストプラクティスがあります。
-
SSDの使用
Raspberry Piを24時間365日使い続ける場合、SDカードでは連続書き込みに耐えられず壊れてしまう可能性があるため、システムにはSSDを使用することをお勧めします。Raspberry Pi 5のオンボードPCIeコネクタでは、NVMe Base for Raspberry Pi 5のようなアダプタを使用してSSDを接続することができます。
-
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 をセットアップするには、以下の手順に従ってください:
- パッケージリストを更新し、インストールする
pip
: - Ultralytics パッケージとオプションの依存関係をインストールする:
- デバイスを再起動して変更を適用する:
詳細な手順については、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")
詳しくは、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つの方法がある:
-
使用
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()
-
TCPストリームの使用:
詳細な設定方法については、「カメラによる推論」のセクションをご覧ください。