Orange PI 5の最近のブログ記事

Transformers Object detection - detr の転移学習とONNX変換と実行。#2

Transformers Object detection - detr の転移学習とONNX変換と実行。 の続きです。

ONNX -> rknn に変換して、 Orange pi 5 armbian(22.04) で、NPU で動くか試してみました。

開発環境:
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 カメラ

1. 転移学習
雑草 3class(実際は、4 class になった) の転移学習を行う。
今までは、学習データを、アスペクト比を無視して、480x480 にリサイズしていましたが、
今回は、画像のアスペクト比を維持して、480x480 にリサイズして、余白は、黒埋めしします。
実際の学習用 コードは、後で、github に公開予定です。
学習エポックは、165+244
で、 train loss 0.19 になりました。

雑草用、学習データは、やはり google のダウンロードではNG で、
自分で、カメラをもってあちこち行って撮影しました。
コツは、 ROS2 草刈りロボットカーのカメラ目線になって、30[cm] - 40[cm] の高さで、前方を、水平に撮影します。
草刈りにの邪魔になりそうな雑草の壁みたいなのを、メインに撮し、一緒に、木とかも撮影しました。
木の撮影も、 1.5[M] -3[M] 手前から撮影します。
アノテーションは、あまり遠い(1.5[M] - 3[M] 以外)、草、木、鉢植え は、使いません。
あくまでも、本来、ロボットが草刈りしなければ行けない所なのに、ROS2 の Depth Camera で、 local cost map に障害物と判定される雑草に限定します。

この目的は、localcost map で、障害物だと出ても、それが 雑草群 であれば、その場所をあえて通過させる事ぞね!!

また、学習画像には、対象を含まない画像や、オリジナル model の学習時に使った画像を、annotationナシ(class id ナシ) として、10[%] ほど加えます。

Orange pi 5 Armbian で NPU を使って、yolo を試す。

Orange pi 5 Armbian で NPU を使って、yolo を試す。

Orange Pi5のNPUを使用してyolo(高速?)を動かしてみる(rknn-toolkit2) と言うのがあったので、これを参考に、NPU yolo を試してみた。

大元のクイックスタートの方が参考になるみたい。
github.com/airockchip/rknn-toolkit2

1. 環境の構築。
Armbian 上に構築します。
 Python 3.10.6
 tensorflow 2.8.0 (最新は、2.12.0 )

1) python3 をインストール。
$ sudo apt install python3 python3-dev python3-pip

2) 必要、ライブラリーのインストール。
$ sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 \
libgl1-mesa-glx libprotobuf-dev gcc

3) virtualenv を用いて、Tensorflow2 環境を、Armibian 上に作ってみます。
$ pip3 install virtualenv ---user

4) kivy_env と言う仮想環境(名称は、なんでもOK) を作ります。
$ python3 -m virtualenv kivy_env
仮想環境を有効化
$ source ~/kivy_env/bin/activate

5) 仮想環境に、tensorflow をインストール。
(kivy_env) :$ python -m pip installl tensorflow==2.8.0

チェック。
(kivy_env) :$ python
>>> import tensorflow as tf
>>> print(tf.reduce_sum(tf.random.normal([1000,1000])))
tf.Tensor(-390.70236, shape=(), dtype=float32)
>>> exit()

Orange pi 5 で Armbian を試してみた。

Orange pi 5 で Armbian を試してみた。

Orange pi 5 Ubuntu 22.04 だと、linux header ファイルが見当たらないので、不便。
なので、armbian orangepi 5 を試してみました。

Desktop 版を、インストールしました。
Desktop GUIは、Ubuntu 22.04 と同じ、Gnome みたい。
だけど、なぜか、軽そうに感じるのは、おんちゃんの錯覚か。

初期設定は、こちらが参考になりました。
Armbianの初期設定 令和5年(2023年)4月版

1. armbian-config が、orangepi-config と同じように使えます。
$ sudo armbian-config

2. WiFi ドングルを試す。
1) tp-link Archer T3U Nano (rtl88x2bu) が、なにもせずに繋がった。
なんじゃ、こりゃ!!
Orange Pi 5 Ubuntu 22.04 の苦労は、一体なんだたんだろうか!!

2) tp-link TL-WN725N (rtl8188eus) は、相変わらず、LEDランプは点かない。
USB に挿すと、エラー吐いている(dmesg で確認できる)。

Orange pi 5 で Ubuntu 22.04 を試してみた。

Orange pi 5 で、 Ubuntu 22.04 Gnome Desktopを試してみた。

結論を先に言と、ROS2 向けなら、NG です。ROS2 向けなら、Orange pi 5 で Armbian がおすすめぞね!!

1. Orange Pi 5 を手に入れた。by nishi 2023.3.22
今日、Orange Pi 5 (8G) が、届いたので、早速、 Ubuntu 22.04 Gnome Desktop を、Micro SD カードに書き込んで、起動してみた。
なんとも、速い。Jetson Nano 2G とは、比較も出来ない。

2. ユーザを追加して、GUI ログインしようとしたら、失敗しました。
色々調べて、みて、どうやら、 /etc/group に、登録したユーザID が、必要なグループに入っていないのが、原因のようです。

$ cd /etc
$ grep orangepi group
ここで、orangepi が登録されているグループに、同じ様に登録されていないのが問題でした。

取り敢えず、 video、 input には、自分で追加しました。

$ sudo usermod -aG video nishi
$ sudo usermod -aG input nishi
さらに、tty、dialout も追加します。Micro-ROS Agent とのSerial 通信に必要みたい。
$ sudo usermod -aG tty nishi
$ sudo usermod -aG dialout nishi

このアーカイブについて

このページには、過去に書かれたブログ記事のうちOrange PI 5カテゴリに属しているものが含まれています。

前のカテゴリはChatGPTです。

次のカテゴリはROS2です。

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

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ