1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイで物体検出 yolo5 失敗談

Posted at

まず作るもの。

image.png

今回はこの赤丸部分です。
サムターンの開閉を物体検出します。
モデルはyolo5を使用します。
【要件】10FPSくらいで画像処理しながら物体検出したい。
使うラズパイは4B RAM 4GB

できたもの

バッファクリアの処理いれてるんですが遅延しますね。

image.png

FPS:0.5の世界初めてみたw

image.png

物体検出はできている模様

物体検出できてもこんだけ遅いと要件に合わないので失敗でした。

なぜ失敗したか

・モデルが重い
→ラズパイ用に軽いモデルを使うのが吉 今回はwindowsで作ったモデルを流用しようとした。
→MobileNet SSD など。

・ラズパイのスペックが足りない
→GPUがない
→CPUも弱い

次回成功するために。

image.png

①これを購入 -¥13,000 (泣)
エッジデバイス(ラズパイ)での物体検出の手助けをしてくれるらしい。youtubeで動画見てたら30FPSで画像処理しながら推論してた。強い。

②軽めのモデルを使用。
↑のCoral USB Accelerator は Edge TPU を搭載しており、主に TensorFlow Lite(TFLite) を最適化したモデルで動作します。
TensorFlow Liteあたりを学習して臨む。

次回の記事ではこれの挑戦です。

失敗談(まだある)

・windowsで作ったyolo5のモデルはラズパイで使えません。
・ラズパイで、windowsで作ったモデルを使うためにモデルをonnxに変換するも、うまくいきません。
・ラズパイで学習させるも20時間かかる。

一つずつ書いていく。

windowsで作ったyolo5のモデルはラズパイで使えません。

学習した結果のモデルはこのbest.ptなのですが、ラズパイで使おうとするとwindowsPathが書かれていてラズパイで認識しませんみたいなこと言われます。
chatgptに相談すると、ラズパイでも使えるようにモデル変換することを勧められます。

image.png

ラズパイで、windowsで作ったモデルを使うためにモデルをonnxに変換するも、うまくいきません。

onnxを使うための環境設定がうまくいきませんでした。
Raspberry Pi は ONNX Runtime の公式サポートがないため、onnxruntime をビルドする必要があります。
→色々chatgptしたり検索したりして進めましたがうまくいかず、windowsでモデルを作ったノリでラズパイでモデルを作ることにしました。

ラズパイで学習させるも20時間かかる。

ラズパイは非力なので機会学習(めっちゃリソースを消費するという認識でおけ)に適さないことはわかっていたのですが、ラズパイで使うモデル作成に手間取っているので、ラズパイで学習させることに。
↓実際使ったコマンド

python train.py --img 640 --batch 4 --epochs 100 --data /home/pcmainte/project_ras3/dataset/dataset.yaml --weights yolov5s.pt

--img 640 入力画像のサイズ(640×640ピクセル)
--batch 4 バッチサイズ(1回の学習で処理する画像の数)
--epochs 100 学習エポック数(学習を100回繰り返す)

1. --img 640(入力画像サイズ)

YOLOv5 は 正方形の画像 を使用するため、この例では 640×640 で学習。
小さくするとメモリ消費が減るが精度が落ちる。
大きくすると精度は上がるが処理速度が落ちる。
一般的なサイズ: 416, 512, 640, 1280 など

2. --batch 4(バッチサイズ)

1回の学習ステップ(ミニバッチ)で処理する画像の数。
大きくすると学習が速くなる が、メモリを大量に消費する。
小さくすると学習が安定する が、時間がかかる。
Raspberry Pi では 2以下が推奨(VRAMが少ないため)。

3. --epochs 100(学習エポック数)

学習データを何回繰り返して学習するか。
例えば 100 にすると、全データを 100 回学習。
一般的には 50 〜 300 が適切。
--epochs 50 で結果を見て、調整するのが良い。

ただしこのコマンドではラズパイのリソースが足りず処理が強制終了しています。

→batch 1で学習開始したら成功しました。
ただし20時間かかりました(^_^;)
後半でリソース不足で強制終了させられたり、エラー落ちしたりしなくて良かった・・・
実際のコマンドはこれです。

python train.py --img 640 --batch 1 --epochs 100 --data /home/pcmainte/project_ras3/dataset/dataset.yaml --weights yolov5s.pt
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?