Closed7
TensorFlow.js 向けモデルを手元で作成して使用する

経緯
過去に AutoML Vision を使って画像分類モデルを作成して、自作 Web アプリに載せたことがある。今回は画像分類モデルを手元で作りたいので、TensorFlow.js を使っての作り方とそのモデルの使い方を調査する。

Keras モデルを TensorFlow.js にインポートする
Python
Keras を使った画像認識のモデルは 2017年から2019年にかけてよく作ったので、Keras を基準に考える。
- tensorflowjs ライブラリで TensorFlow.js 形式にエクスポートできる
JavaScript
モデルの読み込み
import * as tf from '@tensorflow/tfjs';
const model = await tf.loadLayersModel('https://foo.bar/tfjs_artifacts/model.json');
予測する
const example = tf.fromPixels(webcamElement);
const prediction = model.predict(example);
tf.browser.fromPixels の入力
API ドキュメント - tf.browser.fromPixels
- HTMLImageElement で入力できる
- モデルの入力層は uchar で良さそう。
- RGB で入力できる
- RGB順は おそらく RGB。tf.image.rgbToGrayscale というメソッドがあるので、rgb が TensorFlow.js 内でデフォルトの RGB 順と思われる。

分類モデルを選定する
以下の条件に該当する分類モデルを選定する
- Keras に含まれている
- 高精度
- 高速。
- モバイルでなく PC での動作だが、大量の動画フレームに対して分類したいので、高速であるほうが利便性が高い。
Keras Applications から選択する。
Available models の表からサイズが小さく、論文発表が2021年と新しめな、EfficientNetV2 を選定した。

学習モデルを作成する
画像を Keras に取り込めるようにする
2018年に作ったコードがあるので、これをベースに今時の Python の文法で作成する
作成した
学習は NVIDIA RTX 3080 で20分で完了した。
混合行列
start end kill death other
start 502 0 0 0 0
end 0 2252 0 0 11
kill 0 0 139 0 2
death 0 0 4 587 10
other 1 8 6 3 1475

TensorFlow.js 形式にコンバートして TensorFlow.js に読ませたところで問題発生
解決方法
こちらは非対応
Keras モデルを TensorFlow.js にインポートする
こちらならば対応している
TensorFlow GraphDef ベースのモデルを TensorFlow.js にインポートする

Python Advent Calendar 2023 の 3日に続く
ブラウザ上で画像分類出来たので続きはそちらにまとめる。
このスクラップは2023/11/03にクローズされました