ROS2 自作 Turtlebot3 による 草刈りロボット開発。#17 Transformer で経路計画をする。No.2
ROS2 自作 Turtlebot3 による 草刈りロボット開発。#8 Transformer で経路計画をする。 の続きです。
同じ Transfomer model を、Pytorch で、作ってみました。
Pytorch のほうが、コードがシンプルで分かりやすいぞね!!
今回の Pytorch Transformer のモデルについて、ちょっと説明します。
ベースは、Transformer の Speech to Text の処理をベースに作っています。
詳細は、オリジナルのページを参照してください。
今回、特筆したいのは、model の outputs の取り出し方法です。
どうやら、大きく言って、2種類あるみたい。
1 は、Keras 版でも使っていた、predict 結果を、一度( 150 の位置 class) に取り出す方法と
。
2 は、最近 google ai の話だと、1個ずつ、ループして、必要分だけ取り出すほうほうです。
ここで、結構はまりました。
最終的には、onnx 変換で、1 の方しかできないので、1 の方式をメインにします。
github に上げました。
@tosa-no-onchan / opp_with_transformer_torch
1. trainは、
opp_one_shot_train.ipynb
ちょっとだけ、補足。
損失関数の指定で、ちょっとだけ注意が必要。
criterion = nn.CrossEntropyLoss(label_smoothing=0.1)
label_smoothing=0.1 が、必要みたい。
ただし、これを使うと、Loss 計算上、
0.70xxx 台が最小みたい。これで、実質 Loss=0.00 に等しいとの事。
学習データ、1,000 で、 600 - 1000 エポック回します。
気長に、学習させとうせ!!
2. onnx への変換は、
opp_torch2onnx_for_pc.py
3. onnx での predict は、
opp_orangepi_onnx.py
4. おんちゃんのメモ。
精度は、断然 trorch transformer 版が、良いと思う!! by nishi 2026.5.7
5. このモデルの応用。by nishi 2026.5.8
ROS2 だけでの利用では、つまらんので、
おんちゃんなりに、ない知恵を絞って、このモデルの応用を、考えてみたぞね。
1) 水平に突き出た蛇口の、蛇口から水平に出る、水流の放物線の中心線を予測するモデル。
これを、Max パワーの数流を 100 とした時の、観測値の強さを、パーセントで出す。
どう?
題して、Water Pressure Sensor Transformer. コッホん!!
2) 砂防ダムの水量の観測。
砂防ダムから流れる水流の上面を予測するモデル。
これを、通常の水流を、100 とした時の、観測値の強さを、パーセントでだす。
さらに、発展させて、上流域の降雨量も使って、マルチモーダル Transformer で、
鉄砲水の予測をするモデルは、どうか?
でも、水流量の観測なら、もっと機械式の精度の良い機器がありそうなので、意味がないか!!