Здравствуйте!
У меня есть: обученная нейронная сеть для классификации изображений на Py (h5) и веб-приложение на TypeScript. Приложение еще пока не задеплоено, но если это срочно необходимо для реализации задачи, то я сделаю это.
Что мне нужно: мне нужно подключить нейронную сеть к веб-приложению.
Как я предполагаю как это должно работать: пользователь заходит на сайт, загружает картинку, нейронка получает это изображение, классифицирует и отправляет результат классификации.
Как это сделать я, к сожалению, не знаю. Помогите пожалуйста!
TensorFlow Serving поднимает веб-сервис с gRPC и REST api. С моделью h5.
Сценарий примерно такой. Пишете как для обычного сайта приём картинки. Далее её надо привести к нужному размеру и считать попиксельные значения и сформировать JSON. Этот JSON отправить cURL'ом на адрес-порт TensorFlow Serving и получить ответ в JSON. Скорее всего, это вектор вероятностей - зависит от вашей модели.
Понять, какому классу относится наибольшая из вероятностей, вернуть ответ веб-клиенту.
Модель принимает на вход не файл картинки в jpg/gif/png – а массив чисел, причём определённой размерности. Например, ч\б (с одним каналом) картинку 28*28 для распознавания рукописных цифр. Или, к примеру, большое фото цветное (3 канала) 380*380 px.
Пользователи загружают картинки разных размеров и цветов. Принимающий скрипт должен их ресайзить до нужного и формировать многомерный массив чисел - значения яркости по каждому из каналов от 0 до 255 или от 0 до 1 – уж как там настроена модель.
Вы пишете, что модель у вас в формате h5. Вероятно, это модель Keras. Хотя может быть что угодно, формат универсальный. Хорошо бы уточнить, откуда дровишки модель.
tf Serving это как ещё один веб-сервер – Nginx, Apache – только на другом порту. К нему можно обращаться, присылать JSON запроса и получать JSON ответ.
В общем, начните с того, что уточните, что за модель, что ей нужно для запуска, в каком формате она ожидает input, и что отдаёт на выходе.
Модель Keras. Пишу код в Google Colab. Данные для обучения подгружаю с Google Drive. Не знаю что Вы подразумеваете под "что ей нужно для запуска". Изображения поступают в трех каналах размером 32*32. Отдает на выходе процент принадлежности к классу. OneHotKey (по-моему так называется) преобразует все в массив и потом выдается ответ.
Надеюсь, что правильно понял что мне нужно было сказать.
плохо знаком с тайпскриптом и нодой в целом, но подозреваю что как и пых, она имеет возможность запуска внешних скриптов оболочки. То есть алгоритм такой: загружаем файл, запускаем из командной строки питоновский скрипт с параметрами и путем до файла и ждем ответа от питона. Обрабатываем ответ в ноде и отдаем юзеру. Профит!