#tensorflow #tensorflow.js #object-detection-api
#tensorflow #tensorflow.js #object-detection-api
Вопрос:
Я пытаюсь обнаружить объекты на изображении с помощью tensorflow js.
Я следовал руководству по обнаружению объектов Tensorflow с помощью Tensorflow 2: создание пользовательской модели
Итак, в Google collab все работает нормально, и обнаружение объектов работает нормально.
Я получаю saved_model, который теперь я хотел бы использовать в браузере.
Поэтому я конвертирую модель с помощью
tensorflowjs_converter --input_format=tf_saved_model --output_format=tfjs_graph_model --signature_name=serving_default --saved_model_tags=serve /content/inference_graph/saved_model /mobilenet/web_model
а затем я загружаю то же самое.
Сейчас я пытаюсь использовать это в браузере, используя следующий html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"> </script>
<style>
.container {
display: flex;
flex-wrap: wrap;
}
</style>
</head>
<body>
<div class="container">
<div>
<img id="test1" src="test/IMG_20181228_102636.jpg" width="300" height="300" />
<div id="test1_pred">WORKING</div>
</div>
</div>
<script>
async function predict() {
const model = await tf.loadGraphModel('http://localhost:8000/mobilenet/web_model/model.json');
const img = document.getElementById('test1');
const tfImg = tf.browser.fromPixels(img);
const smalImg = tf.image.resizeBilinear(tfImg, [300, 300]);
const resized = tf.cast(smalImg, 'int32');
const t4d = tf.tensor4d(Array.from(smalImg.dataSync()),[1,300,300,3]);
let predictions = await model.executeAsync(tf.cast(t4d, "int32"));
console.log(predictions);
}
setTimeout(function() {
predict();
}, 1000);
</script>
</body>
</html>
Ошибка, которую я получаю на консоли
tfjs:17 Uncaught (in promise) Error: Error in matMul: inputs must have the same rank of at least 2, got ranks 5 and 2.
at xv (tfjs:17)
at matMul_ (tfjs:17)
at matMul__op (tfjs:17)
at tfjs:17
at tfjs:17
at tfjs:17
at t.e.scopedRun (tfjs:17)
at t.e.tidy (tfjs:17)
at $b (tfjs:17)
at tfjs:17
Я не понимаю, в чем здесь ошибка. Похоже, что это связано с рангами в матрицах, но не уверен, что вызывает несоответствие.
Как мне изменить размер моих изображений, чтобы это было приемлемо для модели?
Я также публикую свою модель в gist здесь model.json
Любая помощь будет оценена
Комментарии:
1. Почему вы разыгрываете его, а затем преобразуете в тензор 4D? Какова размерность
const smalImg
и размерность входного слоя модели?2. Не могли бы вы добавить резюме вашей модели к вопросу?