denoising-diffusion-pytorch

用 PyTorch 复现扩散模型,从噪声生成逼真图像

开源 free 开源模型
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 10705
维护状态 较活跃
是否开源 是
定价模式 free

项目预览

项目数据

分类开源模型
开发团队lucidrains
所属国家
官网地址
定价模式free
价格说明开源免费,MIT许可证
访问状态
是否开源是
开源协议MIT
主要语言Python
技术栈/模型artificial-intelligence,deep-learning,generative-model,score-matching
GitHub 星标★ 10705
30天Star增速
HF 下载量
上线时间2020-08-26 00:00:00
代码更新—
仓库体积—
本站数据更新—
维护状态较活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-10-15
浏览次数0

项目介绍

这是 Denoising Diffusion Probabilistic Model(DDPM)的 PyTorch 实现,由 lucidrains 维护。DDPM 是扩散生成模型的开山之作,通过逐步向图像加噪再学习反向去噪,从纯噪声中生成逼真图像。该项目把论文中的数学细节落地为可运行代码,封装了 UNet 骨干、噪声调度、训练循环和采样流程,让研究者和开发者无需从零推导公式就能复现扩散模型。核心能力包括:支持多种噪声调度(线性、余弦等)、可配置的 UNet 结构、条件生成(类别标签或文本嵌入)、DDIM 加速采样,以及 EMA 权重更新。它解决的是扩散模型实现门槛高、论文复现困难的问题,适合作为学习扩散原理的入门代码,也常被用作二次开发基线,衍生出大量变体项目。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

正在加载星标数据…

技术标签

使用教程

—

难度:入门 约 10 分钟 部署方式:库/依赖 4 步

环境要求

  • Python 环境(README 未指定具体版本)
  • 已安装 PyTorch(README 未指定版本)
  • 可联网的 pip 环境(用于从 PyPI 安装包)

安装与启动步骤

  1. 1安装软件包

    用 pip 从 PyPI 安装 denoising_diffusion_pytorch,这是 README 给出的唯一安装方式;请确认已提前装好 PyTorch。

    pip install denoising_diffusion_pytorch
  2. 2导入并构建 UNet

    从包中导入 Unet 并实例化骨干网络,dim、dim_mults 控制各层通道与倍率,flash_attn 开启注意力加速。

    from denoising_diffusion_pytorch import Unet
    
    model = Unet(
        dim = 64,
        dim_mults = (1, 2, 4, 8),
        flash_attn = True
    )
  3. 3初始化扩散模型

    把 UNet 交给 GaussianDiffusion 封装,指定 image_size 与 timesteps(加噪/去噪步数),得到可直接调用的扩散对象。

    from denoising_diffusion_pytorch import GaussianDiffusion
    
    diffusion = GaussianDiffusion(
        model,
        image_size = 128,
        timesteps = 1000    # number of steps
    )
  4. 4跑通前向与反向

    用随机张量模拟一批训练图像(形状 8×3×128×128,取值归一化到 0~1),调用 diffusion 得到损失并反向传播。

    import torch
    
    training_images = torch.rand(8, 3, 128, 128) # images are normalized from 0 to 1
    loss = diffusion(training_images)
    loss.backward()

关键配置

配置项必填说明示例
dim否UNet 基础通道维度,越大模型容量越高64
dim_mults否各层级通道倍率,决定下采样各阶段宽度(1, 2, 4, 8)
flash_attn否是否启用 Flash Attention 加速注意力计算True
image_size否训练图像尺寸,需与输入数据一致128
timesteps否扩散加噪/去噪的总步数1000

如何确认成功

运行示例代码后,loss 为一个 tensor 且 loss.backward() 不报错,说明模型构建与前向流程正常。

常见问题

Q:需要 GPU 吗?

A:README 未明确硬件要求。示例中 flash_attn=True,通常配合 GPU 使用;若环境不支持该注意力实现,可参考包文档调整该参数。

Q:训练数据怎么准备?

A:README 示例用 torch.rand(8, 3, 128, 128) 代替真实数据,并注明图像需归一化到 0~1,形状为(批大小, 通道, 高, 宽)。

Q:怎么从噪声生成图像?

A:本次 README 节选只演示了 install、Unet 与 GaussianDiffusion 的前向计算,未给出采样示例,请查阅仓库完整 README。

Q:安装后导入报错怎么办?

A:先确认 PyTorch 已正确安装并可 import torch,再重新执行 pip install denoising_diffusion_pytorch;README 未提供其他安装方式。

注意事项

  • README 的安装说明只有一条 pip 命令,其余依赖(如 PyTorch)需自行预先准备。
  • 示例中的训练图像必须归一化到 0~1 区间,否则扩散过程的前向计算不符合预期。
  • 本次节选未包含数据集加载、训练循环、采样生成等完整流程,实际训练需参考仓库完整文档。

核心亮点

  • 代码结构清晰,与 DDPM 论文公式一一对应,适合学习扩散原理
  • 支持多种噪声调度、条件生成和 DDIM 加速采样,扩展性强
  • lucidrains 维护,社区活跃,被大量后续扩散项目引用和二次开发

不足之处

  • 仅覆盖基础 DDPM,未内置 Stable Diffusion 等大规模文生图能力
  • 训练和采样对显存与算力要求较高,缺少轻量化部署方案

适用场景

  • 学习扩散模型原理并动手复现论文实验
  • 在自有数据集上训练小规模图像生成模型
  • 作为二次开发基线,改造为条件生成或加速采样研究

替代项目

stable-diffusion、imagen-pytorch

上一篇:Awesome-Ollama

下一篇:Vietnamese_LLMs

同类项目推荐

Machine-Learning 开源

跟着博客笔记,边看边跑机器学习代码

All content related to machine learning from my blog

★ 115 2026-08-09
CoreML-Models 开源

下载即用的苹果端 AI 模型库,免去转换烦恼

Core ML model zoo for iOS/macOS — PyTorch models converted to ready-to-use .mlpacka···

★ 1888 2026-08-10