make_image_classifierコマンド ライン ツールを使用してモデルを再トレーニングし、 tfjs-converterを使用してモデルをブラウザー用に準備することで、mobilenet_v2 モデルを再トレーニングしました。
make_image_classifier \
--image_dir image_data \
--tfhub_module https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4 \
--saved_model_dir trained_models/1 \
--labels_output_file class_labels.txt \
--tflite_output_file trained_model.tflite
tensorflowjs_converter \
--input_format=tf_saved_model \
--output_format=tfjs_graph_model \
--signature_name=serving_default \
--saved_model_tags=serve \
./trained_models/1 \
./web_model
TF Lite モデルをテストするために、tflite サンプル コードを使用しました。ツールの指示に従ったため、提供されたコードを使用しました。
ブラウザで画像を予測しようとすると、期待される出力が得られません。ラベルなしで確率だけが印刷されているようです。
const MODEL_URL = 'model/model.json';
const model = await tf.loadGraphModel(MODEL_URL);
var canvas = document.getElementById("canvas").getContext("2d");;
const img = canvas.getImageData(0,0, 224,224)
const tfImg = tf.browser.fromPixels(img).expandDims(0);
const smalImg = tf.image.resizeBilinear(tfImg, [224, 224]);
let result = await model.predict(smalImg);
console.log(result.print())
出力: テンソル [[0.0022475, 0.0040588, 0.0220788, 0.0032885, 0.000126, 0.0030831, 0.8462179, 0.1188994],]
Python を使用したモデルのテストはうまく機能し、ラベルと確率を含む期待される出力が得られました。私は何か間違ったことをしていますか?