Добро пожаловать в серию статей о создании приложения для поиска товаров по классификации изображений. Мы хотим доказать, что если у нас есть изображение продукта, мы можем решить, что это такое. Мы можем найти самую низкую цену. Мы даже можем использовать эту технологию в мобильных устройствах. Эти серии будут включать обучение модели TFLite для нескольких типов продуктов, создание веб-сервиса для поиска цен на продукты на рынке и мобильного клиента. В каждой части будет просто продемонстрировать, как делать без каких-либо знаний. Каждая часть будет содержать базовое объяснение каждого состояния. Не стесняйтесь комментировать все, что непонятно, и я с радостью отредактирую.

Ожидания

Изучение основ Tensorflow и обучение вашей модели с вашими изображениями. Также мы собираемся использовать эту модель для проверки точности прогнозов. Затем мы собираемся создать веб-службу, которая будет отвечать на наш запрос на основе названия продукта. Если мы отправим название продукта, эта услуга вернет самых дешевых продавцов в Интернете. Последним шагом будет создание нашего клиента, чтобы показать, как мы объединяем эти функции в удобном для пользователя приложении.

Часть I

Быстрое знакомство с TensorFlow

Это один из самых популярных инструментов глубокого обучения с открытым исходным кодом. Прежде всего, вы должны знать, что такое модель машинного обучения.

Модель в машинном обучении означает функцию с обучаемыми параметрами, которая сопоставляет входные данные с желаемыми выходными данными. Для получения дополнительной информации посетите страницу моделей TensorFlow.

Этот инструмент обычно используется для классификации, восприятия и прогнозирования. Также вы можете обучить свою модель на Google Colab с помощью аппаратных возможностей Google. Мы собираемся использовать эти функции для обучения нашей модели классификации изображений.

Сбор образцов входных данных

В нашем примере мы собираемся обучить нашу модель выбирать правильную модель обуви на заданном входном изображении. Я собираюсь использовать расширение Chrome для загрузки образцов изображений из поиска Google. Я буду использовать расширение Загрузчик изображений для загрузки изображений из изображений Google. Примеров много. Вы можете использовать любой из них. Следующим шагом будет просто ввести название продукта и загрузить изображения. Для наших тестов мы загрузим 150 изображений для каждого продукта. Вы можете скачать уже подготовленные папки с изображениями из моего Github.

Модель обучения

В этой статье вы собираетесь обучить модель классификации изображений для нашего проекта.



Результат этой части

Мы собираемся классифицировать название модели любой обуви по ее изображению. В конце концов, мы собираемся использовать название обуви для поиска в Интернете и перечислять похожие модели с ценами. Поэтому продолжайте следить за следующими частями!

ЧАСТЬ II

Поиск на рынке

В этой части мы собираемся создать веб-API Spring Boot для поиска цен на продукты в Интернете по названию продукта. Если вы ничего не знаете о веб-службах или Spring Boot, вы можете просто запустить эту службу на своем компьютере с некоторыми базовыми изменениями.

Мы собираемся использовать cimri.com для поиска цен на наши продукты. Этот сайт работает как поставщик цен для популярных онлайн-продавцов. В нашем сервисе мы будем получать запросы только на этот веб-сайт. Затем мы проанализируем HTML-ответы.

Требования

  1. Java - 1.8.x
  2. Maven - 3.x.x
  3. MongoDB - 4.x.x

Изучить Rest API

В этом проекте много контроллеров, но все они еще не доработаны. Для нашего проекта мы можем просто проверить, как искать товар с помощью этой услуги.

GET 
------ "/product" -> returns all products
------ "/query/{product_name}" -> Search a product and save it.

Пример с результатами:

Запрос продукта по его названию
GET → http: // localhost: 8080 / product / query / md-runner

Список запрошенных продуктов целиком
GET → http: // localhost: 8080 / product /

Исходный код

В настоящее время у меня не было времени на создание статьи на Medium. вы можете найти исходный код в этом репозитории Github. Кроме того, он не полностью завершен, но работает должным образом для основных запросов этого проекта.

ЧАСТЬ III.

Создание мобильного клиента

Заключительная часть этой серии посвящена созданию мобильного клиента с React-Native для определения нашей модели обуви и поиска цен с помощью нашего веб-сервиса. В этой части вам не нужно ничего знать о react-native, чтобы протестировать это приложение. Просто скачайте папку проекта из моего репозитория Github. Затем перейдите в каталог проекта и запустите npm i, чтобы завершить установку в консоли Windows или терминале. Последняя часть будет запускать проект. На той же консоли мы собираемся запустить react-native run-android, чтобы протестировать ее на эмуляторе. Вскоре я планирую создать и для этой части статью среднего размера.

Требования

  1. NodeJS
  2. Диспетчер пакетов узлов
  3. npm i react-native-tensorflow-lite --save

Примечание

Прежде чем запускать свой собственный клиент, вы должны изменить адрес остальной службы в коде. Мы не можем подключить веб-службу с доменным именем localhost в проекте, поддерживающем реакцию. Установите его с вашим локальным IP.

Пример: «http://xxx.xxx.xxx.xxx:8080/product/query/»

Кроме того, пока нельзя использовать квантованную модель меньшего размера из-за ограничений в react-native-tensorflow-lite, а проект в настоящее время - ТОЛЬКО для Android с стремлением к поддержке iOS.

Окончательный вид продукта

Это окончательный вид нашего продукта. В главном меню есть три примера изображений, которые не используются в тренировках для проверки прогноза.
Примечание: последнее изображение в главном меню - это моя оригинальная фотография обуви :)

Полезные ссылки

Здесь вы увидите исходные коды всех частей.

  • Создание модели классификации изображений объясняется в этом репозитории с помощью Jupyter Notebook.
  • Поиск цены продукта в Интернете с помощью Spring Boot находится в этом репозитории.
  • Исходный код мобильного проекта находится в этом репозитории Github.