diffusion

diffusion

好文推荐

AI内容生成(ai-gc) — 张振虎的博客 张振虎 文档

DALL·E 2(内含扩散模型介绍)【论文精读】_哔哩哔哩_bilibili

huggingface🤗课程:

原版

GitHub - huggingface/diffusion-models-class: Materials for the Hugging Face Diffusion Models Course

中文翻译

GitHub - darcula1993/diffusion-models-class-CN: Materials for the Hugging Face Diffusion Models Course

ddpm

diffusion模型奠基作 Denoising Diffusion Probabilistic Models(DDPM)

Denoising Diffusion Probabilistic Models

代码 GitHub - hojonathanho/diffusion: Denoising Diffusion Probabilistic Models

diffusion入门教程、数学推导:推荐阅读下面的这篇文章:

https://zhuanlan.zhihu.com/p/563661713

理解加噪去噪过程及数学原理:

简单基础入门理解Denoising Diffusion Probabilistic Model,DDPM扩散模型-CSDN博客

理解模型Unet设计

https://zhuanlan.zhihu.com/p/637815071


训练与采样过程:

image.png

Unet架构:

image+1.png

代码实操:

deeplearning.ai的diffusion在线课程 How Diffusion Models Work - DeepLearning.AI

如何从deeplearning.ai的jupyter批量下载文件?

1
!tar cvfz allfiles.tar.gz *

完成打包后下载即可

ddim

Denoising Diffusion Implicit Models

推荐阅读:

zhuanlan.zhihu.com

diffusion加速

参考hugging face: Effective and efficient diffusion

  1. DeepCache

zhuanlan.zhihu.com

  1. 更换scheduler,比如DPMSolverMultistepScheduler

示例代码:

1
2
3
4
5
6
7
8
9
from diffusers import DPMSolverMultistepScheduler
pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config)
device = "cuda" if torch.cuda.is_available() else "cpu"
pipeline = pipeline.to(device)
generator = torch.Generator("cuda").manual_seed(0)
# 设置时间步为20(默认是50)
images = pipeline(prompt, generator=generator, num_inference_steps=20).images
image = images[0]
display(image)
  1. 使用torch.float16加速
1
2
- pipeline = DiffusionPipeline.from_pretrained(model_id, use_safetensors=True)
+ pipeline = DiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16, use_safetensors=True)

latent diffusion

High-Resolution Image Synthesis with Latent Diffusion Models

代码仓库

https://github.com/compvis/latent-diffusion

讲解,但是你不一定能看得懂 https://zhuanlan.zhihu.com/p/582693939

推荐教程:

【【渣渣讲课】试图做一个正常讲解Latent / Stable Diffusion的成年人】 【渣渣讲课】试图做一个正常讲解Latent / Stable Diffusion的成年人_哔哩哔哩_bilibili

渣渣讲课的笔记 【AI绘图学习笔记】Latent Diffusion Model(上)——论文解读_latent diffusion models-CSDN博客

推荐阅读:

zhuanlan.zhihu.com

论文中文翻译 https://www.jianshu.com/p/816c60d981b1

渣渣学姐的 latent diffusion 在手写数字上的实现https://juejin.cn/post/7371995232160268288

github仓库

https://github.com/guchengzhong/latent_diffusion_model_mnist

尝试在本地训练出生成手写数字的模型,并读懂相关代码

如果你不知道什么是VAE,请先阅读对VAE的介绍,步子迈太大会扯着蛋

你也可以观看这个视频https://www.youtube.com/watch?v=ZBKpAp_6TGI&t=4745s,从零开始使用pytorch实现stable diffusion

controlnet

Adding Conditional Control to Text-to-Image Diffusion Models

GitHub - lllyasviel/ControlNet: Let us control diffusion models

zhuanlan.zhihu.com

学会调库

参见hugging face difffusers

HCP-diffusion: Diffusion工具箱

GitHub - IrisRainbowNeko/HCP-Diffusion: A universal Stable-Diffusion toolbox

视频生成

【【中文】视频扩散模型,三小时入门到精通,Mike Shou, Video Diffusion Models, 2023】

【中文】视频扩散模型,三小时入门到精通,Mike Shou, Video Diffusion Models, 2023_哔哩哔哩_bilibili

image+2.png

stable video diffusion

Stable Video Diffusion (SVD)可以从图片生成短视频

不支持文本控制

论文

Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets

【Stable Video Diffusion论文】视频生成SD,Stability AI又一开源力作_哔哩哔哩_bilibili

GitHub - Stability-AI/generative-models: Generative Models by Stability AI

huggingface.co

帧间连续性

在使用 Stable Video Diffusion(SVD)或其他类似的视频生成模型时,帧之间的连续性是一个关键问题。为了保证生成的视频帧之间具有平滑的过渡和一致性,通常会采用以下几种技术和方法:


  1. 时间一致性约束
  • 时间嵌入(Temporal Embedding):在 SVD 中,每一帧的时间信息会被显式地编码为时间嵌入向量。这些嵌入向量被输入到模型中,使得模型能够感知帧与帧之间的时间关系,从而生成具有时间连续性的内容。

  • 时间注意力机制(Temporal Attention):通过引入跨帧的注意力机制,模型可以在生成某一帧时参考前一帧或后一帧的信息,从而确保帧间的一致性。


  1. 帧间条件生成
  • 条件扩散(Conditional Diffusion):在生成当前帧时,模型可以以前一帧作为条件输入。这样,当前帧的生成过程会受到前一帧的影响,从而保持视觉上的一致性。

  • 双向扩散(Bidirectional Diffusion):除了从前向后生成帧外,还可以从后向前生成帧,并结合两者的输出进行融合,进一步提升帧间连续性。


  1. 光流估计与运动建模
  • 光流引导(Optical Flow Guidance):通过计算相邻帧之间的光流场,模型可以学习物体在帧间的运动轨迹,从而生成更加连贯的动态效果。

  • 运动先验(Motion Prior):引入预训练的运动模型(如基于物理的运动模拟或深度学习的运动预测模型),帮助生成更自然的运动。


  1. 帧间正则化
  • 帧差损失(Frame Difference Loss):在训练过程中,加入帧间差异的损失函数,鼓励相邻帧之间的像素变化尽可能小,从而减少闪烁或不连续的现象。

  • 一致性损失(Consistency Loss):通过约束相邻帧在特征空间中的相似性,确保生成的帧在语义和外观上具有一致性。


  1. 多尺度生成与融合
  • 多分辨率生成(Multi-Resolution Generation):在不同分辨率下生成帧,然后逐步融合,以确保低频信息(如背景)和高频信息(如细节)都能保持连续性。

  • 金字塔结构(Pyramid Structure):采用金字塔式的生成方式,先生成粗略的帧序列,再逐步细化,从而避免帧间跳跃。


  1. 后处理技术
  • 帧插值(Frame Interpolation):在生成的帧之间插入额外的中间帧,利用插值算法(如基于光流的插值)来增强连续性。

  • 去噪与平滑(Denoising and Smoothing):对生成的视频进行后处理,例如应用高斯模糊或时间域滤波,以减少帧间的突变。


  1. 数据增强与训练策略
  • 时间对齐数据增强(Temporal Alignment Augmentation):在训练数据中引入时间对齐的增强操作,例如随机裁剪、缩放或旋转,使模型学会处理帧间变化。

  • 长序列训练(Long Sequence Training):使用较长的视频片段进行训练,让模型更好地捕捉长时间依赖关系。


  1. 用户交互与控制
  • 关键帧引导(Keyframe Guidance):允许用户指定某些关键帧,模型根据这些关键帧生成中间帧,从而确保重要的场景转换是平滑的。

  • 运动轨迹编辑(Motion Trajectory Editing):提供工具让用户调整物体的运动轨迹,从而间接控制帧间连续性。


通过以上方法的组合,Stable Video Diffusion 能够在生成高质量视频的同时,有效保证帧之间的连续性和一致性。具体实现时,这些技术可能会根据应用场景和需求进行定制和优化。

diffusers支持视频生成

huggingface.co

CogVideoX

text and image to video generation

CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer

GitHub - THUDM/CogVideo: Text-to-video generation. The repo for ICLR2023 paper “CogVideo: Large-scale Pretraining for Text-to-Video Generation via Transformers”

diffusers库提供的cogvideo https://github.com/huggingface/diffusers/tree/main/examples/cogvideo

CogVideoX提供的LoRA微调

GitHub - a-r-r-o-w/finetrainers: Memory-optimized training scripts for video models based on Diffusers

dreambooth

DreamBooth 用于微调预训练的文本到图像生成模型(如 Stable Diffusion)。它的核心目标是通过少量的自定义图像输入,让模型学会生成特定对象或主题的高质量图像,同时保留原始模型的泛化能力

[论文简析]DreamBooth: Fine Tuning Text-to-Image Diffusion Models…[2208.12242]_哔哩哔哩_bilibili

阅读huggingface提供的dreambooth教程https://huggingface.co/docs/diffusers/training/dreambooth,微调stable-diffusion-v1-4模型,教模型如何生成"sks dog"

LoRA

LoRA用于提高大规模预训练模型微调的效率,同时减少计算资源和存储开销。

LoRA: Low-Rank Adaptation of Large Language Models

LoRA 是一种通过低秩矩阵逼近来实现高效微调的方法。它的基本思想是将原始模型的权重矩阵分解成两个低秩矩阵,这样可以在微调时只更新这些低秩矩阵,从而避免对整个预训练模型进行全面更新。LoRA的优点在于,微调时只增加了少量的参数,从而减少了计算量和存储需求。

假设模型的权重矩阵为 W,LoRA 将其分解为两个较小的矩阵 A 和 B,其中 A 的维度为 d×r,B 的维度为 r×k。这里 r 是一个远小于 d 和 k 的秩(rank),因此 A 和 B 的参数量远远少于原始矩阵 W。

W=W+ABW^′=W+A⋅B

其中,A 和 B 是低秩矩阵,它们在微调过程中被更新,而原始的权重矩阵 W 不需要更新。

快速简单理解:

[论文速览]LoRA: Low-Rank Adaptation of Large Language Models[2106.09685]哔哩哔哩bilibili

深入理解:

深入浅出完整解析LoRA(Low-Rank Adaptation)模型核心基础知识

https://hcpdiff.readthedocs.io/zh-cn/latest/tutorial/lora_anime.html

其他

DiffusionDet目标检测

目标检测DiffusionDet: Diffusion Model for Object Detection-CSDN博客

使用预训练模型运行DiffusionDetection_diffusion detection-CSDN博客

Diffusion-LM文本生成

论文https://arxiv.org/abs/2205.14217

IP-adapter:使预训练的text-to-image diffusion model能够根据image prompt生成图像

IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models

GitHub - tencent-ailab/IP-Adapter: The image prompt adapter is designed to enable a pretrained text-to-image diffusion model to generate images with image prompt.


diffusion
https://blog.algorithmpark.xyz/2025/02/19/diffusion/index/
作者
CJL
发布于
2025年2月19日
更新于
2025年2月19日
许可协议