Привет, чемпионы!
AI решение, про которое я расскажу в этой статье, после запуска в телеграм органически привлекло 70 000 новых пользователей за месяц, а всего было произведено 400 000 генераций. Погнали!
Предыстория. В один момент Я поймал себя на мысли, что у нескольких моих коллег есть навязчивая идея сделать стартап в сфере Fashion tech. Говорят, у каждого в жизни бывает, что встаешь утром, собираешься на работу и не понимаешь, что надеть кроме домашней пижамы на первый рабочий созвон. Время сокращается, а шанс собрать классный лук уменьшается. Что ж, давайте решать эту проблему и реализовать раздевание переодевание!
![Пример модели - "раздеватора", которую мы, в том числе, соберем в этой статье. Пример модели, которую мы соберем в этой статье.](https://habrastorage.org/getpro/habr/upload_files/8c1/6ce/47c/8c16ce47c6a2b4c95c4d312693a67746.jpeg)
Формализуем задачу:
На вход: подаем утреннее фото и текстовое описание, с каким стилем мы сегодня выйдем в люди
На выходе: получаем готовый образ (или несколько) с качественной генерацией (чтобы не было странных фоток)
Готовые AI решения на рынке
? Fotor AI — неплохой выбор. Вы можете легко изменить цвет, узор и стиль одежды, не будучи экспертом по редактированию или гуру Photoshop.
? PicsArt AI — одно из лучших приложений для смены одежды с ИИ на рынке. Picsart может создавать реалистичные результаты. Он идеально интегрирует измененные элементы в свою среду.
? LightX AI replace — еще одна отличная альтернатива с широким набором функций.
? Runway — инструмент для простой смены одежды с помощью ИИ, хотя качество чуть хуже аналогов.
? Phot.ai — менее мощный инструмент, в целом функционал 3 из 5 .
Есть еще StyleDN, Get Outfit и многие другие.
Допустим, вы не хотите пользоваться готовыми платными решениями, а хотите свою модель, окей!
Делаем все сами. Собираем первую версию.
![Великие мысли великих людей Великие мысли великих людей](https://habrastorage.org/getpro/habr/upload_files/a52/c02/583/a52c025832ffbf854dfa8343ff54c5eb.png)
Какие можно придумать варианты решений?
Берем Stable Diffusion, подаем свое фото и пишем: "переодень меня в фиолетовый худи". Такое решение не очень хорошее, т.к у модели могут возникнуть галлюцинации, и результат нам не понравится. Так что сразу познакомимся с техникой - inpainting!
Inpainting модели вида text-to-image принимают на вход:
изображение,
маску
,промпт
. Особенность таких диффузионных моделей в том, что они изменяют не все изображение, а только объекты внутри маски согласно промпту. Для нас это идеальное решение, так как нам не надо перекрашивать шкаф на фоне в деловой стиль и у модели будет меньше шансов ошибиться в генерации. Для примера возьмем SD Inpainting
То есть на вход мы подаем исходное изображение + маска + текстовое описание:
![Текстовое описание тут: white tiger in sitting position Текстовое описание тут: white tiger in sitting position](https://habrastorage.org/getpro/habr/upload_files/201/973/46a/20197346a203d246c0c588c6cb929b18.png)
Немного поиграемся и получим кучу лавочек с разными персонажами.
![Промпт: "a mecha robot sitting on a bench" Красивые сидящие роботы](https://habrastorage.org/getpro/habr/upload_files/2b7/4a7/945/2b74a794530016ce7f0a21523a10874d.png)
А что если вместо лавочки будете вы, а вместо собаки одежда?! Давайте тогда применим этот подход и для наших задач. Переоденем меня в новый худи и не только. Вот, что у меня получилось:
![Вау, работает неплохо. Радуемся результату! Правда я пропустил элемент, как сделать маску. Сперва нарисовал примерную универсальную маску руками в редакторе, но сразу понял, что при смене картинки, надо рисовать заново. Поэтому пришлось научиться генерировать маску автоматически. Для этого я взял модель автоматической сегментации. Результатом этой модели являются полигоны элементов. Нам интересные те, что отвечают за верхную и нужную часть тела (body down и body above). Либо, если хочется попроще, то можно взять модель для маскирования одежды. Это я попробовал на себе 4 разных стиля) Вау, работает неплохо. Радуемся результату! Правда я пропустил элемент, как сделать маску. Сперва нарисовал примерную универсальную маску руками в редакторе, но сразу понял, что при смене картинки, надо рисовать заново. Поэтому пришлось научиться генерировать маску автоматически. Для этого я взял модель автоматической сегментации. Результатом этой модели являются полигоны элементов. Нам интересные те, что отвечают за верхную и нужную часть тела (body down и body above). Либо, если хочется попроще, то можно взять модель для маскирования одежды. Это я попробовал на себе 4 разных стиля)](https://habrastorage.org/getpro/habr/upload_files/a45/198/113/a451981138ec62fd067f7336072e1d99.png)
Вау, работает неплохо! Радуемся результату! Правда я пропустил элемент, как сделать маску. Сперва нарисовал примерную универсальную маску руками в редакторе, но тогда при смене картинки надо рисовать заново. Поэтому пришлось научиться генерировать маску автоматически. Для этого я взял модель автоматической сегментации. Результатом этой модели являются полигоны элементов. Нам интересны те, что отвечают за верхнюю и нижнюю части тела (body down и body above). Либо, если хочется попроще, то можно взять модель для маскирования одежды.
Идем дальше и включаем фантазию!
Переодевать попробовали. Пробуем теперь раздевать! Ниже примеры, которые сгенерировал с модельными фотографами из поисковика. Работает тоже отлично!
![Промпт для генерации в границах маски: black lace or leather lingerie for dancing in a nightclub Промпт для генерации в границах маски: black lace or leather lingerie for dancing in a nightclub](https://habrastorage.org/getpro/habr/upload_files/f5e/5ff/7dd/f5e5ff7dd0bc6748430bcf2dae518447.png)
Кажется, что качество приятное. Я поместил свой пайплайн из приведенных выше моделей в телеграм бот. Можете попробовать переодеть там своих коллег тоже!
Заключение
Мы рассмотрели новую технологию Inpainting и применили ее для конкретной задачи. Такой же подход применяется и в новых AI редакторах фото: убрать объект с фото, дорисовать область(Out-paintning) и другое. Код пайплана на python выложил на GitHub. Про другие подходы рассказал в своем тг-канале, где делюсь новостями из мира Data Science и личными кейсами работ. Присоединяйтесь! Будем делать больше крутых AI проектов!
А так же кидайте в комментарии фотографии для генерации. Буду переодевать их в худи!
cosheimil
А надо ли в маску включать руки человека? Stable diffusion может сделать из меня шестипалого стилягу
И надо будет посоветовать жене, а то по утрам много времени уходит на это. Спасибо за статью!
Aleron75 Автор
Если маской руки закрыть, то будет лучше, да. Для примера взял маскер попроще