он же Тестирование Tensorflow.js
Просматривая в Интернете некоторые технические материалы, я узнал о tensorflow.js, библиотеке машинного обучения на JavaScript. Глядя на него, я обнаружил, что его можно использовать для обнаружения объектов. Я читал о его настройке. Там я нашел два способа настройки Tensorflow.js в своем браузерном проекте:
- Использование тегов сценария.
- Установка из NPM и использование инструмента сборки, такого как Parcel.
Полное руководство приведено в Tensorflow.js, с которого я счел хорошим начать.
Мне было легко и удобно использовать теги сценария, и я просмотрел код для добавления библиотеки в проект.
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/[email protected]/dist/tf.min.js"></script>
Позже для обнаружения объектов я нашел предварительно обученную модель под названием MobileNet и скопировал несколько строк кода. Я узнал, что модель Tensorflow.js берет элементы изображения на основе браузера (например, элементы «img», «видео», «холст») и на выходе возвращает массив наиболее вероятных предсказанных элементов с их вероятностью того, что Предсказываемый объект такой же, как тот, что показан на изображении. Основная часть кода взята с MobileNet:
// Load the model. mobilenet.load().then(model => { // Classify the image. model.classify(img).then(predictions => { console.log('Predictions: '); console.log(predictions); }); });
Позже я попробовал этот код с изображением кота, и он дал мне правильный результат. В топе результата с вероятностью 0,9148746728897095 оказалась персидская кошка.
Тогда я подумал, а почему бы не попробовать это на видео с веб-камеры. Позже я попробовал, показав видео улитки. Из файла в 31,8 Кб и 1000 объектов его обходим и получаем результат. Мне посчастливилось обнаружить один из 1000 объектов, включенных в эту модель. (запись 113 от 0 до 999).
Я попробовал вводить записанное видео с камеры в реальном времени через getUserMedia. Сначала он не работал и выдавал ошибку: Запрошенный размер текстуры [0x0] недействителен. Но позже при поиске в Интернете я нашел решение, заключающееся в том, чтобы просто установить атрибуты высоты и ширины видеоэлемента. Я направил веб-камеру на видео, и оно было показано на моем экране. В короткие сроки это дало результат. К счастью, это сработало.
Я добавил кнопки для запуска и остановки веб-камеры вместе с местом для результата.
Исходный код находится здесь, на Github. Ключевой фрагмент кода небольшой и простой — Tensorflow и MobileNet очень помогли в завершении этого проекта:
Следует отметить, что я пробовал это в Chrome, а не в любом другом браузере с веб-камерой.
Спасибо за чтение! Надеюсь, вам понравилось.