OAK-D-Lite Object Detection YOLOv7 transfer learning.

OAK-D-Lite Object Detection YOLOv7 転移学習をしてみた。

単純に下記ページの YOLOv7 tutorial を実行するだけ。
docs.luxonis.com/software/ai-inference/training

結論から先に言えば、うまくできました。
OAK-D Lite で、動きました。

ただし、サンプルは、google colaboratory と、Google Drive を使っています。
おんちゃんも当初は、お同じにしていましたが、どうも、Google Drive への保存が良くわからなくて、学習結果が消えてしまいました。

結局、ubuntu 22.04 PC 上で、実行しました。

1. PC環境
Ubuntu Mate 22.04
GPU: GeForce GTX 1070
Python 3.10
virtualenv
OAK-D Lite

2. 手順
$ cd
$ python3 -m pip install virtualenv --user
$ python3 -m virtualenv torch_env
$ source ~/torch_env/bin/activate
(troch_env) xxx@xxx:~$
$ python -m pip install --upgrade pip

あとは、PyTorch のインストールをします。
https://github.com/WongKinYiu/yolov7 の環境を、そのまま使用します。
$ cd ~/Documents/Visualstudio-torch_env
$ git clone https://github.com/WongKinYiu/yolov7.git
$ cd yolo7
$ python -m pip install -r requirements.txt
$ python -m pip install notebook

これで、pytorch GPU も、OK です。
ただし、
Ubuntu 22.04 Tensorflow GPU Install. でシステム側にインストールした、
cudnn か、なにかのライブラリーと競合するようで、
~/.bashrc の記述の、LD_LIBRARY_PATH を取ります。
# add for libcudnn8
#export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/home/nishi/usr/local/share/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH

3. 転移学習。
YoloV7_training.ipynb を、ローカルの、
~/Documents/Visualstudio-torch_env/yolov7/ にダウンロードして、
$ cd ~/Documents/Visualstudio-torch_env/yolov7/
$ jupyter notebook

あとは、YoloV7_training.ipynb を実行するだけ。
ただし、google drive へのマッピングは、使わない。
Installing dependencies も行わない。

4. 変換。
転移学習が、おわったら、runs/train/exp/weights/best.pt を、
tools.luxonis.com で変換すれば、結果が、 zip ファイルでダウンロードできる。
注) 画像サイズを変えられるみたいだが?
specified the model shape to 640 352

zip の中身は、
best.bin
best_openvino_2022.1_6shave.blob
best.xml
best.json
best-simplified.onnx

best-simplified.onnx は、変換すれば、別の npu で使えるのだろうか?

あとは、その中の、best_openvino_2022.1_6shave.blob を試すだけ。

python で試すなら、
gen2-yolo/device-decoding
が使える。

$ python main_api.py -m result/best_openvino_2022.1_6shave.blob --config result/best.json

640 x 640 サイズで、8 [fps] 位か。

5. 画像サイズ 416 x 416 で、転移学習させる。
ROS2 depthai_ros_my で、使うために、画像サイズ 416 x 416 で、改めて、転移学習させる事にした。
40エポックで、試してみる。さすがに、画像サイズ 416 x 416 だと、学習が早い。

同じ様に変換して、OAK-D Lite で、試す。
$ python main_api.py -m result-416/best_openvino_2022.1_6shave.blob --config result-416/best.json

30 [fps] くらいでした。
すごい。ただし、将来は、OAK-D の上位機種で、640x420 辺りで、使いたい。

次は、 ROS2 OAK-D-Lite で、Stereo depth と Mobilenet object detection を同時に動かす。 の、ROS2 Stereo Depth と同時に動かして、
その次は、草むら を学習させて、
ROS2 自作 Turtlebot3 による 草刈りロボット開発。#4 草むらの判定 で、使ってみる。

しかし、Tiny-YoloV7 は、距離が合わないと検出があまりできない気がする。
実際の運用上は、これがまずい気がする。
なので、おんちゃんは、Keras V3 Object detection with Vision Transformers を、SBC 上で quantize して、走らせたい。
そんな環境は、出てこないだろうか?

参照。
【物体検出2022】YOLO最新版のYOLOv7を試してみる 〜デモから学習まで〜
docs.luxonis.com

このブログ記事について

このページは、おんちゃんが2024年6月27日 12:44に書いたブログ記事です。

ひとつ前のブログ記事は「ROS2 OAK-D-Lite で、Stereo depth と Mobilenet object detection を同時に動かす。」です。

次のブログ記事は「transformer asr japanese サンプルがある。kotoba-whisper-v1.0 を ONNX に変換」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ