Найти в Дзене
AI Hub - сообщество ИИ

Рассказываем про обучение нейросетей на примере виртуальной примерочной Virton

Всем привет! На связи команда Neurosell. В сегодняшней статье мы хотели бы поделиться опытом в обучении нейросетей на примере нашего продукта - виртуальной примерочной Virton. Расскажем о сложностях алгоритма, пользовательском опыте и возможностях обучения. Первым делом, давайте рассмотрим, какие цели мы ставили перед собой: Что мы используем для обучения и работы? Теперь, когда мы бегло разобрались с целями и технологиями, давайте разберемся что мы делаем для обучения алгоритмов, рассмотрим основные проблемы и текущие результаты. Первоначальное обучение алгоритмов проводилось по большой базе DeepFashion, предлагающая множество вариаций различных фешн-предметов. Также использовались другие источники для определения поз. Однако в использовании таких баз есть некоторый минус - они не предоставляют реальный пользовательский опыт и тренируют модели в идеальных условиях. Что же делать в таком случае? Запускать бета-версию алгоритмов! По итогу реальные пользователи начинают примерять одежду,
Оглавление

Всем привет! На связи команда Neurosell. В сегодняшней статье мы хотели бы поделиться опытом в обучении нейросетей на примере нашего продукта - виртуальной примерочной Virton. Расскажем о сложностях алгоритма, пользовательском опыте и возможностях обучения.

Первым делом, давайте рассмотрим, какие цели мы ставили перед собой:

  • Максимальное сохранение контекста для получения точного результата примерки в образе (к примеру пользователь хочет подобрать футболку к своим шортам по стилю);
  • Точность переноса изображения товара с сохранением поз, добавлением деталей сгибов ткани и пр;
  • Относительная экономичность алгоритмов;

Что мы используем для обучения и работы?

  • Генеративные и референсные модели на базе UNet;
  • PyTorch под капотом, трансформеры и дифузеры;
  • SCHP для определения и коррекции поз;
  • DensePose для пикселизации тел;
  • Сервера на базе NVidia Cuda;

Теперь, когда мы бегло разобрались с целями и технологиями, давайте разберемся что мы делаем для обучения алгоритмов, рассмотрим основные проблемы и текущие результаты.

Обучение алгоритмов, показатели в текущем формате

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

-2

Что же делать в таком случае? Запускать бета-версию алгоритмов!

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

Итак, чего мы добились за две недели обучения алгоритмов:

  • На запуске и в первую неделю работы - точность генераций была в районе 30%;
  • На второй неделе работы, некоторой коррекции UX и внутренних алгоритмов - точность выросла до 60%;

Таким образом, до-обучая алгоритмы на реальных пользователях мы доводим результаты до коммерческих значений и это только за 2 недели работы.

Что влияет на точность алгоритма?

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

-3

В нашем случае на точность влияет:

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

Чем больше таких показателей совмещаются вместе, тем ниже становится качество генерации. Что же делать в данном случае:

  • Первым делом проработать UX и объяснить пользователю понятным языком, при каких условиях у них может получится плохой результат;
  • До-обучать модели по сегментации в различных неидеальных для алгоритма позах;
  • Внедрять Multi-View Pose Transfer (для фотографий боком и других поворотах тела;
  • Внедрить определение пересечения частей тела, к примеру при помощи алгоритмов определения поз (есть хорошие примеры на Tensorflow) и предупреждать о проблемах пользователя;

Примеры генераций - от успехов до эпичных фейлов

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

-4
-5
-6
-7
-8

Итоги

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

И как всегда, будем рады обсуждениям и вашим вопросам!