Baidu RT-DETRv2 の転移学習と Orange pi 5 NPU での実行。
Baidu RT-DETRv2 を、雑草データセットで、転移学習させて、
最終的に、 Orange pi 5 armbian 22.04 rknn-runtime で走らせてみた。
結構、rknn に変換するまでが、大変だったが、なんとか変換して、走らせてみた。
当初、Hugging face の RT-DETRv2 で試したが、Orange pi 5 armbian(22.04) で実行すると、
Unsuport CPU op: Grid Sample in ths librknnrt.so ..
が出て、Segmantation faluts になった。
これの対応策は、どうやら、 torch -> onnx 変換時に、
model.use_discreat_sample=True
model.eval()
をすれば良いことがわかった。しかし、これに対応しているのが、 Baidu のオリジナル版でした。
Baidu のオリジナル版 で、上記修正を加えたが、実際のやり方は、少し違っていた。
google ai に随分助けをかりて、なんとかできた。
実機:
Orange pi 5 armbian 22.04
USB Camera
USB Camera -> predict -> Open cv 表示で、
実測 fps: 6 -7 [Hz] でした。
Hugging face DETR だと、同じ構成で、
実測 fps: 10[Hz]
だったので、すこし、残念でした。
実機2: Joshua Piek ubuntu 24.04
USB Camera
では、
fps: 11 - 13[Hz] でした。
将来、C++ で作れば、少しは速くなるかも知れないので、
これくらいで、OK か。
Object Detectionの最近のブログ記事
Transformers Object detection - detr の転移学習とONNX変換と実行。#2
Transformers Object detection - detr の転移学習とONNX変換と実行。
の続きです。
ONNX -> rknn に変換して、 Orange pi 5 armbian(22.04) で、NPU で動かしてみました。
USB Camera -> predict -> Open cv 表示
rate: 10[fps] 前後 みたいです。
model 単体ベンチマーク: 0.1[sec] 前後
cpu 負荷は、all core 23[%] 前後みたい。 c++ で行えばもっと、良いかも。
体感は、なんとかつかそう。ただ、実際のアプリでは、Open CV で表示などせずに、
プログラムの中で使うのであれば、もっと早いかも?
orange pi 5 x 1 で、同時に、ROS2 で、ロボットを動かせるかも?
でも、2 台構成が無難かもしれない。
開発環境:
Ubuntu 24.04 PC and GTX 1070
torch 2.6.0+cu126
torchaudio 2.6.0+cu126
torchvision 0.21.0+cu126
実機環境:
Orange pi 5 armbian(22.04)
注) armbian(22.04) でないと、NPU ドライバーが入っていないので、注意!!
最新の armbian(24.04 以降) だと、自分でドライバーをソースbuild して追加しないと、できましぇん!!
python 3.10
RKNNLite
USB カメラ
実機環境2:
Joshua Piek ubuntu 24.04
こちらが、今は良いみたい。
USB Camera -> predict -> open cv 表示
fps: 12 - 13 [Hz] みたいです。
検出精度、良好!! by nishi 2026.3.29
1. 転移学習
雑草 3class(実際は、4 class になった) の転移学習を行う。
今までは、学習データを、アスペクト比を無視して、480x480 にリサイズしていましたが、
今回は、画像のアスペクト比を維持して、480x480 にリサイズして、余白は、黒埋めします。
実際の学習用 コードは、github に公開しました。
github@tosa-no-onchan/transform_object_detection
zasou_train_3class.ipynb
学習は、2回にわけて行いました。
1 回め
165 エポック
7800 0.304700
2 回め。続きから。
46 エポック
で、 train loss 0.19 になりました。
多分、huging face にアップロードされているでは?
tosa-no-onchan/detr-resnet-50_finetuned_zasou
おんちゃんの Tips.
image_processor に、size={"shortest_edge": 480,...
を渡して、入力サイズを、480x480 にすると良いみたい。
これだけで、 rknn での実行速度が改善されるみたいじゃ。--> 実際は、変わらない!!
Transformers Object detection - detr の転移学習とONNX変換と実行。
---- 雑草の独自データの転移学習とONNXでの変換、実行を試す ----
Transformers Object detection
1. 最初に、オリジナルの転移学習を試す。
次に、雑草画像の独自データを用意して、YOLO アノテーションを作成して、それを、COCO 形式に変換して、
雑草画像の転移学習を、試してみた。
開発環境
Ubuntu Mate 22.04
GPU: GeForce GTX 1070
Python 3.10
virtualenv
checkpoint = "facebook/detr-resnet-50"
が、転移学習のベースモデルみたい。
huggingface.co/facebook/detr-resnet-50
num_train_epochs=30
位必要みたい。
一応、オリジナル版の転移学習は、OK でした。
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
TensorRT 5.1 の Windows10での試し、第2回として、
今回は、 Pytorch 1.0 Object Detection faster-rcnn の試し で使った学習済みモデルを、
TensorRT 5.1 に持って行って実行できるか試してみます。
TensorRT で Pytorch の学習済モデルを使うには、ONNX format にしてから、TensorRT で取り込んんでやれば良いとの事です。
https://docs.nvidia.com/deeplearning/sdk/tensorrt-sample-support-guide/index.html#onnx_mnist_sample
その前に、 おんちゃんは、TensorRT5.1 で C++ 開発をするにあたり、下記ページを参考にしています。
tensorrt-developer-guide > 2. Working With TensorRT Using The C++ API
Windows10 + Pytorch 1.0 + VisualStudio 2017 環境で試せる Object Detection faster-rcnn が
GitHub に紹介されていたので、試してみました。
https://github.com/facebookresearch/maskrcnn-benchmark
インストレーションは、
https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/INSTALL.md
を参考にして行います。
但し途中の箇所でエラーが出てそれから進みません。