Studiogan - это библиотека Pytorch, предоставляющая реализации репрезентативных генеративных состязательных сетей (GANS) для условной/безусловной генерации изображений. Studiogan стремится предложить идентичную игровую площадку для современных Gans, чтобы исследователи машинного обучения могли легко сравнивать и проанализировать новую идею.
Более того , Studiogan предоставляет беспрецедентный шкалевый эталон для генеративных моделей. Трингум включает в себя результаты GANS (Biggan-Deep, Stylegan-XL), авторегрессивные модели (Maskgit, RQ-трансформатор) и диффузионные модели (LSGM ++, CLD-SGM, ADM-GU).
| Метод | Место проведения | Архитектура | GC | Ток | Потеря | Эма |
|---|---|---|---|---|---|---|
| DCGAN | arxiv'15 | Dcgan/Resnetgan 1 | N/a | N/a | Ваниль | ЛОЖЬ |
| Infogan | Nips'16 | Dcgan/Resnetgan 1 | N/a | N/a | Ваниль | ЛОЖЬ |
| Lsgan | ICCV17 | Dcgan/Resnetgan 1 | N/a | N/a | Наименьший SQAURE | ЛОЖЬ |
| Ган | arxiv'17 | Dcgan/Resnetgan 1 | N/a | N/a | Петля | ЛОЖЬ |
| Wgan-wc | ICLR'17 | Resnetgan | N/a | N/a | Вассерштейн | ЛОЖЬ |
| Wgan-gp | Nips'17 | Resnetgan | N/a | N/a | Вассерштейн | ЛОЖЬ |
| Wgan-dra | arxiv'17 | Resnetgan | N/a | N/a | Вассерштейн | ЛОЖЬ |
| Acgan-Mod 2 | - | Resnetgan | CBN | Атмосфера | Петля | ЛОЖЬ |
| Пдган | ICLR'18 | Resnetgan | CBN | ПД | Петля | ЛОЖЬ |
| Сон | ICLR'18 | Resnetgan | CBN | ПД | Петля | ЛОЖЬ |
| Саган | ICML'19 | Resnetgan | CBN | ПД | Петля | ЛОЖЬ |
| Такган | Neurips'19 | Бигган | CBN | Так | Петля | Истинный |
| Лгар | ICML'19 | Resnetgan | N/a | N/a | Ваниль | ЛОЖЬ |
| Безусловный Бигган | ICLR'19 | Бигган | N/a | N/a | Петля | Истинный |
| Бигган | ICLR'19 | Бигган | CBN | ПД | Петля | Истинный |
| Biggan-Deep-Comparegan | ICLR'19 | Biggan-Deep Comparegan | CBN | ПД | Петля | Истинный |
| Biggan-Deep-Studiogan | - | Biggan-Deep Studiogan | CBN | ПД | Петля | Истинный |
| Стильган2 | CVPR '20 | Стильган2 | кадан | Сфера | Логистика | Истинный |
| Прозрачный | ICLR'20 | Бигган | CBN | ПД | Петля | Истинный |
| Icrgan | Aaai'21 | Бигган | CBN | ПД | Петля | Истинный |
| Логан | arxiv'19 | Resnetgan | CBN | ПД | Петля | Истинный |
| Контраганский | Neurips'20 | Бигган | CBN | 2C | Петля | Истинный |
| М.Хган | Wacv'21 | Бигган | CBN | Мх. | Мх. | Истинный |
| Biggan + Diffaugment | Neurips'20 | Бигган | CBN | ПД | Петля | Истинный |
| Stylegan2 + Ada | Neurips'20 | Стильган2 | кадан | Сфера | Логистика | Истинный |
| Biggan + Lecam | CVPR'2021 | Бигган | CBN | ПД | Петля | Истинный |
| Reacgan | Neurips'21 | Бигган | CBN | D2D-CE | Петля | Истинный |
| Stylegan2 + apa | Neurips'21 | Стильган2 | кадан | Сфера | Логистика | Истинный |
| Stylegan3-T | Neurips'21 | Стильган3 | каюн | Сфера | Логистика | Истинный |
| Stylegan3-r | Neurips'21 | Стильган3 | каюн | Сфера | Логистика | Истинный |
| Адкган | ICML'22 | Бигган | CBN | Адвокат | Петля | Истинный |
GC/DC указывает на то, как мы вводим информацию о метке в генератор или дискриминатор.
EMA: обновление экспоненциального скользящего среднего для генератора. CBN: условная нормализация партии. Cadain: условная версия адаптивной нормализации экземпляра. AC: вспомогательный классификатор. ПД: Проекционный дискриминатор. TAC: двойной вспомогательный классификатор. SPD: Модифицированный PD для Stylegan. 2c: условная контрастная потеря. МХ: Многоцелевая потеря. ADC: вспомогательный дискриминационный классификатор. D2D-CE: передача данных к данным.
| Метод | Место проведения | Архитектура |
|---|---|---|
| Начало оценка (есть) | Neurips'16 | Началов3 |
| Фрехет -начальное расстояние (FID) | Neurips'17 | Началов3 |
| Улучшенная точность и отзыв | Neurips'19 | Началов3 |
| Оценка точности классификатора (CAS) | Neurips'19 | Началов3 |
| Плотность и покрытие | ICML'20 | Началов3 |
| Внутриклассный Фид | - | Началов3 |
| Swav Fid | ICLR'21 | Облегающий |
| Чистые метрики (IS, FID, PRDC) | CVPR'22 | Началов3 |
| Архитектурные метрики (IS, FID, PRDC) | arxiv'22 | Не ограничивается началом. |
| Метод | Место проведения | Целевая архитектура |
|---|---|---|
| Замороженный | Cvprw'20 | За исключением стиля .2 |
| Top-K Training | Neurips'2020 | - |
| DDLS | Neurips'2020 | - |
| Sefa | CVPR'2021 | Бигган |
Мы проверяем воспроизводимость GANS, реализованную в Studiogan, сравнивая IS и FID с оригинальными бумагами. Мы идентифицируем нашу платформу успешно воспроизводят большинство представительных GAN, за исключением PD-Gan, Acgan, Logan, Sagan и Biggan-Deep. FQ означает набор данных FLICKR-FACES-HQ (FFHQ). Резолюции наборов данных ImageNet, AFHQV2 и FQ составляют 128, 512 и 1024 соответственно.
Во -первых, установите Pytorch Meegne Environment (не менее 1,7):
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116Затем используйте следующую команду для установки остальной части библиотек:
pip install tqdm ninja h5py kornia matplotlib pandas sklearn scipy seaborn wandb PyYaml click requests pyspng imageio-ffmpeg timmС помощью Docker вы можете использовать (обновлено 14/дек/2022):
docker pull alex4727/experiment:pytorch113_cuda116Это наша команда сделать контейнер с именем "Studiogan".
docker run -it --gpus all --shm-size 128g --name StudioGAN -v /path_to_your_folders:/root/code --workdir /root/code alex4727/experiment:pytorch113_cuda116 /bin/zshЕсли ваша версия драйвера NVIDIA не удовлетворяет требованиям, вы можете попробовать добавить ниже к вышеуказанную команду.
--env NVIDIA_DISABLE_REQUIRE=true CIFAR10/CIFAR100: Studiogan автоматически загрузит набор данных после выполнения main.py
Tiny ImageNet, ImageNet или пользовательский набор данных:
data
└── ImageNet, Tiny_ImageNet, Baby ImageNet, Papa ImageNet, or Grandpa ImageNet
├── train
│ ├── cls0
│ │ ├── train0.png
│ │ ├── train1.png
│ │ └── ...
│ ├── cls1
│ └── ...
└── valid
├── cls0
│ ├── valid0.png
│ ├── valid1.png
│ └── ...
├── cls1
└── ...
Перед началом пользователи должны войти в систему WANDB, используя свой личный ключ API.
wandb login PERSONAL_API_KEY Из выпуска 0.3.0 вы теперь можете определить, какие показатели оценки использовать через опцию -metrics . Не указать опцию по умолчанию только для расчета FID. IE -metrics is fid вычисляется только, и FID и -metrics none пропускает оценку.
-t ) и оценка IS, FID, PRC, REC, DNS, CVG ( -metrics is fid prdc ) модели, определенной в CONFIG_PATH с использованием GPU 0 . CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -metrics is fid prdc -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH--pre_resizer lanczos ). Затем поезда ( -t ) и оценка дружественного, дружелюбного, дружелюбного PRC, Friendly-REC, Friendly-DNS, Friendly-CVG ( -metrics is fid prdc --post_resizer clean ) модели, определенной в CONFIG_PATH с использованием GPU 0 . CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -metrics is fid prdc --pre_resizer lanczos --post_resizer clean -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH-t ) и оценить FID модели, определенную в CONFIG_PATH через DataParallel с использованием GPU (0, 1, 2, 3) . Оценка FID не требует ( -metrics ) аргумента! CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH-t ) и оценка пропуска ( -metrics none ) модели, определенной в CONFIG_PATH через DistributedDataParallel с использованием графических процессоров (0, 1, 2, 3) , Synchronized batch norm и Mixed precision . export MASTER_ADDR= " localhost "
export MASTER_PORT=2222
CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -metrics none -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -DDP -sync_bn -mpc Попробуйте python3 src/main.py чтобы увидеть доступные варианты.
Загрузите все данные в основную память ( -hdf5 -l )
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -t -hdf5 -l -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH DistributedDataparallel (пожалуйста, см. Здесь) ( -DDP )
# ## NODE_0, 4_GPUs, All ports are open to NODE_1
~ /code>>> export MASTER_ADDR=PUBLIC_IP_OF_NODE_0
~ /code>>> export MASTER_PORT=AVAILABLE_PORT_OF_NODE_0
~ /code/PyTorch-StudioGAN>>> CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -DDP -tn 2 -cn 0 -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH # ## NODE_1, 4_GPUs, All ports are open to NODE_0
~ /code>>> export MASTER_ADDR=PUBLIC_IP_OF_NODE_0
~ /code>>> export MASTER_PORT=AVAILABLE_PORT_OF_NODE_0
~ /code/PyTorch-StudioGAN>>> CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -DDP -tn 2 -cn 1 -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH Смешанная точная тренировка ( -mpc )
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -t -mpc -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATHИзменить статистику нормализации партии
# Synchronized batchNorm (-sync_bn)
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -t -sync_bn -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH
# Standing statistics (-std_stat, -std_max, -std_step)
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -std_stat -std_max STD_MAX -std_step STD_STEP -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH
# Batch statistics (-batch_stat)
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -batch_stat -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATHУтешение уточнения
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py --truncation_factor TRUNCATION_FACTOR -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH Ddls ( -lgv -lgv_rate -lgv_std -lgv_decay -lgv_decay_steps -lgv_steps )
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -lgv -lgv_rate LGV_RATE -lgv_std LGV_STD -lgv_decay LGV_DECAY -lgv_decay_steps LGV_DECAY_STEPS -lgv_steps LGV_STEPS -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATH Замораживание дискриминатора ( -freezeD )
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -t --freezeD FREEZED -ckpt SOURCE_CKPT -cfg TARGET_CONFIG_PATH -data DATA_PATH -save SAVE_PATH Studiogan поддерживает Image visualization, K-nearest neighbor analysis, Linear interpolation, Frequency analysis, TSNE analysis, and Semantic factorization . Все результаты будут сохранены в SAVE_DIR/figures/RUN_NAME/*.png .
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -v -cfg CONFIG_PATH -ckpt CKPT -save SAVE_DIR
CUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -knn -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATHCUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -itp -cfg CONFIG_PATH -ckpt CKPT -save SAVE_DIRCUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -fa -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATHCUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -tsne -cfg CONFIG_PATH -ckpt CKPT -data DATA_PATH -save SAVE_PATHCUDA_VISIBLE_DEVICES=0,...,N python3 src/main.py -sefa -sefa_axis SEFA_AXIS -sefa_max SEFA_MAX -cfg CONFIG_PATH -ckpt CKPT -save SAVE_PATHStudiogan поддерживает обучение 30 представителей Gans от Dcgan до Stylegan3-R.
Мы использовали разные сценарии в зависимости от набора данных и модели, и это следующее:
CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -hdf5 -l -std_stat -std_max STD_MAX -std_step STD_STEP -metrics is fid prdc -ref " train " -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --post_resizer " friendly " --eval_backbone " InceptionV3_tf "CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -hdf5 -l -metrics is fid prdc -ref " train " -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --post_resizer " friendly " --eval_backbone " InceptionV3_tf "CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -hdf5 -l -sync_bn -std_stat -std_max STD_MAX -std_step STD_STEP -metrics is fid prdc -ref " train " -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --pre_resizer " lanczos " --post_resizer " friendly " --eval_backbone " InceptionV3_tf " export MASTER_ADDR= " localhost "
export MASTER_PORT=8888
CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -metrics is fid prdc -ref " train " -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --pre_resizer " lanczos " --post_resizer " friendly " --eval_backbone " InceptionV3_tf " export MASTER_ADDR= " localhost "
export MASTER_PORT=8888
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python3 src/main.py -t -metrics is fid prdc -ref " train " -cfg CONFIG_PATH -data DATA_PATH -save SAVE_PATH -mpc --pre_resizer " lanczos " --post_resizer " friendly " --eval_backbone " InceptionV3_tf " Studiogan поддерживает балл на основе начала, расстояние основания Frechet, повышение точности и отзывов, плотности и охвата, внутриклассного FID, показателя точности классификатора. Пользователи могут получить Intra-Class FID, Classifier Accuracy Score с использованием параметров -iFID, -GAN_train, and -GAN_test , соответственно.
Пользователи могут изменить магистраль оценки с начала Vcept3 на Resnet50, SWAV, DINO или SWIN Transformer, используя --eval_backbone ResNet50_torch, SwAV_torch, DINO_torch, or Swin-T_torch OPTION.
Кроме того, пользователи могут рассчитать метрики с помощью чистого или архитектуры, используя вариант --post_resizer clean or friendly вариант.
Оценка начала (IS)-это показатель для измерения того, насколько GAN генерирует высокую точку зрения и разнообразные изображения. Расчет требует предварительно обученной сети «Начало v3». Обратите внимание, что мы не разделяем набор данных на десять раз для расчета в десять раз.
FID является широко используемой метрикой для оценки производительности модели GAN. Расчет FID требует предварительно обученной сети «vement-v3», а современные подходы используют FID на основе TensorFlow. Studiogan использует FID на основе Pytorch для тестирования моделей GAN в той же среде Pytorch. Мы показываем, что реализация FID на основе Pytorch дает почти те же результаты с реализацией TensorFlow (см. Приложение F Contragan Paper).
Повышенная точность и отзыв разработаны, чтобы восполнить недостатки точности и отзыва. Как и FID, вычисление улучшенной точности и отзыва требует предварительно обученной модели «Начало v3». Studiogan использует реализацию Pytorch, предоставленную разработчиками оценок плотности и охвата.
Метрики плотности и охвата могут оценить точность и разнообразие сгенерированных изображений, используя предварительно обученную модель основания V3. Известно, что метрики являются надежными для выбросов, и они могут обнаружить идентичные реальные и поддельные распределения. Studiogan использует официальную внедрение авторов Pytorch, а Studiogan следует предложению автора о выборе гиперпараметра.
Мы сообщаем лучшее, FID, улучшенная точность и отзыв, а также плотность и охват GAN.
Чтобы загрузить все контрольно -пропускные пункты, сообщаемые в Studiogan, пожалуйста, нажмите здесь (обнимаю Hub).
Вы можете оценить контрольную точку, добавив опцию -ckpt CKPT_PATH с соответствующим путем конфигурации -cfg CORRESPONDING_CONFIG_PATH .
Резолюции CiFAR10, Baby ImageNet, Papa ImageNet, дедушки ImageNet, ImageNet, AfHQV2 и FQ - 32, 64, 64, 64, 128, 512 и 1024 соответственно.
Мы используем то же количество сгенерированных изображений, что и обучающие изображения для расстояния на основе создания Фрехет (FID), точность, отзыв, плотность и расчет охвата. Для экспериментов с использованием Baby/Papa/Grandpa ImageNet и ImageNet мы исключительно используем 50 -километровые фальшивые изображения против полного обучающего набора в качестве реальных изображений.
Все функции и моменты эталонных наборов данных могут быть загружены с помощью функций и моментов .
Резолюции ImageNet-128 и ImageNet 256 составляют 128 и 256 соответственно.
Все изображения, используемые для теста, можно загрузить через один диск (скоро будут загружены).
-metrics is fid prdc ) папок изображений (уже предварительно обработанные), сохраненные в DSET1 и DSET2 с использованием графических процессоров (0,...,N) . CUDA_VISIBLE_DEVICES=0,...,N python3 src/evaluate.py -metrics is fid prdc --dset1 DSET1 --dset2 DSET2-metrics is fid prdc ) папки изображения, сохраненную в DSET2 с использованием предварительно вычисленных функций ( --dset1_feats DSET1_FEATS ), моменты DSET1 ( --dset1_moments DSET1_MOMENTS ) и GPU (0,...,N) . CUDA_VISIBLE_DEVICES=0,...,N python3 src/evaluate.py -metrics is fid prdc --dset1_feats DSET1_FEATS --dset1_moments DSET1_MOMENTS --dset2 DSET2-metrics is fid prdc --post_resizer friendly ) из папок изображений, сохраненных в DSET1 и DSET2 через DistributedDataParallel с использованием графических процессоров (0,...,N) . export MASTER_ADDR= " localhost "
export MASTER_PORT=2222
CUDA_VISIBLE_DEVICES=0,...,N python3 src/evaluate.py -metrics is fid prdc --post_resizer friendly --dset1 DSET1 --dset2 DSET2 -DDP[Лицензия MIT] Синхронизированный Batchnorm: https://github.com/vacancy/synchronized-batchnorm-pytorch
[MIT License] Модуль самоуправления: https://github.com/voletiv/self-atration-gan-pytorch
[MIT License] Diffaugment: https://github.com/mit-han-lab/data-effiate-gans
[MIT_LICENSE] Pytorch повысил точность и отзыв: https://github.com/clovaai/generative-valuation-prdc
[MIT_LICENSE] Плотность и охват Pytorch
[Лицензия MIT] Pytorch Clean-Fid: https://github.com/gaparmar/clean-fid
[Лицензия NVIDIA исходного кода] Stylegan2: https://github.com/nvlabs/stylegan2
[Лицензия NVIDIA исходного кода] Адаптивное увеличение дискриминатора: https://github.com/nvlabs/stylegan2
[Лицензия Apache] Pytorch FID: https://github.com/mseitzer/pytorch-fid
Pytorch-Studiogan-это библиотека с открытым исходным кодом по лицензии MIT (MIT). Тем не менее, части библиотеки находятся в разных терминах лицензии: Stylegan2, Stylegan2-Ada и Stylegan3 лицензированы в соответствии с лицензией Nvidia Source Code, а Pytorch-Fid лицензирован по лицензии Apache.
Studiogan создан для следующих исследовательских проектов. Пожалуйста, цитируйте нашу работу, если вы используете Studiogan.
@article { kang2023StudioGANpami ,
title = { {StudioGAN: A Taxonomy and Benchmark of GANs for Image Synthesis} } ,
author = { MinGuk Kang and Joonghyuk Shin and Jaesik Park } ,
journal = { IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI) } ,
year = { 2023 }
} @inproceedings { kang2021ReACGAN ,
title = { {Rebooting ACGAN: Auxiliary Classifier GANs with Stable Training} } ,
author = { Minguk Kang, Woohyeon Shim, Minsu Cho, and Jaesik Park } ,
journal = { Conference on Neural Information Processing Systems (NeurIPS) } ,
year = { 2021 }
} @inproceedings { kang2020ContraGAN ,
title = { {ContraGAN: Contrastive Learning for Conditional Image Generation} } ,
author = { Minguk Kang and Jaesik Park } ,
journal = { Conference on Neural Information Processing Systems (NeurIPS) } ,
year = { 2020 }
}[1] Эксперименты на крошечном ImageNet проводятся с использованием архитектуры Resnet вместо CNN.
[2] Наша переосмысление ACGAN (ICML'17) с небольшими модификациями, которые обеспечивают сильное повышение производительности для эксперимента с использованием CIFAR10.