Всегда интересно создавать что-то интересное, используя модель глубокого обучения. Я наткнулся на реализацию StyleGAN2-ADA paper в PyTorch и подумал, что было бы интересно создать мини-чехол для iPhone13 с использованием генеративной модели.
Подготовка набора данных
Модель StyleGAN2-ADA может создавать реалистичные изображения только с небольшим количеством наборов данных. Однако из-за отсутствия общедоступного набора данных под названием Набор данных чехла для мини-телефона iphon13 у меня не было другого выбора, кроме как создать его самостоятельно.
У меня было два варианта подготовки этого набора данных.
- Просканируйте различные мини-чехлы для iPhone13 из Интернета.
- Синтетически создавать мини-чехлы для 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.