airpocketのアイコン画像
airpocket 2024年08月29日作成 (2024年08月29日更新)
セットアップや使用方法 セットアップや使用方法 閲覧数 710
airpocket 2024年08月29日作成 (2024年08月29日更新) セットアップや使用方法 セットアップや使用方法 閲覧数 710

Raspberry Pi 5でPINTOさんのYOLOv9-Wholebody17を動かすメモ

はじめに

うわさのYOLOをRaspberry Pi 5で試す
うわさのYOLOをtfliteにしてPi5でもっと高速に動かす
このあたりの記事の続編です。

PINTOさんをあがめ奉ります。
https://github.com/PINTO0309/PINTO_model_zoo/tree/main/457_YOLOv9-Wholebody17

機材

Raspberry Pi 5 8G + SSDを使用しています。4G + MicroSDでも動きました。2Gでも動くんじゃないかな。
OSはRaspberry Pi OS Bookworm 64Bit版。
カメラは、USB接続の普通のウェブカメラを使っています。

環境づくり

venvでpython実行用仮想環境を作って有効化します。

sudo apt update && sudo apt upgrade -y python -m venv onnx source onnx/bin/activate

必要なパッケージをインストール

pip install opencv-contrib-python numpy onnx pip install opencv-python pip install onnxruntime

必要ファイルをダウンロードして実行してみる

モデルのサイズには小さい方からn,t,s,c,eの5種類。tはモデルを一部変更したt_reluがあります。
私の所感ではPi5で推論するにはtがいい塩梅な気がしますので以下のコマンドでtサイズのモデル と、合せて便利なdemoコードもダウンロードします。

ダウンロードスクリプトを実行するとモデルのダウンロードと展開が実行されて複数のモデルが生成されるので、適当な作業用フォルダを作ってそので実行することをお勧めします。

wget https://raw.githubusercontent.com/PINTO0309/PINTO_model_zoo/main/457_YOLOv9-Wholebody17/download_t.sh sudo chmod 755 download_t.sh ./download_t.sh wget https://raw.githubusercontent.com/PINTO0309/PINTO_model_zoo/main/457_YOLOv9-Wholebody17/demo/demo_yolov9_onnx_wholebody17.py

これですべてのファイルがそろいました。
以下のコマンドで実行されます。

python demo_yolov9_onnx_wholebody17.py -m yolov9_t_wholebody17_post_0100_1x3x128x160.onnx -v 0

入力画像サイズが最も小さい128x160pxのモデルで実行すると、1フレーム当たり20msec前後で推論されています。この速度であれば幅広い用途に使えそうです。
ただし入力画像サイズが小さいため小さいオブジェクトの検出は厳しくなるはずです。小さいオブジェクトを検出したい場合は入力画像サイズを大きくする必要がありますが、推論速度とトレードオフになります。

少し気になったので次項でモデルサイズや入力画像サイズを変更した際の推論時間への影響を確認しました。

推論速度確認

モデルサイズや入力画像サイズが推論時間に与える影響をざっくり調べてみました。
推論時間はバラツキが大きいのですが、ビデオ入力した際に比較的安定している瞬間の値をざっくり読み取っています。
あたりまえっちゃあたりまえですが、推論時間はモデルサイズ・入力サイズに対して線形に相関してることが確認できました。

モデルサイズによる推論時間の変化

キャプションを入力できます

キャプションを入力できます

入力画像サイズによる推論時間の変化

※モデルはtinyを使用しています。
キャプションを入力できます

キャプションを入力できます

airpocketのアイコン画像
電子工作、プログラミング、AI、DIY、XR、IoT M5Stack / Raspberry Pi / Arduino / spresense / K210 / ESP32 / Maix / maicro:bit / oculus / Jetson Nano / minipupper etc
ログインしてコメントを投稿する