前提・実現したいこと
学習させたObjectDetectionモデルをWebブラウザで動作させたくて、モデルをtensorflow_converterでWeb Friendlyフォーマットに変換し、tensorflow.jsで動作させるアプリを作っています。
tensorflow.js側を以下のソースを元に、localhostに保存したモデルを使用するように修正しています。
このcoco-ssdでモデルを動作させるところで、躓いています。
修正箇所
- ベースパスの変更
tfjs-models/coco-ssd/src/index.ts
typescript
1//const BASE_PATH = 'https://storage.googleapis.com/tfjs-models/savedmodel/'; 2const BASE_PATH = 'http://localhost:1234/';
- モデルファイルの配置
以下ディレクトリにモデルファイルを配置します。
directory
1tfjs-models/coco-ssd/demo/dist/ssdlite_mobilenet_v2/ 2tfjs-models/coco-ssd/demo/dist/mobilenet_v1/ 3tfjs-models/coco-ssd/demo/dist/mobilenet_v2/
- 実行
README.md に記載されている手順で実行します。
発生している問題・エラーメッセージ
ブラウザ読み込み時、コンソール上に以下のようなエラーが出力されます。
SelectBox選択時、RUNボタン押下時も同じエラーが発生します。
io_utils.ts:116 Uncaught (in promise) RangeError: byte length of Float32Array should be a multiple of 4 at new Float32Array (<anonymous>) at o (io_utils.ts:116) at Object.decodeWeights (io_utils.ts:79) at e.<anonymous> (frozen_model.ts:109) at exports_regularizers.ts:47 at Object.next (exports_regularizers.ts:47) at s (exports_regularizers.ts:47)
ブラウザのデベロッパーツールで確認しましたが、モデルファイルはステータス200でlocalhostから取得できていました。
該当のソースコード
ソースを追ったところ、以下の72行目で発生していました。
tfjs-models/coco-ssd/src/index.ts
typescript
1 this.model = await tf.loadFrozenModel(this.modelPath, this.weightPath);
試したこと
作成したモデルが悪いのかと思い、COCO-SSDが元々使っていたモデルをダウンロードして、「tfjs-models/coco-ssd/demo/dist/」の3ディレクトリに配置しても同じエラーが発生します。モデルはステータス200で取得できていました。
以下、取得したモデルファイルのURLです。
url
1https://storage.googleapis.com/tfjs-models/savedmodel/ssdlite_mobilenet_v2/tensorflowjs_model.pb 2https://storage.googleapis.com/tfjs-models/savedmodel/ssdlite_mobilenet_v2/weights_manifest.json 3https://storage.googleapis.com/tfjs-models/savedmodel/ssdlite_mobilenet_v2/group1-shard1of5 4https://storage.googleapis.com/tfjs-models/savedmodel/ssdlite_mobilenet_v2/group1-shard2of5 5https://storage.googleapis.com/tfjs-models/savedmodel/ssdlite_mobilenet_v2/group1-shard3of5 6https://storage.googleapis.com/tfjs-models/savedmodel/ssdlite_mobilenet_v2/group1-shard4of5 7https://storage.googleapis.com/tfjs-models/savedmodel/ssdlite_mobilenet_v2/group1-shard5of5
追加情報
エラー時のデベロッパーツール画面を添付します。
Networkタブを見ると、モデルファイルの取得サイズが極端に小さいことがわかりました。
2枚目の赤枠です。実際のサイズは4MB程度なのですが、ツール上のサイズは1.6kbとなっています。どうしてこうなっているのかわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。