涵盖18+ SOTA GAN实现,这个图像生成领域的库火了
GAN 自从被提出后,便迅速受到广泛关注。我们可以将 GAN 分为两类,一类是无条件下的生成;另一类是基于条件信息的生成。近日,来自韩国浦项科技大学的硕士生在 GitHub 上开源了一个项目,提供了条件 / 无条件图像生成的代表性生成对抗网络(GAN)的实现。
![涵盖18+ SOTA GAN实现,这个图像生成领域的库火了](https://s2.51cto.com/oss/202103/01/59dd3f16d8c3c4c462b1ff508c5dc6c6.jpg)
近日,机器之心在 GitHub 上看到了一个非常有意义的项目 PyTorch-StudioGAN,它是一个 PyTorch 库,提供了条件 / 无条件图像生成的代表性生成对抗网络(GAN)的实现。据主页介绍,该项目旨在提供一个统一的现代 GAN 平台,这样机器学习领域的研究者可以快速地比较和分析新思路和新方法等。
该项目的作者为韩国浦项科技大学的硕士生,他的研究兴趣主要包括深度学习、机器学习和计算机视觉。
![涵盖18+ SOTA GAN实现,这个图像生成领域的库火了](https://s3.51cto.com/oss/202103/01/aecf875c91209c8864d4da3b8d6c35b2.jpg)
项目地址: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 等人的 Tok-K 训练以及 Langevin 采样和 SimCLR 增强。
![涵盖18+ SOTA GAN实现,这个图像生成领域的库火了](https://s2.51cto.com/oss/202103/01/dfa731121447cf31b2c8d53ba39a983b.jpg)
此外,有网友询问是否可以将该项目用于图像之外的其他领域。作者表示可以,即使无法使用一些稳定器(如 diffaug、ada 等),依然可以通过调整 dataLoader 来训练自己的模型。
![涵盖18+ SOTA GAN实现,这个图像生成领域的库火了](https://s4.51cto.com/oss/202103/01/191bfabe1572aa7b27f026939d2c14c0.jpg)
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实现,这个图像生成领域的库火了](https://s2.51cto.com/oss/202103/01/33928bf3e5eaf4eb5a8837c9bc17a815.jpg)
cBN:条件批归一化;AC:辅助分类器;PD:Projection 判别器;CL:对比学习。
其中,需要注意以下几点:
- G/D_type 表示将标签信息注入生成器或判别式的方式;
- EMA 表示生成器中应用更新后的指数移动平均线;
- Tiny ImageNet 数据集上的实验使用的是 ResNet 架构而不是 CNN。
下图中 StyleGAN2 为即将实现的 GAN 网络,其中 AdaIN 表示自适应实例归一化(Adaptive Instance Normalization)。
![涵盖18+ SOTA GAN实现,这个图像生成领域的库火了](https://s3.51cto.com/oss/202103/01/edc120be7dd08c976cf607831f5b809a.jpg)
环境要求
- 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 来连接 tensoreboard。
- 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实现,这个图像生成领域的库火了](https://s6.51cto.com/oss/202103/01/8dcf07bde8919648a526a87ea8600dcf.jpg)
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实现,这个图像生成领域的库火了](https://s4.51cto.com/oss/202103/01/bd485de7c40a6c9b883a091d751eb2d1.jpg)
线性插值(仅适用于有条件的 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实现,这个图像生成领域的库火了](https://s3.51cto.com/oss/202103/01/618f45b31b6a7d970931906beb7079ce.jpg)
相关文章
- EasyCVR对接华为iVS订阅摄像机和用户变更请求接口介绍
- 精选 | 腾讯云CDN内容加速场景有哪些?
- 模块化网络防止基于模型的多任务强化学习中的灾难性干扰
- 用搜索和注意力学习稳健的调度方法
- 用于多变量时间序列异常检测的学习图神经网络
- 助力政企自动化自然生长,华为WeAutomate RPA是怎么做到的?
- 使用腾讯轻量云搭建Fiora聊天室
- TSRC安全测试规范
- 云计算“功守道”
- 助力成本优化,腾讯全场景在离线混部系统Caelus正式开源
- Flink 利器:开源平台 StreamX 简介
- 腾讯云实践 | 一图揭秘腾讯碳中和?解决方案
- 深度学习中的轻量级网络架构总结与代码实现
- 信息系统项目管理师(高项复习笔记三)
- Adobe国际认证让科技赋能时尚
- c++该怎么学习(面试吃土记)
- 面试官问发布订阅模式是在问什么?
- 面试官:请实现一个通用函数把 callback 转成 promise
- 空中悬停、翻滚转身、成功着陆,我用强化学习「回收」了SpaceX的火箭
- 中山大学林倞解读视觉语义理解新趋势:从表达学习到知识及因果融合