gigagan-pytorch

gigagan-pytorch

最新生成对抗网络GigaGAN的实现,优化训练收敛和模型稳定性

gigagan-pytorch项目实现了Adobe最新的生成对抗网络GigaGAN,优化了跳层激励和辅助重建损失,以提升训练收敛速度和模型稳定性。项目支持高分辨率上采样器,具备混合精度和多GPU训练功能。适合寻求高效稳定GAN训练的开发者和研究人员。可加入Discord社区,与LAION合作获取更多支持。

GigaGANAdobePyTorchLAIONStabilityAIGithub开源项目

<img src="https://yellow-cdn.veclightyear.com/35dd4d3f/94fc10b8-b8ee-47ad-b0b5-3ea5c77614c8.png" width="500px"></img>

<img src="https://yellow-cdn.veclightyear.com/35dd4d3f/de9d32d0-8b7a-4de6-a8e6-175b366e1b64.png" width="500px"></img>

GigaGAN - Pytorch

实现 <a href="https://arxiv.org/abs/2303.05511v2">GigaGAN</a> <a href="https://mingukkang.github.io/GigaGAN/">(项目页面)</a>,Adobe 最新的 SOTA GAN。

我还会添加一些来自<a href="https://github.com/lucidrains/lightweight-gan">轻量级 gan</a>的发现,以加快收敛(跳层激励)和更好的稳定性(判别器中的辅助重建损失)

它还将包含 1k - 4k 上采样器的代码,这是我认为这篇论文的亮点。

如果您有兴趣与 <a href="https://laion.ai/">LAION</a> 社区一起帮助复制,请加入 <a href="https://discord.gg/xBPBXfcFHd"><img alt="Join us on Discord" src="https://yellow-cdn.veclightyear.com/35dd4d3f/eac48ddd-fd8d-4a83-9c80-6d3991b0b1cf.png"></a>

感谢

  • 感谢 <a href="https://stability.ai/">StabilityAI</a><a href="https://huggingface.co/">🤗 Huggingface</a> 的慷慨赞助,以及我的其他赞助商们,使我能够独立开源人工智能。

  • 感谢 <a href="https://huggingface.co/">🤗 Huggingface</a> 的 accelerate 库

  • 感谢 <a href="https://github.com/mlfoundations/open_clip">OpenClip</a> 的所有维护者,他们的 SOTA 开源对比学习文本-图像模型

  • 感谢 <a href="https://github.com/XavierXiao">Xavier</a> 的非常有帮助的代码审查,以及关于如何构建判别器中的尺度不变性进行的讨论!

  • 感谢 <a href="https://github.com/CerebralSeed">@CerebralSeed</a> 提出生成器和上采样器初始采样代码的拉取请求!

  • 感谢 <a href="https://github.com/randintgenr ">Keerth</a> 的代码审查和指出与论文的一些差异!

安装

$ pip install gigagan-pytorch

使用方法

简单的无条件 GAN,供初学者使用

import torch from gigagan_pytorch import ( GigaGAN, ImageDataset ) gan = GigaGAN( generator = dict( dim_capacity = 8, style_network = dict( dim = 64, depth = 4 ), image_size = 256, dim_max = 512, num_skip_layers_excite = 4, unconditional = True ), discriminator = dict( dim_capacity = 16, dim_max = 512, image_size = 256, num_skip_layers_excite = 4, unconditional = True ), amp = True ).cuda() # 数据集 dataset = ImageDataset( folder = '/path/to/your/data', image_size = 256 ) dataloader = dataset.get_dataloader(batch_size = 1) # 在训练前必须为 GAN 设置数据加载器 gan.set_dataloader(dataloader) # 交替训练判别器和生成器 # 在这个例子中训练 100 步,批量大小 1,梯度累积 8 次 gan( steps = 100, grad_accum_every = 8 ) # 经过大量训练后 images = gan.generate(batch_size = 4) # (4, 3, 256, 256)

对于无条件 Unet 上采样器

import torch from gigagan_pytorch import ( GigaGAN, ImageDataset ) gan = GigaGAN( train_upsampler = True, # 将其设置为 True generator = dict( style_network = dict( dim = 64, depth = 4 ), dim = 32, image_size = 256, input_image_size = 64, unconditional = True ), discriminator = dict( dim_capacity = 16, dim_max = 512, image_size = 256, num_skip_layers_excite = 4, multiscale_input_resolutions = (128,), unconditional = True ), amp = True ).cuda() dataset = ImageDataset( folder = '/path/to/your/data', image_size = 256 ) dataloader = dataset.get_dataloader(batch_size = 1) gan.set_dataloader(dataloader) # 交替训练判别器和生成器 # 在这个例子中训练 100 步,批量大小 1,梯度累积 8 次 gan( steps = 100, grad_accum_every = 8 ) # 经过大量训练后 lowres = torch.randn(1, 3, 64, 64).cuda() images = gan.generate(lowres) # (1, 3, 256, 256)

损失

  • G - 生成器
  • MSG - 多尺度生成器
  • D - 判别器
  • MSD - 多尺度判别器
  • GP - 梯度惩罚
  • SSL - 判别器中的辅助重建(来自轻量级 GAN)
  • VD - 视觉辅助判别器
  • VG - 视觉辅助生成器
  • CL - 生成器对比损失
  • MAL - 匹配感知损失

一个健康的运行应该使 GMSGDMSD 的值保持在010之间,并且通常保持相当稳定。如果在 1k 训练步后这些值仍然保持在三位数,那就说明出了问题。生成器和判别器的值偶尔下降为负数是可以的,但它应该恢复到上述范围内。

GPSSL 应该朝0推动。GP可能会偶尔飙升;我喜欢把这想象成网络经历了一些顿悟

多 GPU 训练

GigaGAN 类现在配有 <a href="https://huggingface.co/docs/accelerate/en/package_reference/accelerator">🤗 Accelerator</a>。您可以使用 accelerate CLI 轻松完成两步多 GPU 训练

在项目的根目录下,训练脚本所在的位置,运行

$ accelerate config

然后,在同一目录下

$ accelerate launch train.py

待办事项

  • 确保它可以无条件训练

  • 阅读相关论文并完成所有 3 个辅助损失

    • 匹配感知损失
    • clip 损失
    • 视觉辅助判别器损失
    • 在判别器的任意阶段添加重建损失(轻量级 gan)
    • 弄清随机投影如何在投影 gan 中使用
    • 视觉辅助判别器需要从 CLIP 中提取 N 层
    • 弄清楚是丢弃 CLS 标记并重塑为图像尺寸用于卷积,还是坚持使用注意力并用自适应层归一化进行调节 - 还要在无条件情况下关闭视觉辅助 gan
  • unet 上采样器

    • 添加自适应卷积
    • 修改 unet 的后期输出 RGB 残差,并将 RGB 传递给判别器。使判别器对传入的 RGB 具有鲁棒性
    • 对 unet 进行像素洗牌上采样
  • 对多尺度输入和输出进行代码审查,因为论文有点模糊

  • 添加上采样网络架构

  • 确保无条件工作于基础生成器和上采样器

  • 确保文本条件训练工作于基础生成器和上采样器

  • 通过随机采样补丁使重建更高效

  • 确保生成器和判别器也能接受预编码的 CLIP 文本编码

  • 审查辅助损失

    • 为生成器添加对比损失
    • 添加视觉辅助损失
    • 为视觉辅助判别器添加梯度惩罚 - 可选
    • 添加匹配感知损失 - 弄清旋转文本条件是否足以用于错配(无需从数据加载器中抽取额外批次)
    • 确保与匹配感知损失一起工作的梯度累积
    • 匹配感知损失运行且稳定
    • 视觉辅助训练
  • 添加一些可微分增强技术,这是旧 GAN 时代的已验证技巧

    • 移除任何自动 RGB 处理的魔法,并显式传递它 - 为判别器提供处理真实图像到正确多尺度的函数
    • 首先添加水平翻转
  • 将所有调制投影移动到 adaptive conv2d 类中

  • 添加加速

    • 单机工作
    • 混合精度工作(确保梯度惩罚正确缩放),注意手动缩放器的保存和重新加载,从 imagen-pytorch 借用
    • 确保多 GPU 对于单机工作
    • 让别人尝试多台机器
  • clip 应该对所有模块都是可选的,并由 GigaGAN 管理,用一次处理的文本 -> 文本嵌入

  • 添加选择多尺度维度的随机子集的能力,以提高效率

  • 从 lightweight|stylegan2-pytorch 移植 CLI

  • 挂接 laion 数据集以进行文本-图像

引用

@misc{https://doi.org/10.48550/arxiv.2303.05511, url = {https://arxiv.org/abs/2303.05511}, author = {Kang, Minguk and Zhu, Jun-Yan and Zhang, Richard and Park, Jaesik and Shechtman, Eli and Paris, Sylvain and Park, Taesung}, title = {Scaling up GANs for Text-to-Image Synthesis}, publisher = {arXiv}, year = {2023}, copyright = {arXiv.org perpetual, non-exclusive license} }
@article{Liu2021TowardsFA, title = {Towards Faster and Stabilized GAN Training for High-fidelity Few-shot Image Synthesis}, author = {Bingchen Liu and Yizhe Zhu and Kunpeng Song and A. Elgammal}, journal = {ArXiv}, year = {2021}, volume = {abs/2101.04775} }
@inproceedings{dao2022flashattention, title = {Flash{A}ttention: Fast and Memory-Efficient Exact Attention with {IO}-Awareness}, author = {Dao, Tri and Fu, Daniel Y. and Ermon, Stefano and Rudra, Atri and R{\'e}, Christopher}, booktitle = {Advances in Neural Information Processing Systems}, year = {2022} }
@inproceedings{Karras2020ada, title = {Training Generative Adversarial Networks with Limited Data}, author = {Tero Karras and Miika Aittala and Janne Hellsten and Samuli Laine and Jaakko Lehtinen and Timo Aila}, booktitle = {Proc. NeurIPS}, year = {2020} }
@article{Xu2024VideoGigaGANTD, title = {VideoGigaGAN: Towards Detail-rich Video Super-Resolution}, author = {Yiran Xu and Taesung Park and Richard Zhang and Yang Zhou and Eli Shechtman and Feng Liu and Jia-Bin Huang and Difan Liu}, journal = {ArXiv}, year = {2024}, volume = {abs/2404.12388}, url ={https://api.semanticscholar.org/CorpusID:269214195} }

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多