Разработка ML-модели для определения товаров на видео

Проектирование и обучение AI

Задача

Разработать Shazam для видео. Научить приложение определять название и выдавать список товаров из видео.
Превью проекта

Этапы разработки

1. Распознавание монитора

Первая задача — научить приложение определять, что перед ней монитор. Для этого мы собрали и разметили изображения, на которых видны включенные мониторы.

2. Превращение кадра в числовый вектор — эмбеддинг

Обучили эмбедер, который представляет информацию на кадре в виде числового вектора. Похожие кадры лежат близко друг к другу в векторном пространстве, а разные кадры — далеко.

3. Работа с базой

Чтобы найти тот самый фильм, который снимает пользователь, нам нужна база фильмов. Мы взяли 150 видео, разбили их на кадры и оцифровали каждый кадр с помощью эмбедера. Кадры-векторы загрузили в базу Milvus, которая позволяет быстро искать похожие векторы.

4. Создание списка товаров

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

Это уникальный проект с точки зрения машинного обучения. Здесь было важно сделать не только решение с высоким качеством распознавания, но и оптимизировать его для исполнения в реальном времени на мобильном устройстве. Вместе с командой Amiga мы портировали пайплайн распознавания на Dart и получили решение, которое отлично работает в реальном времени на широком спектре мобильных устройств и на iOS, и на Android.

Фотография

Андрей Татаринов

СEO AGIMA.AI

Как устроено распознавание видео

Приложение сравнивает кадры, снятые пользователем, с кадрами из базы Milvus. Базу мы заранее заполнили раскадровками 150 фильмов и присвоили каждому из них числовой вектор.


Числовые векторы-кадры из видео пользователя сопоставляются с векторами-кадрами из базы Milvus. Посредством голосования большинством определяются ближайшее похожее видео из базы, а также конкретный сегмент видео.

Превью проекта

Автоматическое обновление базы видео

Когда мы хотим добавить новое видео в базу, нам необходимо обновлять базу Milvus. Для автоматизации этого процесса мы использовали еще один сервис — Datapipe. Это собственная разработка AGIMA.AI, которую мы сделали для автоматизации подготовки данных и обучения ML-моделей и уже успешно использовали в двух проектах — оптическое распознавание символов для кэшбэк-платформы и модель машинного обучения для распознавания деталек лего в приложении Brickit (оно подсказывает, как собрать новые штуки из старых деталей).

Сервис отслеживает изменения в облачной базе данных. Если в базе появляется новое видео — название и ссылка на файл, то сервис автоматически скачивает его, кадрирует, присваивает числовые векторы и загружает векторы в Milvus. После этого пользователь сможет найти это видео с помощью приложения.

Фотография

Анна Закутняя

ML-Engineer AGIMA.AI

Как создаются списки товаров

После того, как нужный сегмент видео найден в базе Milvus, мы берем всю информацию об этом сегменте — описание фильма и товары — из таблиц, которые находятся в облачном сервисе. Этот сервис позволяет создавать таблицы, а затем искать в них информацию через API.


В итоге получается такая схема:

Превью проекта

Списки товаров создают и пополняют правообладатели — они сами прописывают описания и добавляют фотографии.

Технологии

  • Детектор — YOLOv5.
  • Эмбедер — MobileNet, обученный на картинах с использованием слоя ArcFace.
  • Таблицы c информацией по видео и товарам — Grist.
  • Точность распознавания видео — 96%.
  • ML-сервис Datapipe для обновления базы Milvus.
  • Фреймворк для мобильного приложения — Flutter.

Команда Amiga за короткие сроки сделала большую работу. Хочется отметить, что Amiga и AGIMA.AI в синергии заточены под быстрый запуск MVP-версий. Заказчик получил полностью работающее мобильное приложение, в планах развивать его и дальше.

Фотография

Дмитрий Тарасов

CEO Amiga

Результат

  • Построили ML-модель, которая умеет распознавать 150 фильмов и товары в кадре. Базу фильмов можно автоматически пополнять.
  • Видео пользователя кадрируется со скоростью 1 кадр в 200 мс в режиме realtime.
  • Фильм и товары распознаются за 2,4 секунды в режиме realtime.
  • Точность распознавания видео — 96%.

Над проектом работали

  • Анна Закутняя

    ML-Engineer

  • Андрей Татаринов

    CEO AGIMA.AI

  • Александр Козлов

    Machine Learning Developer AGIMA.AI

  • Дмитрий Тарасов

    CEO Amiga

Связаться с нами

Отправьте нам запрос, чтобы начать общение по вашему проекту.

Стать клиентом
+7 495 981-01-85 + Стать клиентом
Услуги Кейсы Контент-хаб