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

Введение

Генеративно-состязательные сети — это тип архитектуры глубокой нейронной сети, которая использует неконтролируемое машинное обучение для генерации данных. Они были представлены в 2014 году в статье Яна Гудфеллоу, Йошуа Бенжио и Аарона Курвилля, которую можно найти по следующей ссылке: https://arxiv.org/pdf/1406.2661. GAN имеют множество приложений, включая создание изображений и разработку лекарств.

Этот блог познакомит вас с основными компонентами GAN. Он познакомит вас с тем, как работает каждый компонент, а также с важными концепциями и технологиями, лежащими в основе GAN. Это также даст вам краткий обзор преимуществ и недостатков использования GAN и представление о некоторых реальных приложениях. После понимания архитектуры GAN мы увидим, как GAN применяются для решения проблемы старения.

Что такое ГАН?

GAN — это архитектура глубокой нейронной сети, состоящая из двух сетей: сети генератора и сети дискриминатора. Через несколько циклов генерации и различения обе сети обучают друг друга, одновременно пытаясь перехитрить друг друга.

Их цель — сгенерировать точки данных, которые волшебным образомподобны некоторым точкам данных в обучающем наборе.

В настоящее время люди используют GAN для создания различных функций. Он может генерировать реалистичные изображения, 3D-модели, видеоролики и многое другое.

Во-первых, давайте посмотрим на общую модель GAN.

Что такое генераторная сеть?

Сеть генератора использует существующие данные для генерации новых данных. Например, он может использовать существующие изображения для создания новых изображений. Основная цель генератора — генерировать данные (такие как изображения, видео, аудио или текст) из случайно сгенерированного вектора чисел, называемого скрытым пространством. При создании сети генератора нам нужно указать цель сети. Это может быть генерация изображений, генерация текста, генерация аудио, генерация видео и так далее.

Что такое сеть дискриминатора?

Сеть дискриминатора пытается провести различие между реальными данными и данными, сгенерированными сетью генератора. Сеть дискриминатора пытается поместить входящие данные в предопределенные категории. Он может выполнять многоклассовую классификацию или бинарную классификацию. Как правило, в GAN выполняется бинарная классификация.

Обучение через состязательную игру в GAN

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

  • Первая сеть, генератор, никогда не видела настоящего произведения искусства, но пытается создать произведение искусства, которое выглядит как настоящее.

  • Вторая сеть, дискриминатор, пытается определить, настоящее произведение искусства или подделка.

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

Дискриминатор пытается перехитрить генератор, продолжая уточнять собственные критерии определения подделки.

Они направляют друг друга, предоставляя отзывы об успешных изменениях, которые они вносят в свой собственный процесс на каждой итерации.

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

Как внедрить GAN для решения проблемы старения

Это инструкция о том, как реализовать Face-Aging с помощью GAN. Внедрить GAN немного сложно.

Все коды выполняются в TensorFlow 1.12 и CuDA 9.0. Мы рекомендуем вам работать в среде Python.

Установите Cuda 9.0 (это может занять несколько минут)

$wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb
$dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb
$apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
$apt-get update
$apt-get install cuda=9.0.176-1

Чтобы установить TensorFlow, выполните в терминале команду ниже:

pip install --upgrade tensorflow-gpu==1.12.2

Клонировать этот репозиторий:

git clone https://github.com/pbaylies/stylegan-encoder\
cd stylegan-encoder

Настройка структуры папок для наших изображений:

rm -rf aligned_images raw_images
mkdir aligned_images raw_images

Подготовка изображений для обучения

Поместите изображения, которые вы хотите изменить, в папку raw_images, структура данных будет такой:

├── ./raw_images
│   ├── [your images shoule be here]
│   ├── [your images should be here]

Автоматическое выравнивание лиц

Запустите скрипт:

python align_images.py raw_images/ aligned_images/ --output_size=1024

Этот скрипт будет:

  1. Ищите лица на изображениях
  2. Вырезать лица из изображений
  3. Выровняйте лица
  4. Измените масштаб полученных изображений и сохраните их в папке «aligned_images».

Кодирование лиц в скрытое пространство StyleGAN

$gdown https://drive.google.com/uc?id=1aT59NFy9-bNyXjDuZOTMl0qX0jmZc6Zb
$mkdir data
$mv finetuned_resnet.h5 data
$rm -rf generated_images latent_representations

Обучение скрытому кодированию

$python encode_images.py --optimizer=adam --lr=0.002 --decay_rate=0.95 --decay_steps=6 --use_l1_penalty=0.3 --face_mask=True --iterations=500 --early_stopping=False --early_stopping_threshold=0.05 --average_best_loss=0.5 --use_lpips_loss=0 --use_discriminator_loss=0 --output_video=True aligned_images/ generated_images/ latent_representations/

Получите доступ к этому https://drive.google.com/drive/u/1/folders/1exoCSLE-CRmfr9yqW3Yv4M9YI7VAw1LZ и загрузите эти предварительно обученные файлы:

Поместите эти файлы в одну папку.

Сохраните outout_vectors.npyв latent_representations с помощью скрипта.

$python save_latent.py

Отредактируйте файл save_latent.py, чтобы определить параметр out_file для получения адресата латентного файла.

Реализовать прогресс старения лица

В корневой папке выполнить:

$git clone https://github.com/tr1pzz/InterFaceGAN.git
$cd InterFaceGAN/
$gdown https://drive.google.com/uc?id=1MEGjdvVpUsu1jB4zrXZN7Y4kBBOzizDQ
$mv karras2019stylegan-ffhq-1024x1024.pkl InterFaceGAN/models/pretrain/karras2019stylegan-ffhq-1024x1024.pkl

Тестирование

Загрузите output_vector.npy в final_w_vectors.

Запустите эту команду, чтобы использовать этот final_w_vectors для создания изображений.

python test_age.py

Результаты следующие:

Читайте оригинальную и последнюю статью по адресу:

https://www.neurond.com/blogs/gans-for-face-aging-problems-what-does-your-face-look-like-in-the-next-few-years

NeurondAI — это трансформационный бизнес. Свяжитесь с нами по адресу:

Веб-сайт: https://www.neurond.com/