AI绘画技术原理是什么?底层机制分析
简单说:AI绘画靠扩散模型把噪声一步步还原成图像,CLIP 把文字翻译成模型能懂的向量,VAE 负责在像素与潜空间之间压缩搬运,三者分工协作。
老实讲,第一次有人让我做ai绘画技术分析,我差点被那堆论文吓退。什么马尔可夫链、朗之万动力学,名字一个比一个唬人。但真钻进去才发现,核心逻辑其实挺朴素的。
说白了就一句话:模型先学会把图变噪音,再反过来学会把噪音变回图。原理不难,难的是数据量。
扩散模型:加噪再去噪的把戏
扩散模型分两步,前向逐步给原图加高斯噪声直到变成纯雪花,反向训练一个网络学会一步步把噪声还原回清晰图像,生成时从随机噪声开始反推即可。
我打比方你就懂了。这就像把一幅画泡进水里褪色褪到全白,再让模型照着记忆把颜色一点点描回来。描得多了,它就记住了"什么样的白会还原成什么样的画"。
生成阶段,你给它一团随机噪声,它按学到的规律往回描,最后描出一张新图。这就是为什么同样的种子能复现结果——起点噪声固定,路径就固定。
这个思路最早可以追溯到 2015 年的一篇论文。但真正让它火起来的是 2020 年 DDPM 那篇,把数学框架理顺了。感兴趣的可以去 arXiv 读原文,不过数学挺硬核。
VAE:图像和潜空间的搬运工
VAE 把 512×512 的像素图压缩进 64×64 的潜空间,扩散过程在潜空间里跑,最后再解压回像素,这样算力开销降了一个数量级。
为啥要这么折腾?因为在像素层面直接做扩散太烧显存。一张 512 的图有 78 万多个像素,每个都要参与计算。压到 64×64 只剩四千多,计算量直接砍掉九成以上。
代价是有损。压完再解压,细节会丢一点。所以你看 SD 出来的图边缘偶尔发虚,这就是 VAE 压缩留下的痕迹。换更好的 VAE 模型能改善,比如 SDXL 自带的那个就比老版强不少。
我个人觉得,VAE 是整个流程里最容易被忽略、却最影响最终质感的环节。很多人调参调半天,其实换个 VAE 立竿见影。
CLIP:把文字翻译给模型
CLIP 是个文本编码器,把你的提示词转成一组向量,让模型知道"你要的到底是个啥",它的对齐能力直接决定出图准不准。
模型本身不懂中文也不懂英文,它只懂数字。你说"一只猫在月光下",CLIP 把这句话变成一串向量塞给模型,模型再按这串向量去噪。翻译得好,图就贴题;翻译得烂,你写的猫它给你画成狗。
所以提示词工程本质上是在跟 CLIP 对话。CLIP 训练时见过的词它认得,没见过的就靠猜。这就是为什么有些生僻词出图效果很差——它根本没学过。
顺带说个数据。根据 OpenAI 公开资料,CLIP 是用四亿对图文样本训练的。这个量级的对齐数据,是它能理解复杂语义的底气所在。
采样器选择:实测对比步数与速度
我用 DPM++ 2M Karras 在步数 22 时出图约 14 秒,Euler a 同样步数约 9 秒但细节略糊,DPM++ SDE Karras 细节最好但要 28 步约 19 秒。
这是我真在同一张卡上跑的对比。DPM++ 2M Karras 是我日常主力,速度和质量的平衡点最舒服。Euler a 适合快速试稿,先看构图对不对,确定了我再换精细采样器重跑。
别迷信高步数。我从 30 步降到 22 步,肉眼几乎看不出差别,但每张省了快 4 秒。过了某个临界点再加步数纯属浪费算力。这个临界点因模型而异,得自己试。
采样器这东西没有标准答案,我的参数仅供参考。但"先快后精"这个思路是通用的,试稿用快的,定稿用细的。
ControlNet:给模型套上缰绳
ControlNet 是个外挂控制模块,通过额外输入(线稿、深度图、姿态)精确约束生成结果,解决了纯文生图控不住构图和姿势的老毛病。
光靠提示词,你很难让模型画出"左手举到头顶、右手指向前方"这种精确姿势。它经常自由发挥。ControlNet 给你一张骨架图或姿态图,模型就得照着这个来,容错率高太多。
我的使用习惯是线稿控构图、深度图控前后景、姿态图控人物动作,三种搭配着用。一开始觉得麻烦,熟练之后根本回不去。
原理上,ControlNet 是把底模型复制一份做控制分支,输入条件信息后把结果叠加回主网络。所以加载它会吃更多显存,但精度提升值这个价。
延伸阅读与上手建议
先搞懂扩散和 CLIP 这两块就能调好大部分参数,VAE 和 ControlNet 进阶再学,按这个顺序啃原理不累。
刚入门别一上来就钻数学。我建议先跟着 AI绘画小白入门 跑通几张图,有手感了再回头读原理,会顺畅很多。
想知道哪些平台能用上这些技术,可以看 AI绘画网站清单。想找现成案例练手,王者荣耀AI绘画可爱 这类题材拿来试 ControlNet 姿态控制很合适。
模型权重和论文我都习惯去 Hugging Face 找,源代码和预训练模型基本都有。社区里 Civitai 更偏应用,交流氛围也活跃。
常见问题
扩散模型和GAN有什么区别?
GAN 是两个网络对抗,生成器和判别器互掐,训练难调容易崩。扩散模型是一步步去噪,训练更稳但生成慢。现在主流 AI 绘画基本都转向扩散了,稳是主要原因。
种子号到底起什么作用?
种子决定起点的那团随机噪声。噪声固定,生成路径就固定,结果可复现。改种子等于换起点,图就变了。这就是为什么同一段提示词能出不同图。
潜空间压缩会不会影响画质?
会,但有取舍。压得太狠细节丢太多,压得太轻显存吃不消。SD 选的压缩比是个平衡点,日常出图基本够用,细节党可以换更好的 VAE 弥补。
ControlNet加载后显存爆了怎么办?
降分辨率,或者一次只挂一个 ControlNet 模块。同时挂三四个肯定顶不住。按需启用,用完关掉,别一直挂着占显存。
觉得有用的话分享给朋友吧。