画像と音(スペクトログラム)で分類、マルチモーダル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ぞね!!

後日、github にでも上げておきます。
dog_feel_classify/dog_feel_train.ipynb

世の中のワンコウには、熊の接近に反応したり、地震の前の日に、急に鳴き声をあげたりする、敏感なやつがおります。
おんちゃんの、道路を挟んで向かい側の家のわんこうは、よく、地震の前日に、なんか思い出した様に、遠吠えをしたりしちょりました。

そんな、犬を監視して、いつもと違う犬の変化が捉えられれば、もう最高です。!!

1. 学習映像。
いまは、下記 5 クラスです。
dataset/
├── alert/ (クラス1)
│ ├── dog01.mp4
│ └── dog02.mp4
├── hungry/ (クラス2)
│ ├── dog03.mp4
│ └── dog04.mp4
├── miss/ (クラス3)
│ ├── dog03.mp4
│ └── dog04.mp4
├── long_time_no_see/ (クラス4)
│ ├── dog03.mp4
│ └── dog04.mp4
└── background/ (クラス0)
├── dog05.mp4
└── dog06.mp4

class_id=0 は、background または、該当なし id として使います。
background は、ピックアップしない、犬の動画、まるきい関係ない動画を一緒に学習させます。別に、なくても、良いみたい!!
実際の 犬の感情クラスは、class_id=1 から、割り振ります。

動画(mp4) のトリム。
犬が、鳴き出す、0.5[秒] ほど手前になるように、動画をトリムします。
使われるのは、先頭 4[秒] なので、10[秒] ほどあれば、十分です。

$ ffmpeg -ss 00:00:2 -i movie.mp4 -t 00:00:10 movie_trim1.mp4

最終的には、判定クラスに、熊がいるよ、地震がくるよ とかのクラスを追加したいぞね!!

2. アプリケーション

実際の使い方は、
USB カメラで、犬を、4[秒] 撮影します。
その、4[秒] のデータを、model に予測させます。

特に、ピックアップしたいクラスを決めておき、そのクラスが検出されたら、
ログに残すか、web をとうして、リモートに通知します。

predict の結果に、3.5[秒] 必要なので、model で predict している間は、
USB カメラのデータを、別スレッドで、保存しておくのが良いでしょう。
また、predict のタイミングは、音を、0.5 [秒] 間隔で、調べて、平均レベルが一定値を超えた場合だけ、predict する仕掛けが、良いでしょう。

3. 特許について。
googel で、特許を調べたら、アニコム ホールディングス株式会社 と言う業者さんが、
AIを活用してペットの動画から感情を判定するシステム で、特許を取得しているようです。
しかし、調べてみると、犬種を指定した、分類でなければ、特許侵害にならないとの事。
以下抜粋。
if breed == "Shiba": のような条件分岐がない。
品種ごとの重みファイル(weights)をロードする仕組みがない。
「耳の角度が何分以上なら怒り」といった、品種ごとの行動定義(辞書)を持っていない。
とのこと、
おんちゃん model は、犬の動画を読ませるだけで、犬種なんぞ判定に利用していない。
犬と言うことすら、限定していない。
なんでも、OKじゃ。ただし、それへの、回答は、不定じゃ!!
さらに、おんちゃんのモデルは、"熊が近くに来た"、"地震が来そう" などの、予測にも応用できる。
が、アニコム の特許の機能では、実現できそうもない!!
こっほ!! 以上ぞね!!
しかし、だれもが思いつくような技術で、特許とってほしくない。まっこと。

4. このモデルの応用。
本来、おんちゃんがこのモデルを思い立ったのは、病院のベッドで意識のない患者さんが、
鼻のチューブから、流動食を摂っているとき、よく、食べ物が食道を逆流して、喉まで届いて、嘔吐をしている光景をよく見かけたからぞね。

その時、母が入院していた病院の看護体制は、最悪で、食事の時に、背もたれを起こすこともせず。
寝かしたままで、体の右側を下にしておけば大丈夫、と、ほとんど、迷信に近いことを言って、そのまま流動食を患者に流し込んでいた。
途中、定期的に見回りにくることもなく。
とうの看護師達は、なにしているかとおもったら、ナーススーテーションの奥の流し場に数人あつまって、食事をしながら、話しこんでいた。
この間も、食べ物が逆流して、口から戻している患者さんがいることも、気が付かずに!!

この病院に移るまえの、救急病院とは、えらい違いじゃった。
まえの病院は、食事の前には、2の看護師で、患者をベッドの頭側に体をずらして、背もたれを、起こしてまわり。
そのあと、流動食を、はなのチューブから摂らせていた。
その間も、定期的に、看護師が見回りにきて、嘔吐、急変が無いか、気を配り、食事が終わって、30分たった頃、背もたれを元にもどすことをしていた。

それと比べると、あまりに、移ったあとの病院は、ひどかった。
行政機関、保健所などは、監査に入ったり、看護の方法の改善、指導をしたりしないのだろうか?

話が、横道にそれたが、意識のない患者さんの、嘔吐、誤飲によるむせびを、このモデルで予測できて、周りに知らせられるプログラムができないかと、思ったのが始まりぞね!!

ただ、実際、 モデルを学習させるには、動画が必要なので、今回は、簡単に手に入る犬の動画で、試しただけじゃ。
別に、犬の感情なんぞ、どうでも良いことじゃ。
そんなもの、飼い主が一番よくわかるはずだろう。

また、犬の感情の予測なんぞで、特許を取りたがる業者も情けない。
本当に、犬の感情が、わかるのかと、言いたい。
かってに、そうおもっているだけではないのか?
いぬから、直接に聞いたのか? と言いたい。

飼い主の前で、しっぽをフリフリしている、犬の感情が本当にわかるのか?
もしかしたら、この犬は、飼い主に向かって、「お前、なに主人ずらしている。おれさまが本当の主人じゃ。そこをどけよ!!」と言っているのかも知れないだろうが。

要素技術の発明で、例えば、機械学習そのもの、CNN、LSTM 等で特許をとるならわかるが、その技術を、単に組み合わせて、
つくっただけのプログラムで、なぜに特許がとれるのか?
なんの独自性、先進性もない代物でないのか?
まっこと情けない。技術者のプライドと言うものが無いのか? と言いたい。

このブログ記事について

このページは、おんちゃんが2026年4月 1日 13:37に書いたブログ記事です。

ひとつ前のブログ記事は「Orange pi 5 に Joshua Riek Ubuntu 24.04 を使ってみた。」です。

次のブログ記事は「動画 で簡単分類、おそるべし Video Transformer.」です。

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

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ