PyTorch实现18+ SOTA GAN

来源:公众号 机器之心 授权

GAN 自从被提出后,便迅速受到广泛关注。我们可以将 GAN 分为两类,一类是无条件下的生成;另一类是基于条件信息的生成。近日,来自韩国浦项科技大学的硕士生在 GitHub 上开源了一个项目,提供了条件 / 无条件图像生成的代表性生成对抗网络(GAN)的实现。

近日,机器之心在 GitHub 上看到了一个非常有意义的项目 PyTorch-StudioGAN,它是一个 PyTorch 库,提供了条件 / 无条件图像生成的代表性生成对抗网络(GAN)的实现。据主页介绍,该项目旨在提供一个统一的现代 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 等人的 Tok-K 训练以及 Langevin 采样和 SimCLR 增强。

此外,有网友询问是否可以将该项目用于图像之外的其他领域。作者表示可以,即使无法使用一些稳定器(如 diffaug、ada 等),依然可以通过调整 dataLoader 来训练自己的模型。

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。

cBN:条件批归一化;AC:辅助分类器;PD:Projection 判别器;CL:对比学习。

其中,需要注意以下几点:

  • G/D_type 表示将标签信息注入生成器或判别式的方式;

  • EMA 表示生成器中应用更新后的指数移动平均线;

  • Tiny ImageNet 数据集上的实验使用的是 ResNet 架构而不是 CNN。

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

环境要求

  • 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

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

线性插值(仅适用于有条件的 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

参考链接:https://www.reddit.com/r/MachineLearning/comments/lu9gen/p_pytorch_gan_library_that_provides

猜您喜欢:

超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 | 《Python进阶》中文版

附下载 | 经典《Think Python》中文版

附下载 | 《Pytorch模型训练实用教程》

附下载 | 最新2020李沐《动手学深度学习》

附下载 | 《可解释的机器学习》中文版

附下载 |《TensorFlow 2.0 深度学习算法实战》

附下载 | 超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 |《计算机视觉中的数学方法》分享

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: pytorch deeplabv3+ 是一种基于 PyTorch 框架实现的深度学习模型,主要用于对图像进行语义分割和图像标注的任务。它是以 DeepLabv3 为基础,通过改进编码器部分的网络结构,实现更强的特征提取能力,同时采用了空洞卷积和分离卷积等技术,提升了模型的准确性和效率。 ### 回答2: PyTorch Deeplabv3 是一种基于深度学习的图像分割算法,采用了改进的全卷积模型实现。Deeplabv3 可够用于图像分割、物体识别、手势识别等多项任务,且在许多计算机视觉竞赛中都取得了优异的成绩。 PyTorch Deeplabv3 算法核心采用了ASPP(Atrous Spatial Pyramid Pooling)空洞空间金字塔池化技术,该技术通过将卷积核的扩张程度进行控制,从而增加了卷积层的感受野大小,保证了模型可以适应更为复杂的图像环境,减少了模型对图像尺寸的限制,通过引入标准化操作机制进一步提高了图像分割模型的效果。ASPP 算法可以扩大感染野,使得模型有更多的上下文信息,并且可以通过不同分辨率的层来考虑物体的大小和位置差异,从而达到更加精确的分割效果。 使用 PyTorch Deeplabv3 进行图像分割,一般需要经过将图像输入到网络中进行前向传递,从而得到像素级别的标签结果。在全卷积模型的设计中,可以采用反卷积或上采样等方法来将输出大小与输入大小保持一致,经过卷积、反卷积和上采样之后输出对图像进行分割。 总之,PyTorch Deeplabv3 是一种效果良好的图像分割算法,有望在物体识别、手势识别等领域发挥越来越重要的作用。 ### 回答3: PyTorch DeepLabV3是一种深度卷积神经网络模型,广泛应用于图像分割,其设计旨在为图像分割工作提供有效和高质量的解决方案。该算法被称为深度空洞卷积神经网络,完全基于卷积神经网络,其模型结构非常适合处理高分辨率图像。 该模型使用的是基于ResNet网络的编码器和Atrous (或空洞卷积)的解码器。通过将ResNet的卷积块替换为Atrous卷积块,可以获得跨越多个尺度的信息,并且保持空洞卷积的特性,以提高参数利用率并减少运算时间。DeepLabV3算法通过使用多尺度池化和空洞卷积技术有效地捕获并预测图像的细节和上下文信息,从而实现高准确度的图像分割。 DeepLabV3算法的优点包括: 1.精度高:相对于其他图像分割算法,DeepLabV3算法具有更高的分割准确度和更好的分割性能。 2.多尺度:DeepLabV3允许我们以多个尺度处理图像,从而获得更好的分割结果。 3.可扩展:DeepLabV3算法可以通过调整模型结构和参数来适应不同的应用场景,并具有较好的扩展性和可定制性。 除此之外,深度学习框架PyTorch也提供了强大的工具和API支持,方便用户使用DeepLabV3算法进行图像分割工作。PyTorch DeepLabV3在计算机视觉领域中拥有广泛的应用,例如医学图像分割、自动驾驶、目标跟踪、场景分析等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值