Кейсы

Определения товаров в видеоролике для стартапа

Задача

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

Например, по телевизору идет фильм «Мистер и миссис Смит». Пользователь открывает приложение и наводит камеру на экран. Система отображает название фильма и список товаров: одежду главных героев, аксессуары, марки автомобилей и многое другое, - все, что было загружено в базу данных правообладателем.

ЭТАПЫ РАЗРАБОТКИ

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

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

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

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

Работа с базой данных

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

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

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

– Андрей Татаринов, генеральный директор Epoch8.

КАК УСТРОЕНО РАСПОЗНАВАНИЕ ВИДЕО

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

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

АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ БАЗЫ ВИДЕО

Для добавления нового видео в базу необходимо обновление данных в Milvus. Этот процесс автоматизирует наш собственный сервис — Datapipe. Мы разработали его в Epoch8 для автоматизации подготовки данных и обучения ML-моделей.
Datapipe уже успешно применялся в двух проектах: для оптического распознавания символов на кэшбэк-платформе и для создания ML-модели в приложении Brickit, которое помогает собирать новые конструкции из старых деталей.
«Сервис отслеживает изменения в облачной базе данных. Если в базе появляется новое видео название и ссылка на файл, то сервис автоматически скачивает его, кадрирует, присваивает числовые векторы и загружает векторы в Milvus. После этого пользователь сможет найти это видео с помощью приложения.»

– Анна Закутняя, ML-инженер.

КАК СОЗДАЮТСЯ СПИСКИ ТОВАРОВ

Когда нужный сегмент видео найден в базе Milvus, мы извлекаем всю связанную с ним информацию — описание фильма и товары — из таблиц, размещенных в облачном сервисе. Этот сервис позволяет создавать таблицы, а затем искать в них информацию через API.
Получается такая схема:
  1. Приложение определяет сегмент фильма.
  2. Приложение предоставляет пользователю:
  • информацию о фильме;
  • список товаров, представленных в данном сегменте.
Списки товаров формируют и обновляют правообладатели, которые самостоятельно добавляют описания и фотографии.

Технологии

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

РЕЗУЛЬТАТЫ

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

Команда

  • Андрей Татаринов, основатель Epoch8.
  • Анна Закутняя, ML-инженер.
  • Александр Козлом, ML-тимлид.
Компьютерное зрение