Привет, чемпионы!

AI решение, про которое я расскажу в этой статье, после запуска в телеграм органически привлекло 70 000 новых пользователей за месяц, а всего было произведено 400 000 генераций. Погнали!

Предыстория. В один момент Я поймал себя на мысли, что у нескольких моих коллег есть навязчивая идея сделать стартап в сфере Fashion tech. Говорят, у каждого в жизни бывает, что встаешь утром, собираешься на работу и не понимаешь, что надеть кроме домашней пижамы на первый рабочий созвон. Время сокращается, а шанс собрать классный лук уменьшается. Что ж, давайте решать эту проблему и реализовать раздевание переодевание!

Пример модели, которую мы соберем в этой статье.
Пример модели - "раздеватора", которую мы, в том числе, соберем в этой статье.

Формализуем задачу:

  • На вход: подаем утреннее фото и текстовое описание, с каким стилем мы сегодня выйдем в люди

  • На выходе: получаем готовый образ (или несколько) с качественной генерацией (чтобы не было странных фоток)

Готовые AI решения на рынке

  • ? Fotor AI —  неплохой выбор. Вы можете легко изменить цвет, узор и стиль одежды, не будучи экспертом по редактированию или гуру Photoshop.

  • ? PicsArt AI — одно из лучших приложений для смены одежды с ИИ на рынке. Picsart может создавать реалистичные результаты. Он идеально интегрирует измененные элементы в свою среду.

  • ? LightX AI replace — еще одна отличная альтернатива с широким набором функций.

  • ? Runway — инструмент для простой смены одежды с помощью ИИ, хотя качество чуть хуже аналогов.

  • ? Phot.ai — менее мощный инструмент, в целом функционал 3 из 5 .

  • Есть еще StyleDN, Get Outfit и многие другие.

Допустим, вы не хотите пользоваться готовыми платными решениями, а хотите свою модель, окей!

Делаем все сами. Собираем первую версию.

Великие мысли великих людей
Великие мысли великих людей

Какие можно придумать варианты решений?

  • Берем Stable Diffusion, подаем свое фото и пишем: "переодень меня в фиолетовый худи". Такое решение не очень хорошее, т.к у модели могут возникнуть галлюцинации, и результат нам не понравится. Так что сразу познакомимся с техникой - inpainting!

  • Inpainting модели вида text-to-image принимают на вход: изображение, маску, промпт. Особенность таких диффузионных моделей в том, что они изменяют не все изображение, а только объекты внутри маски согласно промпту. Для нас это идеальное решение, так как нам не надо перекрашивать шкаф на фоне в деловой стиль и у модели будет меньше шансов ошибиться в генерации. Для примера возьмем SD Inpainting

То есть на вход мы подаем исходное изображение + маска + текстовое описание:

Текстовое описание тут: white tiger in sitting position
Текстовое описание тут: white tiger in sitting position

Немного поиграемся и получим кучу лавочек с разными персонажами.

Красивые сидящие роботы
Промпт: "a mecha robot sitting on a bench"

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

Вау, работает неплохо. Радуемся результату! Правда я пропустил элемент, как сделать маску. Сперва нарисовал примерную универсальную маску руками в редакторе, но сразу понял, что при смене картинки, надо рисовать заново.  Поэтому пришлось научиться генерировать маску автоматически. Для этого я взял модель автоматической сегментации.  Результатом этой модели являются полигоны элементов. Нам интересные те, что отвечают за верхную и нужную часть тела (body down и body above). Либо, если хочется попроще, то можно взять модель для маскирования одежды.  Это я попробовал на себе 4 разных стиля)
Это я попробовал на себе 4 разных стиля)

Вау, работает неплохо! Радуемся результату! Правда я пропустил элемент, как сделать маску. Сперва нарисовал примерную универсальную маску руками в редакторе, но тогда при смене картинки надо рисовать заново. Поэтому пришлось научиться генерировать маску автоматически. Для этого я взял модель автоматической сегментации. Результатом этой модели являются полигоны элементов. Нам интересны те, что отвечают за верхнюю и нижнюю части тела (body down и body above). Либо, если хочется попроще, то можно взять модель для маскирования одежды.

Идем дальше и включаем фантазию!

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

Промпт для генерации в границах маски: black lace or leather lingerie for dancing in a nightclub
Промпт для генерации в границах маски: black lace or leather lingerie for dancing in a nightclub

Кажется, что качество приятное. Я поместил свой пайплайн из приведенных выше моделей в телеграм бот. Можете попробовать переодеть там своих коллег тоже!

Заключение

Мы рассмотрели новую технологию Inpainting и применили ее для конкретной задачи. Такой же подход применяется и в новых AI редакторах фото: убрать объект с фото, дорисовать область(Out-paintning) и другое. Код пайплана на python выложил на GitHub. Про другие подходы рассказал в своем тг-канале, где делюсь новостями из мира Data Science и личными кейсами работ. Присоединяйтесь! Будем делать больше крутых AI проектов!

А так же кидайте в комментарии фотографии для генерации. Буду переодевать их в худи!

Комментарии (7)


  1. cosheimil
    20.08.2024 10:51

    А надо ли в маску включать руки человека? Stable diffusion может сделать из меня шестипалого стилягу

    И надо будет посоветовать жене, а то по утрам много времени уходит на это. Спасибо за статью!


    1. Aleron75 Автор
      20.08.2024 10:51

      Если маской руки закрыть, то будет лучше, да. Для примера взял маскер попроще


  1. Stanislav9801
    20.08.2024 10:51

    Переодень ее


    1. Aleron75 Автор
      20.08.2024 10:51
      +2

      Нормально?