Skip to content

ekprog/gannetwork

Repository files navigation

StyleGAN2 Tensorflow

Teaser image

Аннотация: Архитектура GAN на основе стилей (StyleGAN) дает самые современные результаты в безусловном генеративном моделировании изображений. Мы раскрываем и анализируем некоторые из её характерных артефактов и предлагаем изменения как в архитектуре модели, так и в методах обучения для их устранения. В частности, мы модернизируем нормализацию генератора, пересматриваем прогрессивный рост и упорядочиваем генератор, чтобы обеспечить хорошее согласование при отображении скрытых векторов в изображения. Помимо улучшения качества изображения, этот регуляризатор длины пути дает дополнительное преимущество, заключающееся в том, что генератор становится значительно легче инвертировать. Это позволяет надежно определить, создается ли изображение конкретной сетью. Кроме того, мы визуализируем, насколько хорошо генератор использует свое выходное разрешение, и определяем проблему с производительностью, что мотивирует нас обучать более крупные модели для дополнительного улучшения качества. В целом, наша улучшенная модель переопределяет современный уровень безусловного моделирования изображений, как с точки зрения существующих показателей качества распространения, так и с точки зрения воспринимаемого качества изображения.

Требования

  • Операционные системы: Linux или Windows.
  • 64-bit Python 3.6.
  • TensorFlow 1.14.
  • NVIDIA GPU, NVIDIA драйвера, CUDA 10.0 и cuDNN 7.5.

Использование предварительно обученных сетей

Предварительно обученные сети хранятся в виде файлов * .pkl на StyleGAN2 Google Drive. Ниже вы можете ссылаться на них напрямую, используя синтаксис gdrive: networks / <filename> .pkl, или загружать их вручную и ссылаться по имени файла.

python run_generator.py generate-images --network=gdrive:networks/stylegan2-ffhq-config-f.pkl \
  --seeds=6600-6625 --truncation-psi=0.5

python run_generator.py generate-images --network=gdrive:networks/stylegan2-ffhq-config-f.pkl \
  --seeds=66,230,389,1518 --truncation-psi=1.0

python run_generator.py generate-images --network=gdrive:networks/stylegan2-car-config-f.pkl \
  --seeds=6000-6025 --truncation-psi=0.5

python run_generator.py style-mixing-example --network=gdrive:networks/stylegan2-ffhq-config-f.pkl \
  --row-seeds=85,100,75,458,1500 --col-seeds=55,821,1789,293 --truncation-psi=1.0

Результаты помещаются в results/<RUNNING_ID>/*.png. Вы можете изменить местоположение с помощью --result-dir. Например, --result-dir=~/my-stylegan2-results.

Подготовка датасетов

Наборы данных хранятся как TFRecords с несколькими разрешениями, аналогично исходному StyleGAN. Каждый набор данных состоит из нескольких файлов *.tfrecords, хранящихся в общем каталоге, например, ~/datasets/ffhq/ffhq-r-*.tfrecords. В следующих разделах наборы данных указываются с использованием комбинации аргументов --dataset и --data-dir, например, --dataset=ffhq --data-dir=~/datasets.

FFHQ. Чтобы загрузить Flickr-Faces-HQ набор данных как TFRecords с несколькими разрешениями, запустите:

pushd ~
git clone https://github.com/NVlabs/ffhq-dataset.git
cd ffhq-dataset
python download_ffhq.py --tfrecords
popd
python dataset_tool.py display ~/ffhq-dataset/tfrecords/ffhq

LSUN. Загрузите нужные категории LSUN в формате LMDB со [страницы проекта LSUN] (https://www.yf.io/p/lsun). Чтобы преобразовать данные в TFRecords с несколькими разрешениями, запустите:

python dataset_tool.py create_lsun_wide ~/datasets/car ~/lsun/car_lmdb --width=512 --height=384
python dataset_tool.py create_lsun ~/datasets/cat ~/lsun/cat_lmdb --resolution=256
python dataset_tool.py create_lsun ~/datasets/church ~/lsun/church_outdoor_train_lmdb --resolution=256
python dataset_tool.py create_lsun ~/datasets/horse ~/lsun/horse_lmdb --resolution=256

Custom. Создавайте собственные наборы данных, помещая все обучающие изображения в один каталог. Изображения должны иметь форму квадрата и иметь одинаковые разрешения. Чтобы преобразовать изображения в TFRecords с несколькими разрешениями, запустите:

python dataset_tool.py create_from_images ~/datasets/my-custom-dataset ~/my-custom-images
python dataset_tool.py display ~/datasets/my-custom-dataset

Обучение сети

Чтобы воспроизвести обучающие прогоны для конфигурации F в таблицах 1 и 3, запустите:

python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
  --dataset=ffhq --mirror-augment=true
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
  --dataset=car --total-kimg=57000
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
  --dataset=cat --total-kimg=88000
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
  --dataset=church --total-kimg 88000 --gamma=100
python run_training.py --num-gpus=8 --data-dir=~/datasets --config=config-f \
  --dataset=horse --total-kimg 100000 --gamma=100

Для других конфигураций см. python run_training.py --help.

Конфигурация Разрешение Тысяч img 1 GPU 2 GPUs 4 GPUs 8 GPUs GPU mem
config-f 1024×1024 25000 69d 23h 36d 4h 18d 14h 9d 18h 13.3 GB
config-f 1024×1024 10000 27d 23h 14d 11h 7d 10h 3d 22h 13.3 GB
config-e 1024×1024 25000 35d 11h 18d 15h 9d 15h 5d 6h 8.6 GB
config-e 1024×1024 10000 14d 4h 7d 11h 3d 20h 2d 3h 8.6 GB
config-f 256×256 25000 32d 13h 16d 23h 8d 21h 4d 18h 6.4 GB
config-f 256×256 10000 13d 0h 6d 19h 3d 13h 1d 22h 6.4 GB

Кривые обучения для FFHQ config F (StyleGAN2) по сравнению с исходным StyleGAN с использованием 8 графических процессоров:

Training curves

Оценочные показатели

Чтобы воспроизвести числа для config F в таблицах 1 и 3, запустите:

python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-ffhq-config-f.pkl \
  --metrics=fid50k,ppl_wend --dataset=ffhq --mirror-augment=true
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-car-config-f.pkl \
  --metrics=fid50k,ppl2_wend --dataset=car
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-cat-config-f.pkl \
  --metrics=fid50k,ppl2_wend --dataset=cat
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-church-config-f.pkl \
  --metrics=fid50k,ppl2_wend --dataset=church
python run_metrics.py --data-dir=~/datasets --network=gdrive:networks/stylegan2-horse-config-f.pkl \
  --metrics=fid50k,ppl2_wend --dataset=horse

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

Метрика FFHQ config F 1 GPU 2 GPUs 4 GPUs Описание
fid50k 2.84 ± 0.03 22 min 14 min 10 min Fréchet Inception Distance
is50k 5.13 ± 0.02 23 min 14 min 8 min Inception Score
ppl_zfull 348.0 ± 3.8 41 min 22 min 14 min Perceptual Path Length in Z, full paths
ppl_wfull 126.9 ± 0.2 42 min 22 min 13 min Perceptual Path Length in W, full paths
ppl_zend 348.6 ± 3.0 41 min 22 min 14 min Perceptual Path Length in Z, path endpoints
ppl_wend 129.4 ± 0.8 40 min 23 min 13 min Perceptual Path Length in W, path endpoints
ppl2_wend 145.0 ± 0.5 41 min 23 min 14 min Perceptual Path Length without center crop
ls 154.2 / 4.27 10 hrs 6 hrs 4 hrs Linear Separability
pr50k3 0.689 / 0.492 26 min 17 min 12 min Precision and Recall

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published