Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Diffusion Models

扩散模型通过学习逐步逆转渐进式加噪过程,从纯噪声一步步生成新的图像、视频和音频样本。

扩散模型是通过学习逆转逐步加噪过程来创建数据的生成式 AI模型。在训练期间,图像或其他数据会经过许多小步骤,逐步加入高斯噪声;神经网络则学会预测每一步的噪声。生成时,模型从纯随机噪声开始,逐步去噪,直到生成新的样本。Jascha Sohl-Dickstein 及其同事于 2015 年在论文《使用非平衡热力学进行深度无监督学习》中提出了这种方法;Jonathan Ho、Ajay Jain 和 Pieter Abbeel 于 2020 年通过《去噪扩散概率模型(DDPM)》让这种方法具备了竞争力,该模型在 CIFAR-10上创下了 3.17 的 FID最先进成绩。2021 年,OpenAI 研究人员证明扩散模型在 ImageNet图像合成上优于 GAN;如今,扩散模型及其流匹配变体为文生图系统(如 Stable Diffusion)、视频生成器、图像编辑器和科学模型提供支持。

扩散模型的工作原理#

正向过程是固定的,而非通过学习得到。它在 T 个步骤中的每一步都加入少量高斯噪声;DDPM 使用 T = 1,000,噪声方差则从每步的 0.0001 线性增加到 0.02。由于高斯噪声之和仍然是高斯分布,训练图像可以通过闭式公式直接跳到任意步骤 t:xt = sqrt(alpha_bar_t) * x0 + sqrt(1 - alpha_bar_t) * noise,其中 alpha_bar_t 是前 t 个步骤中 1 - beta 的乘积。训练时会反复选取一张图像、一个随机步骤和新的噪声,构造 xt,并用均方误差教网络预测该噪声;这就是 DDPM 的简化目标。下面的代码使用 DDPM 的噪声调度对照片应用正向过程:

import urllib.request

import numpy as np
import torch
from PIL import Image

# DDPM's linear schedule: 1,000 steps whose noise variance rises from 0.0001 to 0.02
betas = torch.linspace(1e-4, 0.02, 1000)
alpha_bar = torch.cumprod(1 - betas, dim=0)

# Load a photo and scale its pixels to [-1, 1]
image = Image.open(urllib.request.urlopen("https://ultralytics.com/images/bus.jpg")).convert("RGB").resize((256, 256))
x0 = torch.tensor(np.array(image), dtype=torch.float32).permute(2, 0, 1) / 127.5 - 1

# Jump straight to step t in closed form: x_t = sqrt(alpha_bar) * x0 + sqrt(1 - alpha_bar) * noise
frames = []
for t in (0, 99, 299, 599, 999):
    xt = alpha_bar[t].sqrt() * x0 + (1 - alpha_bar[t]).sqrt() * torch.randn_like(x0)
    frames.append(((xt.clamp(-1, 1) + 1) * 127.5).byte().permute(1, 2, 0).numpy())
    print(f"step {t + 1}: image weight {alpha_bar[t].sqrt():.3f}, noise weight {(1 - alpha_bar[t]).sqrt():.3f}")
Image.fromarray(np.hstack(frames)).save("forward_diffusion.jpg")

图像权重从第 1 步的 1.000 下降到第 100 步的 0.947、第 300 步的 0.630、第 600 步的 0.161,以及第 1,000 步的 0.006,而噪声权重则上升到 1.000。保存的 forward_diffusion.jpg 显示,公交车先是清晰可见,随后变得颗粒化、模糊,最终消失。

生成时,过程会反向运行。模型从纯高斯噪声开始,每一步都由网络预测当前样本中的噪声,再由求解器去除其中一部分,稍微干净一些的结果随后进入下一步。文本提示或类别标签会作为条件输入网络,通常通过交叉注意力实现。Jonathan Ho 和 Tim Salimans 提出的无分类器引导会训练同一个网络,使其既能处理有条件的输入,也能处理无条件的输入;采样时再从无条件预测向有条件预测外推。引导尺度越高(例如 Stable Diffusion 1.x 流水线的默认值 7.5),生成结果就越贴合提示词,但多样性会降低。

加快采样速度#

DDPM 采样每张图像需要进行 1,000 次网络评估,因此该领域的许多进展都致力于减少这一数量:

  • 改进采样器:DDIM使用确定性采样器复用已训练的 DDPM,实际运行时间可快 10 到 50 倍,同时生成高质量样本。之后的 ODE 求解器将常见的生成过程缩短到了约 20 到 50 步。
  • 潜在扩散:潜在扩散模型对自编码器压缩后的表示进行去噪,而不是直接处理像素。Stable Diffusion 的自编码器会将 512×512×3 的图像转换为 64×64×4 的潜在表示,数值数量减少了 48 倍。
  • 蒸馏:一致性模型学会将任意带噪样本直接映射为干净样本,从而实现一步生成;潜在一致性模型则将同一理念用于 Stable Diffusion,只需 2 到 4 步。
  • 更直的路径:流匹配和整流流沿着从噪声到数据的直线路径进行训练,求解器可以用更少的步骤沿这些路径前进。

去噪网络本身也从 DDPM 和 Stable Diffusion 1.x 使用的卷积式 U-Net,发展到了当前大多数图像和视频生成器使用的扩散 Transformer(DiT)。

扩散模型与其他生成模型的比较#

  • 生成对抗网络(GAN):GAN 一次前向传播就能生成样本,但生成器与判别器之间的对抗训练容易不稳定并出现模式崩溃,即生成器只能覆盖部分数据。扩散模型通过稳定的回归训练能更全面地覆盖数据分布,但采样需要许多步骤。
  • 变分自编码器(VAE):VAE 通过一次解码就能将潜在向量转换为样本,但生成的样本往往较模糊。潜在扩散模型只用 VAE 风格的自编码器压缩图像,而将生成工作交给扩散模型。
  • 自回归模型:语言模型和视觉自回归模型会根据先前内容,逐个 token 或逐个尺度地生成内容。扩散模型则在每一步并行优化样本的所有部分;扩散语言模型将同样的去噪方法用于文本。

实际应用#

  • 图像生成与编辑:文生图模型根据提示词创建图像;图像修复会重新生成蒙版区域,使其与周围内容相匹配;ControlNet使用边缘图、深度图或姿势图约束布局;扩散超分辨率模型则用于提升图像分辨率。
  • 视频生成:视频生成模型会对跨越多帧的压缩潜在表示进行去噪,因此每一帧都会与相邻帧一起生成。
  • 合成训练数据:生成的图像可以填补视觉数据集中的空缺,例如罕见缺陷、特殊天气或少见视角。在 Ultralytics Platform的数据集中,生成相似图像操作会参考现有图像,每批生成 1 到 16 张新图像;你保留的图像会以未标注状态加入数据集,等待标注。
  • 机器人:扩散策略以摄像头图像为条件,通过去噪生成机器人动作序列。
  • 科学:AlphaFold 3 使用扩散模块对原始原子坐标进行去噪,从而预测蛋白质、核酸和小分子复合物的结构,取代了 AlphaFold 2 的结构模块。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来