Всегда интересно создавать что-то интересное, используя модель глубокого обучения. Я наткнулся на реализацию StyleGAN2-ADA paper в PyTorch и подумал, что было бы интересно создать мини-чехол для iPhone13 с использованием генеративной модели.

Подготовка набора данных

Модель StyleGAN2-ADA может создавать реалистичные изображения только с небольшим количеством наборов данных. Однако из-за отсутствия общедоступного набора данных под названием Набор данных чехла для мини-телефона iphon13 у меня не было другого выбора, кроме как создать его самостоятельно.

У меня было два варианта подготовки этого набора данных.

  1. Просканируйте различные мини-чехлы для iPhone13 из Интернета.
  2. Синтетически создавать мини-чехлы для iPhone13

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

Чтобы создать синтетический чехол для телефона, мне сначала понадобился мини-шаблон iPhone13 и маска, закрывающая область корпуса.

Найти шаблон iPhone13 mini было легко. Мне просто нужно было погуглить «iPhone13 mini case» и выбрать один любимый. Изображение маски было получено с помощью Photoshop с несколькими мазками кисти. Пиксели в белых областях получают значение 1, а остальные черные пиксели получают значение 0. Теперь, когда у меня была область маски, мне было легко заполнить белую область случайным причудливым фоном.

Фоновые изображения были взяты с сайта Pexels. У них есть API изображений, который позволяет легко загружать изображения в их базу данных. Лично мне нравятся художественные изображения, поэтому я использовал такие поисковые запросы, как «абстракция», «дизайн», «узоры», чтобы собрать около 8000 фоновых изображений.

Используя простой скрипт Python с OpenCV, я смог создать различные синтетические мини-чехлы для iPhone13.

новое_изображение = шаблон_кейса* (1-маска) + художественное_изображение* (маска)

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

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

Модель

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

Кроме того, время обучения короткое. Глядя на таблицу ниже, изображение размером 256 x 256 с 2 графическими процессорами занимает около 3 дней и 14 часов для обучения модели.

Для этого проекта разрешение обучающих изображений было установлено на 256, а для обучения сети использовался 1 GPU с конфигурацией stylegan2.

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

python dataset_tool.py --source=phone_cases --dest=phone_cases_train_256.zip --width 256 --height 256

Обратите внимание, что папка phone_cases содержит 10 тыс. искусственных изображений мини-чехлов iPhone13. Приведенный выше код создает новый ZIP-файл с именем phone_cases_train_256.zip.

Код обучения прост.

python train.py --outdir=./training-runs --data=phone_cases_train_256.zip
--gpus=2 --cfg=stylegan2

Набор данных phone_cases_train_256.zip используется для обучения, а результаты хранятся в каталоге training-runs. Модель обучается с параметрами конфигурации stylegan2.

Полученные результаты

На начальном этапе оценка FID начинается с 400 (чем меньше, тем лучше), и результаты выглядят очень размыто.

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

По мере обучения показатель FID снижается до 114 и дает гораздо лучшие результаты.

Заключение

Как видно из итогового результата, модель StyleGAN2-ADA успешно генерирует изображения корпуса iPhone13 mini. Случаи, сгенерированные моделью, имеют различные стили. Многие образцы выглядят как картины маслом, но мы также можем видеть образцы с узорами и образцы с простым цветом и текстурой.

Я не смог взять это изображение и создать настоящий чехол для своего iPhone 13 mini. Разрешение изображения было слишком маленьким, и для реального производства требовалось только фоновое изображение, а не все изображение телефона. Может быть, в следующий раз я мог бы обучить более крупную модель просто для создания стиля фонового изображения и сделать настоящий чехол для iPhone.







https://www.pexels.com/