transformerの最近のブログ記事

機械の音で、故障の診断 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 に置き換えたモデル。

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

犬の気持を、ビデオ映像から、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ぞね!!

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

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 でした。

transformer asr japanese サンプルがある。

おんちゃんは、transformer asr のサンプルの、下記を試しておったが、
Automatic speech recognition
なんとも、日本語対応がすでに、ありますっと。

google で検索していたら、transformer asr japanese があった。
kotoba-tech/kotoba-whisper-v1.0 を ONNX に変換して動かしてみた。

1. 自分で転移学習をするなら、
August 2023, Fine-Tuning ASR Models for Japanese and Vietnamese by using OpenAI Whisper and Azure Speech Studio

2. そのまま使うなら、
kotoba-tech/kotoba-whisper-v1.0

ここのサンプルで、最近、判ったことだが、

torch_dtype = torch.bfloat16 if torch.cuda.is_available() else torch.float32

の部分は、使う GPU によっては、注意が必要みたいぞね。
おんちゃんの、GPU は、 GTX-1070 じゃが、この場合は、float16 は、使えないみたいぞね。

#torch_dtype = torch.bfloat16 if torch.cuda.is_available() else torch.float32
torch_dtype = torch.float32
こちらにすべきです。
これで、3.8 sec/f だったのが、 1.18 sec/f になったぞね。

日本語音声認識に特化したWhisperである kotoba-whisper-v1.0を早速試してみた
Kotoba-Whisper入門 - 日本語音声認識の新しい選択肢

結論を言えば、kotoba-whisper-v1.0 で、GTX-170 の場合、torch_dtype = torch.float32 で使うと、
リアルタイム MIC 入力で使えば、それなりに快適に動きます。
Yutube の怪談の動画の音声をスピーカーに出して、それをマイクで拾って遊んでいます。
まあ、間違いは、お愛嬌か。

このアーカイブについて

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

前のカテゴリはU-Netです。

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

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ