Mini Pupper2 ros2 4足歩行 Policy 強化学習

Mini Pupper2 ros2 4足歩行 Policy 強化学習

Mini Pupper2 4足歩行 Policy を探したけど、どうもどこにあるのか判らん。
あったとしても、おんちゃんの PC の GPU gtx 1070 では、まるっきり歯がたたん。

ChatGTP に、いろいろ聞いているうちに、
Ros2 Jazzy Gazebo(Harmonic) で、Mini Pupper2 ros が動いているので、Gazebo のシミュレーション環境でも、いいんじゃない?(まるっきり、時間度外視であれば)
と、行き着いた。

ChatGPT を、おだてて、
4足歩行 Policy と、強化学習の torch train 等、一式書いてもらっての、テストじゃ。
今回は、この話じゃ!!
けっして、良い子は、まねをしないように。...

結局、Gazebo 上の Mini Pupper2 を、Policy の出力で、動かして、その結果が良ければ、+何点、 NG であれば、-何点と、強化学習を繰り返すだけ。
難点は、それを、一度に 1000とか同時にできるかどうかだけじゃ。
昔、台に乗った、ポールを倒さないように、台を動かす強化学習と同じ要領みたい。

Stable Baseline3(SB3) で、PRO(Proximal Policy Optimization) で、既存の MlpPolicy をすこしカスタマイズしてつかえば、出来上がるみたい。

Python コードの原型は、ChatGTP に教えてもらって、つくったぞね!!

ROS2 Jazzy Gazebo Harmonic で、Mini Pupper2 ROS を試す。

ROS2 Jazzy Gazebo Harmonic で、Mini Pupper2 ROS を試す。

ふう!! 今回は、結構つかれたが、
表題通り、Gazebo Harmonic で、mini_pupper_ros の Mini Pupper2 を、なんとか、動かせたので、記載しました。
実機が、8万ほどするので、びんぼうなおんちゃんには、高値の花!!
Gazebo で、ちょっと試してみようと思ったのが、まちがいじゃったか!!

本当は、もっと大きな、犬ころロボットを試してみたいと思ってはいるが、さきだつものが...
本格的犬ころロボットは、今は、中ちゃんメーカー1強みたい。
30万から40万らしいが、4足歩行 Policy を自分で開発してつかう版だと、100万オーダーらしい。
べつのメーカーが、安価なモーター版を開発中と言うが、そういったものが出てこないと、なかなか、開発に踏み込めない。

環境
PC: Ubuntu Mate 24.04
ROS2 Jazzy
Gazebo Harmonic

Git Source
Jazzy 版
@mangdangroboticsclub/mini_pupper_ros
上記 jazzy 版 ソースを、git clone して、Gazebo Harmonic で動作するように修正する事が、今回の手順になる。
楽な方法は、無い。Jazzy 版でも、Gazebo は、古い版のままじゃ!!

はっきり言って、そのままでは、動かん!!
基本的な作りが、ROS2 対応になっていない。
robot URDF modelの top link が、 base_link なのが、そもそも問題で、おまけに、
stanford_controller_node.py が、そもそも使いづらい。
こいつの誤差の大きさで、本当に苦労した。

もともとが、Humble 版なので、Jazzy版へ移行するさいに、Gazebo が、かなり違ったので、これを、吸収しないといかんが、
ここは、ほとんど Google Ai に聞きぱなっし。しかし、以前、WearHouse Tugbot を作った経験があったので、随分前の事で、ほとんど記憶に残っていなかったが、
部分的に、思い起こして、なんとかできた。

ROS2 Jazzy で、50x50[M] の static map を作って、使う。#2

ROS2 Jazzy で、50x50[M] の static map を作って、使う。の続きです。

こちらが、本題なので、先こちらを記述します。
前回は、50x50[M] の static map を作成したので、今回は、それを、実際 ROS2 で使ってみる話です。

50x50[M] の static map の 巨大サイズゆえの問題が顕在化しました。
従来の手順で、SBC で、Map をロードして、リモート PC の Rviz2 で表示すると、Map が受信できない状態になりました。
WiFi Lan のトラフィックが、対応していないのが原因みたいです。
対策は、幾つかあるみたいですが、今回は、SBC と リモート PC で、それぞれがローカルの、 pgm、yaml をロードして使う方法を試してみました。

方法 1.
今使っている、Static Map のロード launch rtabmap_ros_my localization.launch.py を修正して、topic を、/map 、/local_map の指定ができる様にする。
つまり、SBC と リモート PC で、 map server を、2 本立てて、それぞれ別の topic 名 で、publish させる。
一応、この方法も、OK でした。

ROS2 Jazzy で、50x50[M] の static map を作って、使う。

最初は、50x50[M] の static map を作るから。
QGIS で、自宅を中心に、周辺の道路を、50x50[M] の Static Map に落としてみた。
今回も、Google Ai に聞きながらの作成ぞね!!

Google Ai に教わった手順ですが、
Step 1: プロジェクト作成と「メートル単位」の設定
まずはQGISを起動し、長さをメートルで扱えるように座標系を設定します。

QGISを開き、「新規プロジェクト」を作成します。
画面右下の 「EPSG:XXXX」(デフォルトはEPSG:3857など)をクリックします。
フィルター欄に 6677 と入力し、JGD2011 / Japan Plane Rectangular CS IX(平面直角座標第Ⅸ系:高知県などをカバー)を選択して「OK」を押します。
※もしお住まいが九州なら 6676、近畿なら 6674、関東なら 6681 など、お住まいの地域に合った平面直角座標系を選択してください。
おんちゃんは、四国なので、6672 を指定しました。
これでQGIS内の単位が完全に「メートル」になります。

DINOv2 を使って、ROS2 SLAM(自己位置推定)に役立てる。

前回、フィジカルAi で ROS2 自立走行ロボットを動かす。#2
で、Diffusion policy の input に、DINOv2 を使った model を試したが、

"DINOv2 の input 画像に何か入れると、特徴量を返してくる" 特性を活かすと、
一度通った場所のランドマークを記憶させられる様じゃ。
これを使えば、SLAM(自己位置推定)が、行える。もう、Static Map を予め作る必要がない。
Google Ai に色々訪ねていたら、教えてくれた。

なんとも便利な Model を、Meta(旧 Facebook)が作ってくれたもんじゃ!!

1. 概略は、
1.1 SLAM データ作成。
1) 屋外で、ロボットの走行コース上で、10[M] ごとに、RGB Camera の画像と、その時の、gnss-rtk から求めた、緯度、経度と、ロボットの向きのデータを集めて回る。
この時、no を順に割り当てて行く。

2) 上記データの画像をDINOv2 の feed させて、その特徴データを、Faiss( ベクトルデータが扱える DB) に、順に登録する。
以上で、 今回の、SLAM コース情報の出来上がり。

1.2 ROS2 diff car ロボットでの利用。
3) ROS2 diff car ロボットで、RGB カメラの画像を、DINOv2 の feedさせて、 出てきた特徴量で、Faiss の検索をかける。
特徴量が見つかると、Faiss は、登録時の no を返してくるので、
先に集めた、data の no と一致する、緯度、経度から、今の 位置を得る。
しかし、gnss-rtk があれば、必要が無いが!!
gnss-rtk が使えない、室内だと使えるかも。

検証コードは、python pytorch で、簡単に書ける。
Googl Ai に聞けば、コードを教えてくれる。
このページの 1.概略 の部分を Google Ai に聞けば教えてくれる。
コード自体は、簡単だから、試してみては?

ただし、Inference 時のハードのリソースが、結構要求される。
ROS2 実機 Diff Drive Car で実装、テストするには、ここが難問か!!

以前、SLAM でランドマークを使う方法を模索していたが、
ROS2 自作 Turtlebot3 による 草刈りロボット開発。#15 Robot Localization
これが、上記の、回答になりそう。

フィジカルAi で ROS2 自立走行ロボットを動かす。#2

ACT の sub goal が、芳しくないので、業を煮やして、diffusion の sub goal を試してみた。
まだ、作っている途中だが、簡単に動いた。
こちらは、優秀みたいじゃ。
なんじゃこりゃ、こんなに、簡単にうごくの?

LeRobot ACT sub goal で、使った 同じ ROS2 bag ファイルを使って、 train させました。
ROS2 Gazebo WearHouse Tugbot で、 sub goal node を作って、走行させたら、うまく完走できるようです。
当初、TF 補正ナシで、走行させていましたが、TF 補正有りが必要だとわかって、TF 補正して、走行させたら、うまく完走できるようになりました。
しかし、あまりに、障害物の近くを走行するので、見ていて冷や冷やします。

ROS2 広域 Planner の走行パスを使って、複数のチェックポイントを、 model に入力して、走行させますが、
model は、それを完全になぞることはせずに、自分の学習脳の判断で、あくまで走行します。
ここが、ROS2 Nav2 の走行とちょっと違うかな?

train 用の、ROS2 bag データを採る時は、障害物から少しゆとりをもって離れた場所を走行させた方がよいぞね!!

フィジカルAi で ROS2 自立走行ロボットを動かす。

Google Ai に、質問していたら、ROS2 自作 Turtlebot3 で色々走行させて、データを取れば、
それを、フィジカルAI の 適当な model(ここは、Lerobot ACT、diffusion etc) に学習させれば、自立走行させられそう!!
フィジカルAI の学習は、エピソード単位でさせる!!
ので、基本、目的地は、1箇所。
しかし、これをベースにして、目的地を告げて、複数ヶ所へ到達させることも出来るとの事じゃ!!

ここにきて、やっと、フィジカルAi と ROS2 自立走行ロボットの勉強がつながったぞね!!
ちょっと、ROS2 Jazzy Tugbot の Gazebo で、学習data を作ってためしてみます。
開発環境:
Ubuntu Mate 24.04
ROS2: Jazzy
Gazebo
Tugbot wearhouse
Navigation2 with AMCL front rgb camera, front scan
Model:
LeRobot ACT
注) ROS2 の環境と、virtual_env で作った、torch、lerobot の環境の2 を、使い分けます。
lerobot_env: virtual_env で作ります。
lerobot_env で、
$ python -m pip install mcap mcap-ros2-support opencv-python numpy [torch] [lerobot]

1. Gazebo Tugbot wearhouse を、Navi2 で動かして、bag data を保存します。

ROS2 環境が必要なので、下記をターミナルからたたく
$ source /opt/ros/jazzy/setup.bash
$ source ~/colcon_ws-jazzy/install/local_setup.bash
$ export ROS_DOMAIN_ID=30 #TURTLEBOT3
$ export TURTLEBOT3_MODEL=waffle
$ export GZ_SIM_SYSTEM_PLUGIN_PATH=/opt/ros/jazzy/lib

下記、launch で、 Gazebo Weahouse Tugbot が Nav2 で、操作出来ると思う。
最新版を、up しているか、自信がないが!!
tosa-no-onchan/turtlebot3_navi_my/launch/tugbot_amcl_scan.launch.py
すでに、SLAM で、map が作成されていると思うので、その Map を使います。
上記、 launch.py の上部の起動手順に従って、Rviz2 で、Nav2 操作が出来る状態にします。
#  2.2 navigation
の部分。

初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。#3

LeRobot ACT model で、モーション分割 Datasets で、学習を行う!! 第2段!!
初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。#2 の続きです。

今回は、本当に、オリジナルの データ・セット lerobot/svla_so101_pickplace を、各エピソードを、複数モーションに分割して学習させてみました。

初めに、Demo にて確認します。
$ export PYTHONPATH=$PYTHONPATH:/home/your-id/local/git-download/lerobot/src <-- git clone した場所の src
$ lerobot-dataset-viz --repo-id lerobot/svla_so101_pickplace --episode-index 0

外置きのカメラが、2台あるみたい。observation.images.up と observation.images.side
なので、 class ACT は、2 images inputs にしないといけない。
この、Detasets は、FPS:30[hz] なので、これも、train.ipynb に反映させないといかん!!

1. Datsets: lerobot/svla_so101_pickplace を、3 モーションに区分けして、 3 Datasets ファイルにする。
$ make_3motions_data.py

本来のこの3分割の目的は、motion1、motion2、motion3 に分割したあと、学習が弱い部分の motion? を、新たなデータから加えて、
motion1、motion2、motion3、montion1b の様に、組み合わせて学習させるのが、本来の目的じゃ。!!

2. train
train.ipynb を、lerobot/svla_so101_pickplace に合うように、
input、output を修正して、
jupyter notebook で、train させます。
1 epoch のデータ数が、ちょっと少ないので、10 epochs 程、学習が必要です。
8 batch で、
Steps 13400 | Loss: 0.167124 | LR: 0.000003
Model saved! (Step Best Loss: 0.1671)

Loss: 0.11 辺りになれば、良いとおもいますだ!

初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。#2

LeRobot ACT model で、モーション分割 Datasets で、学習とシミュレーションの inference を学ぶ!!
初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。 の続きです。

今回は、オリジナルの データ・セット lerobot/aloha_sim_transfer_cube_human を、各エピソードを、複数モーションに分割して学習させてみました。
オリジナルのデータは、必ず、start - end の決まった流れで、複数エピソードを学習させています。
前回の学習済 ACT model で、シミュレーションでのテストをずっと見ていましたが、
なんとなく、キューブを見つける性能が弱い気がするし、最後の手渡しする部分も弱い気がしました。
できれば、その部分だけ、もっと学習させれば、良い気がしました。
そのためには、いつも1 エピソードを学習させるのでは無くて、部分的に強化した学習が出来ないかと考えた結果、
モーションを区切って学習させたらどうじゃろか? と思って、作ってみました。

1. まずは、2 分割のモーションで試してみます。
オリジナルの lerobot/aloha_sim_transfer_cube_human を分割する python コードを作る必要があります。
例によって、Google Ai の助け(ほとんどだが) で、なんとかできました。
make_3motions_data.py

今回は、これで、 2分割させたモーションデータを使ってみます。
分割した Datasets を、確認するのは、
$ export PYTHONPATH=$PYTHONPATH:/home/your-id/local/git-download/lerobot/src
$ lerobot-dataset-viz --repo-id local/split_dataset_0 --root outputs/split_dataset_0 --episode-index 0

train コードは、前回作成した notebook の train.ipynb を、少し修正すれば、
学習済 ACT model が出来ます。

とりあえず、5 - 6 epochs 学習させてみます。
train.ipynb
use_ex=True
で学習させます。こちらが、train 時間が少ないので...

一応、非分割のデータ・セットと同じ様に、今回の 2モーション分割の場合も、Loss が減っていって、学習できている様です。

Steps 12400 | Loss: 0.175373 | LR: 0.000003
Model saved! (Step Best Loss: 0.1754)
本当は、Loss: 0.11 辺りが良いと思う!!

初めてのフィジカルAi。Huggingface の LeRobot の ACT model で学ぶ。
ACT モデルを、使っての Train と Predict の一連の流れを試してみる。

サイトは、下記
lerobot
githubは、
@huggingface/lerobot
インストールを、下記ページに従って行います。
lerobot/installation

virtual_env を使うと良いと思う。
$ cd
$ python3 -m virtualenv lerobot_env
$ source lerobot_env/bin/activate
おんちゃんの開発環境は、
ubuntu mate 24.04
GPU: gtx 1070

先に、pytorch 2.10.0 etc をインストールしておく。
$ python -m pip install torch==2.10.0 torchvision==2.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu126

lerobot のライブラリーは、最新を使うので、github 版を clone します。
あとは、git clone をして、clone したデイレクトリーへ移って、
$ cd relobot
$ python -m pip install -e .
その後、Simulations を使うので、続けて、
aloha をインストールします。
$ python -m pip install -e ".[aloha]" # or "[pusht]" for example

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 の方式をメインにします。

機械の音で、故障の診断 Sound Sensor Transformer.

機械の音で、故障の診断 Sound Sensor Transformer.

CNN-Transformer ハイブリッドモデル で、動画のクラス分類をする。
かって、CNNとLSTMを組み合わせたモデルの「LRCN (Long-term Recurrent Convolutional Networks)」の、 LSTM 部分を、
Transformer に置き換えたモデル。第2段。
今回は、上記をベースに、
教師なし Transformer (Temporal AutoEncoder) を使います。
よく、わからん。Google AI の口車に乗せられて、とりあえず、作ってみました。

要は、正常の音(今回は、動画の Sound 部分) のデータばかり、学習させて、
取り込んだ音から model に再現させて、同じになるように、weight を学習させる。
その、オリジナルの音と、model が再現させた 音の違いを、
比較して、どれくらい、違いがあるかによって、正常、異常を判定する。とのことじゃ。
最終的に、オリジナルと再現の違いの算出方法と、どの程度の threshold をするかに、良し悪しが、出るみたいじゃ。

故障の音が入った場合は、再現された音と大きく異なる事で、異常を判定する。との事。

動画 で簡単分類、おそるべし Video Transformer.

動画 で簡単分類、おそるべし Video Transformer.

画像と音(スペクトログラム)で分類、マルチモーダルTransformer.
の続きです。

CNN-Transformer ハイブリッドモデル で、動画のクラス分類をする。
かって、CNNとLSTMを組み合わせたモデルの「LRCN (Long-term Recurrent Convolutional Networks)」の、 LSTM 部分を、
Transformer に置き換えたモデル。

犬の動画(今回は、映像部分のみ) を使って、わんこの気持ちを予測します。

今回は、わんこの動画(mp4) の Video 部分だけを、使って、転移学習から、Full Scratch 学習まで行います。

クラス数=5 なので、とにかく簡単に、学習が完了します。

github に上げました。
dog_feel_classify_light

犬の気持を、ビデオ映像から、Deep Learning で予測。

画像と音(スペクトログラム)で分類、マルチモーダルTransformer.

Transformer に、画像と音(スペクトログラム)を同時入力して、クラス分類ができるみたい。
たとえば、犬の画像(動画) と、鳴き声を同時に入力して、犬の状態が分類できる、モデルができるみたいじゃ。

しかし、部屋の犬だったら、動き回るから、カメラで捉えづらい。
ゲージの中にいる犬だった、映像と音声が撮れそうかも。
マルチモーダルで、場合によっては、鳴き声だけの処理にすれば、可能か!!

転移学習するには、まず学習用の動画を集めないといかん。

ネットから、犬の動画をかき集めて、転移学習 or ファインチューニング しました。
class 数=5 で、train loss = 0.3 位になりました。

4[秒] の動画から、 8 フレームの静止画をサンプル抽出して、音声は、スペクトログラム化して、model に class 分類させました。
torch model を作成して、 onnx に変換して、Orange pi 5 で、実行すると、
1 predict に 3.5[秒] でした。
本当は、 Orange pi 5 rknn に変換したかったのですが、変換時にエラーが出て、これは、失敗しました。
いまは、学習に使った動画の本数が少ないですが、一応、分類できる状態です。

少しずつ、学習データを増やして、Full Scratch で学習させて、試していますが、
学習データさえ、メリハリのあるものを用意すれば、結構具合がいいみたい。

ぜひ、一度、自分で動画ファイルを用意して、ためしてみとうせ!!
orange pi 5 で、USB Camera を使って、
$ python dog_feel_watch.py
で、OKぞね!!

Orange pi 5 に Joshua Riek Ubuntu 24.04 を使ってみた。

Orange pi 5 に Joshua Riek Ubuntu 24.04 を使ってみた。

いままで、Orange pi 5 Armbian をずっと使っていたが、今回、上記を使ってみた。
と言うのも、Orange pi 5 Armbian 24.04 だと、 NPU のデバイスドライバーが、標準で入っていないのが、問題でした。

Joshua Riek Ubuntu 24.04 だと、そこらへんが、標準で入っているので、使ってみました。
大元は、
Joshua-Riek/ubuntu-rockchip
ダウンロードは、
Joshua Riek Ubuntu download
-> Orange Pi 5
-> Ubuntu 24.04 LTS Desktop with Linux 6.1

ダウンロードして、dd で書き込み。
$ xz -dc ubuntu-24.04-preinstalled-desktop-arm64-orangepi-5.img.xz | sudo dd of=/dev/sdb bs=4M status=progress
$ sync

注) dd を使わなくても、書き込み用、 sdhc をつなげて、xxx.img.xz をクリックすれば、OK だった。

あとは、 Orange pi 5 で立ち上げて、初期設定で、OK でした。

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 か。

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 での実行速度が改善されるみたいじゃ。--> 実際は、変わらない!!

node.js+express+typescript で、ブロクチェーン!!

node.js+express+typescript で、ブロクチェーン!!

Google Ai で、node.js+express+typescript で、ブロクチェーン アプリも問い合わせてみた。
一応、つくれるみたい。しかし、これは、かなりややこしいみたいじゃ。
それでも、ブロクチェーン アプリ にも、node.js+express+typescript は、有効な選択肢みたいじゃ。

先に、ブロックチェーン自体の勉強をしておいたほうが、良さそうじゃ。
ブロックチェーン は、企業のお金の集金なんかに、ニーズがあるそうじゃ?
IOT のデータは、ブロックチェーンを使うほどでもない気がするが?

とりあえず、おんちゃんは、 IOT デバイス(Raspi を想定)が送ったセンサーデータを、node.js + express + typescript で、
読み取るサーバーアプリを作って試してみる事にした。
持ちろん、センサーデータを、登録する側も、PC で、typescript で、作ってみる事にしたぞね!!
注) こちらの方は、プログラムが、かなりシンプルなので、基本部分が把握できて、初心者には、最適かもしれん。

node.js+express+typescript で、 Ai Chat を作ってみた。

node.js+express+typescript で、 Ai Chat を作ってみた。

"node.js + express + typescript で、ai を使ったシステム" を、 google ai で問い合わせると、ai チャットも簡単に作れるみたい。
ChatGTP だと、有料になるにで、先ずは、Ollama で、ローカルPC で試すのが良いと思う!!
これへの質問の過程で、
"一つ質問がありますが、Ollama で、上述のように AI チャットを作ったとして、次のステップとして、質問と回答の内容を、自社の業務に関する事にするには、どうすればよいのでしょうか?"
を問い合わせしたら、やり方を教えてくれたぞね!!
これなら、特定事業者に関する AI チャットもできそうじゃ。

i) RAG(検索機能拡張)
ii) ファインチューニング (Fine-tuning)
ファインチューニング だと、完成への道のりは、たいへんだろうが!!
RAG(検索機能拡張) だと簡単にできそうじゃ。

やはり、流行りの、 AI との連携には、node.js + express + typescript の利用が向いているんだろう。

Ollama に関しては、以前触れた。
LM Studio と言うのが、あるそうな!!

1. 開発環境
Ubuntu 24.04 PC 12G memory
llama3
GTX 1070 8GB

node.js + express + TypeScript Mail Form プログラム。

node.js + express + TypeScript Mail Form プログラム。

node.js + express + TypeScript サーバーサイドの app の Tips!! の一環で、
Mail Form プログラムを作成してみた。

このプログラムで、確認できる事。

  • typescript での、mail の送信
    今回は、nodemailer を使ってみた。
  • カートのような一時ファイルが使えるかの確認
    Redis を使ったセッション管理で、行うことにした。
    ただ、/dev/shm (shared memory) を使えば、perl でよく使った、SDBM、XDBM ファイルみたいなのでも良い気がする。
    とにかく、シンプルで、10年以上は、そのまま使える手法がよいと思う!!
  • TEXT ファイルのアクセスと、ファイルロックの機能
  • メール文面のテンプレートの作成と、それを使った、メール本文の作成。
    mustache を使ってみた。
  • /admin(認証) ページ下 へのアクセスの、一括 認証処理。
    オープンページとクローズページの切り分け。
    認証ミドルウエアを、index.ts の中に組み入れた。
  • 認証処理で得た、管理者 id の、サブコントローラへの引き継ぎ。
  • router + controller 対 による、複数 コントローラプログラム 構成の構築。

github に公開しちょります。
@tosa-no-onchan nodejs_typescript_samples

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

アイテム

  • 20250815_162019-2.jpg
  • 20250813_160727.jpg
  • 20250729_181747-2.jpg
  • 20250729_150531.jpg
  • 20250726_155011.jpg
  • v_6.jpg
  • 2024-09-30 14-25-56-1b.jpg
  • 2024-09-30 17-59-18-1.jpg
  • 2024-09-30 17-04-16-1.jpg
  • 2024-09-30 14-25-56-1.jpg

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ