☰
【老计带你懂AI算法】18:扩散模型,从一片噪声里雕出图像,AI绘画的真正主力
2026/10/3 2:32:28 网站建设 项目流程

【老计带你懂AI算法】18:扩散模型,从一片噪声里雕出图像,AI绘画的真正主力

开头:AI绘画背后的真正功臣

这两年,AI绘画彻底出圈了。你输入一句话"夕阳下的赛博朋克城市,霓虹灯,下着雨",几秒钟后就得到一张精美得能当壁纸的图。Midjourney、Stable Diffusion、DALL-E这些工具,让人人都能当"画家"。

这些惊艳能力背后的真正主力,不是上一篇的GAN,而是扩散模型(Diffusion Model)。它后来居上,凭借更稳定的训练和更高的生成质量,抢下了图像生成的王座。这一篇讲清它那个反直觉、却异常优雅的核心思路。

核心思路:先学会毁掉,再学会创造

扩散模型的想法,第一次听会觉得很奇怪,但想通了会觉得妙不可言。它的灵感来自物理学里的扩散现象(比如一滴墨水滴进清水,慢慢扩散开,最终均匀混浊)。

它的核心思路分两个方向:

第一个方向,加噪,学会怎么把图毁掉。拿一张清晰的图片,往上一点点地添加随机噪声,加一点、图糊一点,再加一点、更糊,如此几百步,最终整张图变成一片纯粹的、毫无信息的随机噪声(就像电视没信号时的雪花屏)。这个"清晰图逐步变噪声"的过程是固定的、简单的,不用学。

第二个方向,去噪,学会怎么把图恢复出来,这才是模型真正要学的。模型要学会把上面那个过程反过来,从一片纯噪声出发,一步步地去掉噪声,每一步都让图像清晰一点点,几百步之后,从雪花屏里"雕刻"出一张清晰、全新的图片。

说白了,扩散模型就是训练一个超级厉害的"去噪高手"。训练时,它看了海量"某种程度的噪声图,对应的更清晰一点的图"这样的样本对,学会了在任何噪声程度下,都能预测出该去掉哪些噪声、让图更清晰一步。学成之后,你随便给它一片纯噪声,它就能一步步去噪,凭空雕出一张逼真的图。

一个绝妙的比喻:从大理石里雕出雕像

理解扩散模型,有个特别贴切的比喻,米开朗基罗雕大卫像。

有人问米开朗基罗怎么雕出这么完美的大卫,他说:“大卫本来就在这块大理石里,我只是把多余的部分去掉而已。”

扩散模型干的就是这件事。那片纯噪声,就是一块混沌的大理石;模型这个雕刻家,一凿子一凿子(一步步去噪)地把多余的噪声去掉,最终图像就从噪声里"显现"出来。它不是凭空画一张图,而是从一片混沌里,把本就"蕴含"其中的图像雕刻出来。这个视角特别美,也特别准确。

为什么要分成几百个小步、而不是一步到位?因为一步从纯噪声直接生成完美图片太难了,把它拆成几百个"只需去掉一点点噪声"的小步,每一步都简单可控,累积起来就完成了从混沌到清晰的惊人跨越。这种"把一个极难的任务,拆成许多个简单小步慢慢逼近"的智慧,和第4篇梯度提升的"一棵棵树接力纠错"异曲同工,都是化整为零的思想。

再多说一句这个思路带来的启发,因为它其实道出了一个很深的道理。直接凭空创造一个完美的东西极其困难,但"改进"一个已有的东西却相对容易;把创造拆解成无数次微小的改进,难题就被化解了。这不只是算法的智慧,也很像现实里做成大事的方式,你很难一步到位写出一篇完美的文章、做出一个完美的产品,但你可以先弄个粗糙的草稿(哪怕是一团糟),再一遍遍地修改打磨,每次只改进一点点,改上几十上百遍,最终就打磨出精品。扩散模型从一团噪声出发反复去噪、逼近清晰图像,本质就是把"从无到有的创造",转化成了"从粗到精的迭代改进"。理解了这一层,你不仅懂了这个模型,也get到了一种解决复杂问题的通用方法论,别怕起点烂,怕的是不肯一步步迭代。

为什么扩散模型比GAN更强

对比上一篇的GAN,扩散模型的优势就清楚了,这也是它能抢下王座的原因:

  • 训练稳定。GAN是两个网络对抗,稍不平衡就崩,难伺候。扩散模型没有对抗,就是老老实实训练一个去噪网络,目标明确、训练稳定得多。
  • 生成质量高、多样性好。它不容易像GAN那样模式崩溃(翻来覆去生成雷同的东西),生成的图既逼真又丰富多样。
  • 可控性强。它天然适合融入各种条件引导(比如文字),做文生图特别顺手。

代价是慢。因为要一步步去噪几十上百步,生成一张图比GAN的一步到位慢不少。不过后来有很多加速技术,把步数大大减少了,现在也能做到很快。

文生图:它怎么听懂你的话

你最关心的可能是,输入一句话,它怎么就生成对应的图?这用到了前面的两个关键思想。

第一,条件引导(还记得上一篇的条件生成吗)。去噪的每一步,不只看当前的噪声图,还参考你输入的那句话,让去噪朝着"符合这句话描述"的方向进行。这样雕出来的图,就和你的描述对得上。

第二,把文字变成模型能懂的向量。你那句话,先被一个语言模型(往往和后面要讲的Transformer相关)转成一串数字向量,浓缩了这句话的语义,再作为条件喂给去噪过程。这又回到了那条贯穿全系列的主线,把万物(文字、图像)都变成向量来处理。正是因为文字和图像被映射到了可以互通的表示空间,模型才能理解"赛博朋克城市"这几个字该对应什么样的画面。

输入和输出长什么样

  • 输入:一片随机噪声(作为起点)。如果是文生图,再加上一段文字描述(作为引导条件)。
  • 输出:一张生成的图片。改变起始噪声或文字描述,就得到不同的图。
  • 训练时的输入:海量图片(文生图还需要图片配对的文字描述),模型从中学习去噪的本领。

上代码:调用扩散模型生成图片

自己从头训练扩散模型要海量数据和算力,实际中我们直接调用训练好的模型(Hugging Face上有很多)。输入:一句文字。输出:一张图。

# 依赖:pip install diffusers transformers torch acceleratefromdiffusersimportStableDiffusionPipelineimporttorch# 加载预训练好的Stable Diffusion模型(首次会自动下载模型权重,较大)pipe=StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",torch_dtype=torch.float16,# 半精度省显存(有GPU时))pipe=pipe.to("cuda")# 放到GPU上,扩散模型很吃显存# 输入一句话描述(prompt),生成图片prompt="一只戴着宇航头盔的柴犬,漂浮在太空中,背景是地球,高清,数字艺术"image=pipe(prompt,num_inference_steps=30).images[0]# num_inference_steps是去噪步数image.save("output.png")# 保存生成的图片print("图片已生成并保存为 output.png")

运行输出(示例,程序会在当前目录生成一张图片文件):

图片已生成并保存为 output.png

(output.png里会是一张按你的描述生成的图,比如一只戴宇航头盔、漂在地球上空的柴犬。具体画面每次生成都不同。)

这段代码展示了实际用扩散模型的标准方式,不用自己训练,直接加载Hugging Face上的预训练模型,输入一句prompt,设定去噪步数,就能生成图片。num_inference_steps就是前面说的去噪要走多少步,步数多质量高但慢,步数少快但可能糙。这也是普通人用AI绘画的技术本质。需要说明这段代码需要GPU和较大的模型下载,作者没有实机运行环境,读者按环境和库版本可能要微调。

关键概念

  • 去噪步数(num_inference_steps):一步步去噪走多少步,质量和速度的权衡。
  • 引导强度(guidance scale):生成的图多大程度上严格贴合你的文字描述,太高会僵硬、太低会跑题。
  • Latent Diffusion(潜空间扩散):Stable Diffusion的关键优化,不在庞大的像素空间里做扩散,而是先用第8篇讲的那种压缩思想把图压到一个小的潜空间里做,大大提速,这是扩散模型能普及到消费级显卡的关键。
  • U-Net:扩散模型里那个去噪网络常用的结构,本质是一种特殊的CNN。

优缺点与适用场景

优点:生成质量高、多样性好、训练稳定、可控性强、特别适合文生图。缺点:生成速度相对慢(要多步去噪)、训练和推理都很吃算力和显存。

适合场景:AI绘画和文生图(这是它的主战场)、图像编辑(局部重绘、扩图)、图像超分辨率、以及正在兴起的文生视频、文生3D、甚至AI生成音频等,扩散思想正被推广到越来越多的生成任务上。

它今天的地位:扩散模型是当前图像生成领域当之无愧的主力,你能想到的主流AI绘画产品,底层几乎都是它。它和上一篇的GAN,代表了生成式AI在图像上的两代主流技术。

作为一个技术人,我想借这一篇多说一句对生成式AI的看法。扩散模型让"创作"这件事的门槛大大降低了,不会画画的人也能生成惊艳的图,这确实令人兴奋。但它也带来了实实在在的冲击,画师、设计师、插画师这些职业感受到了压力,还有版权(模型训练用了谁的画)、真假难辨(和上一篇说的深度伪造一脉相承)等一系列问题。技术本身是中性的,它既是普通人表达创意的强大工具,也可能冲击一些人的饭碗、被滥用。我的态度是,与其焦虑或排斥,不如去理解它、驾驭它,把它当成放大自己创造力的工具。这也是我写这个系列的初心之一,看懂了原理,你才不会盲目恐慌,也才能想清楚怎么和这些技术共处、借它做成自己想做的事。

小结与承上启下

  • 扩散模型核心:先学会给图加噪毁掉(固定过程),再学会反向一步步去噪、从纯噪声雕出图像(这才是要学的)。
  • 绝妙比喻:像从大理石里雕出雕像,把本就蕴含其中的图像,通过一步步去掉多余噪声显现出来。
  • 强于GAN:训练稳定、质量高、多样性好、可控性强,代价是慢。
  • 文生图:靠条件引导加把文字变向量,让去噪朝符合描述的方向进行,这就是AI绘画听懂你话的原理。

到这里,让AI创造的两大生成模型(GAN和扩散)就讲完了。前面讲的模型,无论判断还是生成,大多是"给定输入、产出结果"的一锤子买卖。可还有一类问题,需要AI在一个环境里连续做决策、不断试错、追求长期回报,比如下棋、打游戏、机器人控制。下一篇我们讲强化学习,以及它如何被用来训练ChatGPT(RLHF)。

我们下一篇见。

延伸阅读

  • Hugging Face Diffusers 官方文档(本篇代码用的库):https://huggingface.co/docs/diffusers
  • 扩散模型DDPM原始论文《Denoising Diffusion Probabilistic Models》(Ho等,2020):https://arxiv.org/abs/2006.11239

(说明:以上为官方与经典公开资料地址,可能随版本调整,如打不开可用标题搜索。)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询