返回学习地图
llmPhase B · 第 17

2.10 AIGC

Text2Image/Image2Image/Text2Video:AI生成内容的原理与应用

5 个章节·按类别展开/折叠
知识

AIGC是什么?——AI当艺术家

AIGC(AI Generated Content)是AI生成内容。包括:文字生成(ChatGPT写文章)、图像生成(Midjourney画插画)、视频生成(Sora做电影)、音频生成(Suno写歌曲)、代码生成(GitHub Copilot写代码)。

AIGC vs 传统AI:传统AI是“判别式”——给定图片,判断是猫还是狗。AIGC是“生成式”——给定文字,生成图片。生成式AI需要学会“创造”而不是“分类”。

核心技术:扩散模型(Diffusion Model)。扩散模型是图像生成的核心。它的原理非常巧妙:

  1. 前向扩散(Forward Diffusion):给一张清晰图片逐步加噪声,直到变成纯噪声。就像把一幅画逐渐喷上油漆,直到完全看不清。
  2. 反向扩散(Reverse Diffusion):训练一个神经网络,学会从噪声中逐步恢复图片。就像给一个模糊的画慢慢擦除油漆,恢复清晰。
  3. 生成新图片:随机生成纯噪声,然后用反向扩散逐步恢复,最终得到一张全新图片。

类比理解:雕塑家。想象一个雕塑家:他先有一块大理石(噪声),然后逐步雕刻(反向扩散),最终雕出大卫像(清晰图片)。

条件生成:在反向扩散时,加入“条件”(如文字描述),让模型按条件生成。例如:“一只猫在月球上” → 模型生成对应的图片。

AIGC主要应用:

应用代表工具技术特点
文生图Midjourney, DALL-E, Stable Diffusion扩散模型根据文字描述生成图像
图生图Stable Diffusion img2img, ControlNet条件扩散根据输入图片+文字生成新图
文生视频Sora, Runway, Pika时空扩散根据文字生成视频片段
文生音乐Suno, Udio, AIVA音频扩散根据文字/风格生成音乐
知识

Stable Diffusion与LoRA:可定制图像生成

Stable Diffusion(SD)是开源文生图模型的代表。2022年发布,开源免费,社区庞大。SD的核心架构:U-Net + VAE + CLIP文本编码器。

U-Net:扩散模型的核心网络。输入是带噪声的隐空间表示,输出是去噪后的表示。U-Net的“U”型结构:先下采样(编码),再上采样(解码),中间有跳跃连接。

VAE(变分自编码器):把图片压缩到隐空间(latent space),再在隐空间做扩散。为什么不在像素空间?像素空间太大(512x512x3=786,432维),隐空间小(64x64x4=16,384维),计算快50倍。

CLIP文本编码器:把文字描述转换成向量,引导图像生成。CLIP训练了4亿张图片-文字对,学会把“一只猫”和猫的图片映射到同一个向量空间。

LoRA(Low-Rank Adaptation):轻量级微调技术。只训练少量参数(通常是原模型的0.1%~1%),就能让模型学会特定风格或人物。例如:用20张自己的照片训练LoRA,就能让SD生成你的各种风格照片。

LoRA原理:不修改原模型的权重W,而是添加一个低秩矩阵ΔW = A×B。A和B很小,参数量极少。公式:W' = W + α/r × A×B。其中r=4~64(秩),α=1(缩放系数)。

参数表:

参数含义典型值太大/太小
扩散步数去噪迭代次数20~50太少→质量差;太多→慢且可能过平滑
CFG Scale文字引导强度7~12太低→不跟文字;太高→artifact
分辨率生成图片尺寸512x512, 1024x1024太大→显存不足;太小→细节不足
LoRA秩(r)低秩矩阵大小4~64太大→过拟合;太小→表达能力不足
代码

代码实战:用Diffusers生成图片

实例

例子:计算扩散模型的参数量

实例

Stable Diffusion v1.5的参数量计算:

U-Net: ~860M参数(主要计算量)
VAE Encoder: ~34M
VAE Decoder: ~35M
CLIP Text Encoder: ~123M
总计: ~1.05B参数

训练数据: LAION-5B (50亿图文对)
训练成本: 约256张A100 GPU训练约20天
电费: 约$150,000

推理成本:

512x512图片, 50步:
- A100: ~2秒
- 4090: ~3秒
- Mac M2: ~30秒
- CPU: ~5分钟

1024x1024图片, 50步:
- A100: ~5秒
- 4090: ~8秒

优化后 (FP16 + xformers):
- 4090: 512x512约1.5秒

结论:生成一张图的成本约$0.001~$0.01(取决于硬件)。Midjourney每次生成4张图,订阅$10/月约200张,每张成本约$0.05。

练习

练习:AIGC

练习

Q1:扩散模型的前向扩散和反向扩散分别做什么?为什么需要两步?

Q2:为什么SD用VAE把图片压缩到隐空间,而不是直接在像素空间做扩散?

Q3:LoRA的ΔW = A×B,为什么叫低秩?如果r=4,原矩阵W是512×512,A和B的维度分别是多少?

Q4:CFG Scale=7.5是什么意思?如果CFG=2和CFG=20分别会怎样?

Q5:训练SD需要50亿图文对,但我的数据集只有1000张图。如何用LoRA训练自己的风格?

查看答案

A1:前向扩散:给图片加噪声直到变成纯噪声(不需要学习)。反向扩散:从噪声恢复图片(需要训练神经网络)。两步结合:前向定义了从清晰到噪声的过程,反向学习了这个过程的逆过程,从而能从随机噪声生成新图片。

A2:像素空间太大(512x512x3=786,432维)。隐空间小(64x64x4=16,384维),计算快50倍。VAE负责像素↔隐空间的转换,扩散在高效的隐空间进行。

A3:低秩是因为A×B的秩最多为r(远小于矩阵维度)。如果r=4,A是512×4,B是4×512。参数量从512×512=262,144降到512×4+4×512=4,096,减少64倍。

A4:CFG=7.5表示文字条件的影响力是无条件生成的7.5倍。CFG=2:文字引导弱,图片可能不跟文字描述。CFG=20:文字引导极强,但可能产生artifact(颜色过饱和、重复图案等)。

A5:用LoRA!冻结SD的所有参数,只训练A和B矩阵。1000张图足够训练一个LoRA(通常需要10~100张)。训练参数:学习率1e-4,epoch 10~20,秩r=4~8。训练时间:4090约30分钟~2小时。