
Всем привет! На связи команда Neurosell. В сегодняшней статье мы хотели бы поделиться опытом в обучении нейросетей на примере нашего продукта - виртуальной примерочной Virton. Расскажем о сложностях алгоритма, пользовательском опыте и возможностях обучения.
Первым делом, давайте рассмотрим, какие цели мы ставили перед собой:
- Максимальное сохранение контекста для получения точного результата примерки в образе (к примеру пользователь хочет подобрать футболку к своим шортам по стилю;
- Точность переноса изображения товара с сохранением поз, добавлением деталей сгибов ткани и пр;
- Относительная экономичность алгоритмов;
Что мы используем для обучения и работы?
- Генеративные и референсные модели на базе UNet;
- PyTorch под капотом, трансформеры и дифузеры;
- SCHP для определения и коррекции поз;
- DensePose для пикселизации тел;
- Сервера на базе NVidia Cuda;
Теперь, когда мы бегло разобрались с целями и технологиями, давайте разберемся что мы делаем для обучения алгоритмов, рассмотрим основные проблемы и текущие результаты.
Первоначальное обучение алгоритмов проводилось по большой базе DeepFashion, предлагающая множество вариаций различных фешн-предметов. Также использовались другие источники для определения поз. Однако в использовании таких баз есть некоторый минус - они не предоставляют реальный пользовательский опыт и тренируют модели в идеальных условиях.
Что же делать в таком случае? Запускать бета-версию алгоритмов!
По итогу реальные пользователи начинают примерять одежду, создавать новые генерации и до-обучать алгоритм. А в случае с пилотными продуктами на интернет-магазинах, мы можем делать алгоритм еще лучше, получая новые стили, разных пользователей со своим пониманием работы сервисов.
Итак, чего мы добились за две недели обучения алгоритмов:
- На запуске и в первую неделю работы - точность генераций была в районе 30%;
- На второй неделе работы, некоторой коррекции UX и внутренних алгоритмов - точность выросла до 60%;
Наша система сама подберет вам исполнителей на услуги, связанные с разработкой сайта или приложения, поисковой оптимизацией, контекстной рекламой, маркетингом, SMM и PR.
Заполнить заявку
12730 тендеров
проведено за восемь лет работы нашего сайта.
Таким образом, до-обучая алгоритмы на реальных пользователях мы доводим результаты до коммерческих значений и это только за 2 недели работы.
В идеальных условиях мы конечно же получаем отличные результаты, но в реальном мире так не работает. Мы получаем разных пользователей, которые зачастую делают не совсем подходящие фотографии для работы нейросети. И всё это нужно учитывать.
В нашем случае на точность влияет:
- Качество изначальных фотографий;
- Соблюдение цветовых правил (если на фото человек начинает сливаться с фоном, либо у него однотонная одежда, которую сложно сегментировать);
- Присутствие в кадре других людей;
- Использование фотографий не в полный рост;
- Позирование (скрещенные ноги, руки и т.д.);
Чем больше таких показателей совмещаются вместе, тем ниже становится качество генерации. Что же делать в данном случае:
- Первым делом проработать UX и объяснить пользователю понятным языком, при каких условиях у них может получится плохой результат;
- До-обучать модели по сегментации в различных неидеальных для алгоритма позах;
- Внедрять Multi-View Pose Transfer (для фотографий боком и других поворотах тела;
- Внедрить определение пересечения частей тела, к примеру при помощи алгоритмов определения поз (есть хорошие примеры на Tensorflow) и предупреждать о проблемах пользователя;
Ну и в качестве финального блока этой статьи - решили поделиться с вами результатами генераци, среди которых есть отличные, а есть весьма забавные и даже странные.
Что бы хотелось подвести в итоге: любые нейросети натренированные на идеальных данных и различных открытых базах, как правила не учитывают пользовательский фактор, что определенно влияет на результат. Поэтому стоит плотно заниматься до-обучением моделей на ваших реальных пользователях, обязательно работать с UX и искать новые варианты улучшения алгоритмов (к примеру, за счет внедрения новых дополнительных инструментов).
И как всегда, будем рады обсуждениям и вашим вопросам!