AIGC是什么?——AI当艺术家
AIGC(AI Generated Content)是AI生成内容。包括:文字生成(ChatGPT写文章)、图像生成(Midjourney画插画)、视频生成(Sora做电影)、音频生成(Suno写歌曲)、代码生成(GitHub Copilot写代码)。
AIGC vs 传统AI:传统AI是“判别式”——给定图片,判断是猫还是狗。AIGC是“生成式”——给定文字,生成图片。生成式AI需要学会“创造”而不是“分类”。
核心技术:扩散模型(Diffusion Model)。扩散模型是图像生成的核心。它的原理非常巧妙:
- 前向扩散(Forward Diffusion):给一张清晰图片逐步加噪声,直到变成纯噪声。就像把一幅画逐渐喷上油漆,直到完全看不清。
- 反向扩散(Reverse Diffusion):训练一个神经网络,学会从噪声中逐步恢复图片。就像给一个模糊的画慢慢擦除油漆,恢复清晰。
- 生成新图片:随机生成纯噪声,然后用反向扩散逐步恢复,最终得到一张全新图片。
类比理解:雕塑家。想象一个雕塑家:他先有一块大理石(噪声),然后逐步雕刻(反向扩散),最终雕出大卫像(清晰图片)。
条件生成:在反向扩散时,加入“条件”(如文字描述),让模型按条件生成。例如:“一只猫在月球上” → 模型生成对应的图片。
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小时。