互联网资讯 / 人工智能 · 2023年12月1日 0

图像生成领域的新兴GAN实现引发关注

自从GAN被提出以来,这一技术迅速吸引了众多关注。GAN可以分为两种类型:一种是无条件生成,另一种则是基于特定条件的信息生成。最近,来自韩国浦项科技大学的一名硕士生在GitHub上发布了一个开源项目,展示了条件和无条件图像生成的代表性GAN实现。

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

这个名为PyTorch-StudioGAN的项目,提供了一个基于PyTorch的库,专注于条件和无条件图像生成的主要GAN实现。项目主页说明,该库旨在为机器学习领域的研究人员提供一个统一的平台,以便快速比较和分析新思路及方法。

该项目的开发者是来自韩国浦项科技大学的硕士生,研究兴趣涵盖深度学习、机器学习以及计算机视觉。

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

项目链接:https://Github.coM/POSTECH-CVLab/PyTorch-StudioGAN

具体而言,该项目具有几个显著特征:

提供丰富的PyTorch框架下的GAN实现;基于CIFAR 10、Tiny ImageNet和ImageNet数据集的GAN基准;相较于原始实现,性能更佳且内存消耗更低;提供最新的PyTorch环境下的预训练模型;支持多GPU(DP、DDP和多节点DDP)、混合精度、同步批归一化、LARS、TensorBoard可视化及其他分析方法。

对于这个PyTorch GAN库,一些网友表示:“看起来很不错!如果能加入top-k等现代训练实践以及多种增强方法就更好了。”对此,项目作者表示将在NeurIPS论文提交截止后,加入一些改进方法,如Sinha等人的Top-K训练,以及Langevin采样和SiMCLR增强。

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

此外,有网友询问该项目是否适用于图像以外的其他领域。作者表示是可以的,即使无法使用某些稳定器(如DiFFaug、ADA等),也可以通过调整数据加载器来训练自己的模型。

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

该项目包含18种以上的SOTA GAN实现

如图所示,项目作者提供了18个以上的SOTA GAN实现,包括DCGAN、LSGAN、GGAN、WGAN-WC、WGAN-GP、WGAN-DRA、ACGAN、ProjGAN、SNGAN、SAGAN、BigGAN、BigGAN-Deep、CRGAN、ICRGAN、LOGAN、DiFFAugGAN、ADAGAN、ContRaGAN和freezeD。

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

其中,cBN表示条件批归一化;AC为辅助分类器;PD是投影判别器;CL代表对比学习。

需要注意以下几点:

G/D_type指生成器或判别器中标签信息的注入方式;EMA表示生成器中使用的更新后的指数移动平均线;在Tiny ImageNet数据集上的实验采用的是ResNet架构,而非CNN。

下图中的StyleGAN2是即将实现的GAN网络,其中AdAIN表示自适应实例归一化(Adaptive Instance Normalization)。

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

环境要求

Anaconda Python >= 3.6; 6.0.0 <= Pillow <= 7.0.0; scipy == 1.1.0; sklearn; seaborn; h5py; tqdm; Torch >= 1.6.0; Torchvision >= 0.7.0; TensorBoard 5.4.0; GCC <= 7.4.0; TorchLars。

用户可以通过以下命令安装推荐的环境:

conda env create -f environment.yml -n studiogAN

在Docker中,还可以使用以下命令:

docker pull Mgkang/studiogan:latest

以下是创建名为“studioGAN”容器的命令,同样可以使用端口号6006来连接TensorBoard。

docker run -IT –gpus all –shm-size 128g -p 6006:6006 –name studioGAN -v /home/User:/root/code –workdir /root/code Mgkang/studiogan:latest /bin/bash

使用方法

在使用GPU 0的情况下,通过CONFIG_PATH定义模型的训练“−t”和评估“−e”:

CUDA_VISIBLE_DEVICES=0 python3 src/main.py -t -e -c CONFIG_PATH

在使用GPU(0, 1, 2, 3)和DataParallel的情况下,同样通过CONFIG_PATH定义模型的训练“−t”和评估“−e”:

CUDA_VISIBLE_DEVICES=0,1,2,3 python3 src/main.py -t -e -c CONFIG_PATH

在Python3 src/main.py程序中可以查看可用选项,通过TensorBoard监控IS、FID、F_beta、Authenticity Accuracies及最大奇异值:

~ PyTorch-StudioGAN/logs/RUN_NAME >>> tensorboard –logdir=./ –port PORT

可视化与分析生成图像

StudioGAN支持图像可视化、K最近邻分析、线性插值及频率分析。所有结果保存在“./figures/RUN_name/*.png”中。

图像可视化的代码和示例如下:

CUDA_VISIBLE_DEVICES=0,…,N python3 src/main.py -iv -std_stat –standing_step STANDING_STEP -c CONFIG_PATH –checkpoint_folder CHECKPOINT_FOLDER –log_output_path LOG_OUTPUT_PATH

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

K最近邻分析中,固定K=7,第一列为生成的图像:

CUDA_VISIBLE_DEVICES=0,…,N python3 src/main.py -knn -std_stat –standing_step STANDING_STEP -c CONFIG_PATH –checkpoint_folder CHECKPOINT_FOLDER –log_output_path LOG_OUTPUT_PATH

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了

线性插值(仅适用于有条件的Big ResNet模型)的代码和示例如下:

CUDA_VISIBLE_DEVICES=0,…,N python3 src/main.py -ITp -std_stat –standing_step STANDING_STEP -c CONFIG_PATH –checkpoint_folder CHECKPOINT_FOLDER –log_output_path LOG_OUTPUT_PATH

涵盖18+ SOTA GAN实现,这个图像生成领域的库火了