はじめに
うわさの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前後で推論されています。この速度であれば幅広い用途に使えそうです。
ただし入力画像サイズが小さいため小さいオブジェクトの検出は厳しくなるはずです。小さいオブジェクトを検出したい場合は入力画像サイズを大きくする必要がありますが、推論速度とトレードオフになります。
少し気になったので次項でモデルサイズや入力画像サイズを変更した際の推論時間への影響を確認しました。
推論速度確認
モデルサイズや入力画像サイズが推論時間に与える影響をざっくり調べてみました。
推論時間はバラツキが大きいのですが、ビデオ入力した際に比較的安定している瞬間の値をざっくり読み取っています。
あたりまえっちゃあたりまえですが、推論時間はモデルサイズ・入力サイズに対して線形に相関してることが確認できました。
モデルサイズによる推論時間の変化
入力画像サイズによる推論時間の変化
投稿者の人気記事
-
airpocket
さんが
2024/08/29
に
編集
をしました。
(メッセージ: 初版)
-
airpocket
さんが
2024/08/29
に
編集
をしました。
ログインしてコメントを投稿する