機械の音で、故障の診断 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 をするかに、良し悪しが、出るみたいじゃ。
故障の音が入った場合は、再現された音と大きく異なる事で、異常を判定する。との事。
Pytorchの最近のブログ記事
動画 で簡単分類、おそるべし 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ぞね!!
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 の怪談の動画の音声をスピーカーに出して、それをマイクで拾って遊んでいます。
まあ、間違いは、お愛嬌か。
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
Pytorch PVCNN:Point-Voxel CNN for Efficient 3D Deep Learning #4 です。
Pytorch PVCNN:Point-Voxel CNN for Efficient 3D Deep Learning #3 で、S3DIS の学習ができたので、
今回は、予測(Predict) を試してみました。
開発環境
OS: Windows10
言語: Python 3.7.9
Pytorch 1.7.1 gpu
開発ツール: Eclipse
その他ツール:
VisualStudio 2017 community
MYSY2: ./data/shapenet/download.sh でのみ使用。
PCメモリー: 16G ( 9.5G 位使うみたい。)
注) オリジナルの、datasets/s3dis.py だと、チョットずつファイルから持ってくるので、メモリー消費は、少ないと思います。
GPU: GTX 1070 8G
前回同様、今回も、S3DISのデータアクセスは、オリジナルの datasets/s3dis.py では無くて、カスタマイズ版 (datasets/s3dis_nishi.py)を使います。
詳しくは、前回の Pytorch PVCNN:Point-Voxel CNN for Efficient 3D Deep Learning #3 をご覧ください。
評価用のオリジナルプログラムは、evaluate/s3dis/eval.py ですが、やはりこちらも、
データセットが用意出来ないので、コピーして、少し改造してやります。
Pytorch PVCNN:Point-Voxel CNN for Efficient 3D Deep Learning #3 です。
mit-han-lab/pvcnn
前回までで、shapenet データでの確認ができたので、今回は、KITTI と行きたいところですが、
KITTI のラベルデータの入手が、面倒なので、先に、S3DIS を試してみました。
開発環境
OS: Windows10
言語: Python 3.7.9
Pytorch 1.7.1 gpu
開発ツール: Eclipse
その他ツール:
VisualStudio 2017 community
MYSY2: ./data/shapenet/download.sh でのみ使用。
PCメモリー: 16G ( 9.5G 位使うみたい。)
注) オリジナルの、datasets/s3dis.py だと、チョットずつファイルから持ってくるので、メモリー消費は、少ないと思います。
GPU: GTX 1070 8G
S3DISの方も、オリジナルの datasets/s3dis.py のままでは、オリジナルデータのText ZIP
(http://buildingparser.stanford.edu/dataset.html) が必要なので使えません。
なので、今回は、'https://shapenet.cs.stanford.edu/media/indoor3d_sem_seg_hdf5_data.zip' を
ダウンロード And Unzip した、h5 ファイル版を使います。
Pytorch PVCNN:Point-Voxel CNN for Efficient 3D Deep Learning #2 です。
mit-han-lab/pvcnn
Pytorch PVCNN:Point-Voxel CNN for Efficient 3D Deep Learning で学習ができたので、結果確認をしてみます。
開発環境
OS: Windows10
言語: Python 3.7.9
Pytorch 1.7.1 gpu
開発ツール: Eclipse
その他ツール:
VisualStudio 2017 community
MYSY2: ./data/shapenet/download.sh でのみ使用。
1. 評価
オリジナルでは、下記、スクリプトを実行します。
> python train.py configs/shapenet/pvcnn/c1.py --devices 0 --evaluate
但し、これでは、面白くありません。
第一、通常のアプリケーションで使えるような代物ではありません。
たとえは、1件の画像 (Point Cloudデータ) を入力して、その結果を利用する。
には、使えません。
なので、今回少し改造をしてみました。
Pytorch PVCNN:Point-Voxel CNN for Efficient 3D Deep Learning を試してみました。
mit-han-lab/pvcnn
開発環境
OS: Windows10
言語: Python 3.7.9
Pytorch 1.7.1 gpu
開発ツール: Eclipse
その他ツール:
VisualStudio 2017 community
MYSY2: ./data/shapenet/download.sh でのみ使用。
1. Data
Data は、ShapeNet にしました。
2. Pytorch 実行環境
Anaconda で、 Pytorch 1.7.1用のチャネルだけ作成して、後は、全て
pip install で、必要パッケージを追加します。
毎回、環境を設定するのが、結構大変なので、batch ファイルを用意して、DOS プロンプトで起動します。
Pytorch で U-Net(セマンティックセグメンテーション) のサンプルが結構公開されているので、
その中から、
https://github.com/milesial/Pytorch-UNet
を、Windows10 + GPU 環境で試してみました。
OS:Windows10
GPU:GeForce GTX 1050 Ti 4.0GB)
CUDA:10.0
Anaconda3 + Python 3.6
Pytorch 1.0.1
その前に、PyDenseCRF のインストールで躓いたので、メモしておきます。
pip install pydensecrf では、コンパイルエラーになります。
https://github.com/conda-forge/pydensecrf-feedstock
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
を参考にして行います。
但し途中の箇所でエラーが出てそれから進みません。