Я переобучил модель mobilenet_v2, используя инструмент командной строки make_image_classifier , чтобы переобучить модель, и tf js -конвертер , чтобы подготовить модель для браузера.
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 работает хорошо, и я получил ожидаемый результат с метками и вероятностями. Я что-то не так делаю?