Skip to main content

YOLOv8nオブジェクト検出に関するRaspberry Pi 5とAIキットのチュートリアル

はじめに

YOLOv8(You Only Look Once version 8)は、リアルタイム姿勢推定とオブジェクト検出モデルの人気のあるYOLO シリーズです。速度、精度、柔軟性において複数の進歩を導入することで、前身の強みを基盤としています。Raspberry-pi-AI-kitは推論速度を加速するために使用され、Hailo-8Lチップを中心に構築された13 TOPSニューラルネットワーク推論アクセラレータを特徴としています。

このwikiでは、Raspberry Pi 5上のAIキットでYOLOv8nをオブジェクト検出に使用する方法を、トレーニングからデプロイまでガイドします。

ハードウェアの準備

Hailo8L 13 TOPS用

Raspberry Pi5 8GBRaspberry Pi AI Kit

Hailo8 26 TOPS用

reComputer R1125reComputer AI R2130reComputer AI Industrial R2145
reComputer Industrial R20xxreComputer Industrial R21xx

ハードウェアのインストール

こちらを参照してください

ホストコンピュータ上で

note

hailoソフトウェアをインストールしますので、hailoアカウントを持っていることを確認してください。

Ultralyticsのインストールとモデルのトレーニング

python3.11をインストール

sudo apt install python3.11

yolo_envを仮想環境として作成

python3.11 -m venv yolo_env

環境をアクティベート

source yolo_env/bin/activate

ultralyticsをインストール

pip install ultralytics

COCOデータセットを使用してYOLOv8nをトレーニングします。独自のデータセットをトレーニングしたい場合は、その方法についてこちらを参照してください。

mkdir yolomodel && cd yolomodel
yolo detect train data=coco128.yaml model=yolov8n.pt name=retrain_yolov8n epochs=100 batch=16

pir

トレーニング後、以下に示すようにbest.ptモデルが得られます:

cd ./runs/detect/retrain_yolov8n/weights/
ls

pir

.ptモデルを.onnxに変換します。

yolo export model=./best.pt imgsz=640 format=onnx opset=11 

結果は以下のようになります:

pir

hailoソフトウェアのインストール

python 3.8をインストール

cd ~
sudo apt install python3.8

hailo_envを仮想環境として作成

python3.8 -m venv hailo_env

環境をアクティベート

source hailo_env/bin/activate

Hailo Dataflow Compiler 3.27をインストールします。ここでHailoに登録してログインし、ソフトウェアをダウンロードする必要があります。

pir

pip install hailo_dataflow_compiler-3.27.0-py3-none-linux_x86_64.whl 

Model zooをインストールします。ここでHailoに登録してログインし、ソフトウェアをダウンロードする必要があります。

pir

pip install hailo_model_zoo-2.11.0-py3-none-any.whl 

hailo_model_zooが正しく機能しているかテストします。

hailomz -h

pir

hailo_model_zooのgithubファイルをインストール

cd yolomodel/runs/detect/retrain_yolov8n/weights

git clone https://github.com/hailo-ai/hailo_model_zoo.git

yolov8nモデルの評価/最適化/コンパイル用にcocoデータセットをインストール

python hailo_model_zoo/datasets/create_coco_tfrecord.py val2017
python hailo_model_zoo/datasets/create_coco_tfrecord.py calib2017

hailo_model_zooを使用してモデルを解析

hailomz parse --hw-arch hailo8l --ckpt ./best.onnx yolov8n

pir

hailo_model_zooを使用してモデルを最適化

note

以下のコマンドを実行すると、いくつかのエラーが発生する可能性があります。しかし、./hailo_model_zoo/hailo_model_zooをローカルライブラリにコピーできます。エラーがデータセットが見つからないことを示している場合は、~/.hailomzに移動してデータセットを見つけ、ローカルデータセットディレクトリにコピーできます。

hailomz optimize --hw-arch hailo8l --har ./yolov8n.har yolov8n

pir

hailo_model_zooを使用してモデルをコンパイル

hailomz compile  yolov8n --hw-arch hailo8l --har ./yolov8n.har 

pir

すべて完了するとhefモデルが得られ、これをAIキット付きのraspberry pi5にデプロイできます

ls

pir

Raspberry Pi5上で

システムの更新

sudo apt update
sudo apt full-upgrade

PCIe を gen2/gen3 に設定(gen3 は gen2 より高速)

/boot/firmware/config.txt に以下のテキストを追加します

#Enable the PCIe external connector

dtparam=pciex1

#Force Gen 3.0 speeds

dtparam=pciex1_gen=3

note

gen2 を使用したい場合は、dtparam=pciex1_gen=3 をコメントアウトしてください

hailo-all をインストールして再起動

Raspberry Pi 5 でターミナルを開き、以下のコマンドを入力して Hailo ソフトウェアをインストールします

sudo apt install hailo-all
sudo reboot

ソフトウェアとハードウェアの確認

Raspberry Pi5 でターミナルを開き、以下のコマンドを入力して hailo-all がインストールされているかを確認します。

hailortcli fw-control identify

正しい結果は以下のように表示されます:

pir

Raspberry Pi5 でターミナルを開き、以下のコマンドを入力して hailo-8L が接続されているかを確認します。

lspci | grep Hailo

正しい結果は以下のように表示されます:

pir

プロジェクトのクローン

git clone https://github.com/Seeed-Projects/Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L.git
cd Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L

モデルを Raspberry Pi5 にコピー

hailomodel という名前のディレクトリを作成します

mkdir hailomodel
note

以下のコマンドは Raspberry Pi 5 ではなく、ホストコンピュータで実行する必要があります。ホストコンピュータと Raspberry Pi 5 の両方が同じネットワークに接続されていることを確認してください。

scp -r ./yolomodel/runs/detect/retrain_yolov8n/weights/yolov8n.hef username@ip /home/pi/Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L/hailomodel/

コードの変更

object-detection-hailo.py の 105 行目と 106 行目を見つけて、以下のようにコードを変更します:

        elif args.network == "yolov8n":
self.hef_path = os.path.join(self.current_path, './hailomodel/yolov8n.hef')

object-detection-hailo.py の 172 行目を見つけて、以下のようにコードを変更します:

    parser.add_argument("--network", default="yolov8n", choices=['yolov6n', 'yolov8s', 'yolox_s_leaky'], help="Which Network to use, defult is yolov6n")

コードの実行

bash run.sh object-detection-hailo

結果

こちらは YOLOv8n モデルをトレーニングして Raspberry Pi 5 にデプロイするプロセスを実演した動画です。バッチサイズを 8、入力サイズを 640x640、入力動画フレームレートを 240 fps に設定しました。達成された推論速度は 136.7 fps で、ほとんどのアプリケーションシナリオにとって非常に高速です。

技術サポート & 製品ディスカッション

弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供いたします。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャンネルを用意しています。

Loading Comments...