AIGC图像困局

AIGC图像困局

算法技术的历史,是"用小资源干大事"的心酸历。

在写深度学习优化器算法巧思速览之前其实本来计划是先写现在这篇的,只是那个时候手上热乎的思路还是优化器相关,所以这篇博文就延后到今天才写。

这个标题起得很大,真写起来,篇幅真的太长了,所以只能想到哪写到哪。

2012年,Alex Krizhevsky的AlexNet在ImageNet上达到的精度震惊了世界,而那个时候也只做了一件事就是在224x224的分辨率下识别一千类物体。

而十年后的今天,真的变化太大了,现在AI的发展真的是日新月异,但我们仍在为如何让模型输出高质量的1024×1024图片视频而绞尽脑汁。

这不是技术进步太慢,而是这其中的涉及到的技术难处比想象中更甚。


引言

刚入行时候,博主第一个图像任务是语义分割,也就是俗话说的抠图。

这个在博主其他文章也可能看到相关信息。

从那个时候起,就有一个毒瘤或者是技术顽疾让人深恶痛绝。

它就是分辨率,由于技术的局限性,也因为算力的局限性,我们只能在小分辨率的图像里进行训练,而当你想要适配高分辨率的时候,对不起,重训或者外挂传统算法去打补丁。

如果在抠图领域,最经典的问题就是抠发丝,因为如果分辨率过低,你是看不见头发的,更别谈抠发丝是一种苦哈哈的细活。

但是如果采用高分辨率,是看见发丝了,计算量却暴涨了。对于很多场景需要的“实时”抠图,只能跪了,因为单是训练的算力就不能接受了,更别提最终使用。

但是仍然存在一些所谓传统算法,可以为我们铺路,例如利用导向滤波进行后处理。因为既然我们有大分辨率的图片信息,那直接利用起来就好了,细节我们从大分辨率图片里找回来就是了。也可以作为一种先验辅助训练。

那个时期 resnet, unet 百家争鸣。

后来gan的出现,迎来了图像生成的大爆发。

而图像生成这个事,跟抠图,抠发丝是不一样的,因为它是完全生成新的图片,或者生成局部再贴回原图,几乎没有任何原始信息可以合理地补充,毕竟生成的那个区域已经面目全非了。

而gan带来两层挑战,它需要几乎同时或者交替训练两个模型,一个负责生成,一个负责鉴别。这里的计算量就已经不小了,如果还要支持更大的分辨率,显存就岌岌可危了,当然gan在早期提出的时候本身训练也是不稳定的,后来为了稳定训练才提出来很多正则化惩罚以及归一化的思路。

那个时期,你不gan不行。

 

而当年最重要的事情就是transformer的提出。

[1706.03762] Attention Is All You Need

一直到了2022年Stable Diffusion彻底引暴了图像生成。

也就是新冠三年疫情的最后一年末。

所以一切便从Stable Diffusion开始说起。

关于Stable Diffusion的技术原理补充,可移步大话AI绘画技术原理与算法优化 一览。

分辨率是AIGC的阵痛

1.1 算力的三次方诅咒

分辨率对计算资源的吞噬是非线性的:

  • 像素维度:分辨率×2 → 像素数×4
  • Attention维度:序列长度×4 → 计算量×16(O(N²))
  • 内存维度:激活值×4 → 显存占用×4(中间状态爆炸)

综合效应:分辨率×2 → 总成本×64

这意味着512×512到1024×1024不是"两倍工作量",而是64倍

1.2 数据的沙漠

LAION-5B的统计真相:

  • 短边<512像素的图像:87%
  • 短边<1024像素的图像:98%
  • 短边>2048像素的图像:0.3%

高分辨率图像不仅少,而且分布偏移。4K照片的拍摄设备、构图习惯、后期处理流程与手机快照完全不同。模型在512×512上学习到的"世界知识",在4K上可能完全失效。

1.3 频率的牢笼

奈奎斯特采样定理在深度学习中的残酷映射:

训练分辨率决定了模型能学习的最高频率。

512×512的模型,其latent空间通常是64×64。这意味着任何小于8像素的细节都无法被表达——不是模糊,是根本不存在。模型从未见过更细的纹理,它不知道"毛孔"应该长什么样。

1.4 第一个核心困局

训练分辨率是模型认知的"光速上限",推理分辨率是用户需求的"超光速幻想"。

所有架构演化,都是在这个物理限制下的工程妥协。


SD1.5:U-Net的困境,只能打补丁了。(2022)

“第一次把扩散模型带到可用的工业级质量”

2.1 架构的先天残疾

SD1.5的U-Net架构有三个致命设计:

Receptive Field的硬边界

U-Net的encoder-decoder结构,下采样到8×8时,每个特征点理论上能看到64×64的原始区域。但对于2048×2048的图像,64×64只是3%的画面。模型根本看不见全局,只能凭统计规律猜测。

Latent的密度陷阱

KL-VAE将512×512压缩到64×64×4,每个latent向量负责8×8像素的重建。这意味着:

  • 纹理:可学习(重复模式)
  • 结构:可学习(大尺度形状)
  • 精确几何:不可学习(亚像素级定位)

Attention的局部性

U-Net的self-attention只在同分辨率特征图内进行,跨尺度的信息融合依赖skip connection的通道拼接。这种层次化而非全局化的设计,让SD1.5擅长"画得像",不擅长"画得对"。

2.2 推理端的绝望补救

面对用户的4K需求,SD1.5只能诉事后工程:

方案A:插值——数学的暴力

双三次插值将64×64 latent拉到256×256再解码。新像素完全由卷积核权重决定,零语义理解

结果:建筑线条弯曲,文字无法辨认,人脸变成橡皮泥。

方案B:超分网络——幻觉的代价

ESRGAN作为后置处理器,用对抗学习"编造"高频细节。

结果:砖墙纹理逼真但重复,皮肤毛孔存在但位置错误,统计上合理,物理上荒谬

方案C:Tiled生成——一致性的献祭

将4K画布切成16个512×512 tiles独立生成,切片堆叠。

结果:每个tile质量完美,拼接处光照突变,人物长出四个耳朵。

2.3 SD1.5的本质 verdict

SD1.5从未"理解"过高分辨率,它只是用低分辨率的认知,通过工程技巧伪装成高分辨率。

这种伪装在:

  • 自然风景(低频主导):可接受
  • 人脸特写(结构敏感):崩坏
  • 文字排版(精确几何):灾难

新困局产生:U-Net的局部性无法突破,必须换架构。VAE的一致性也是崩坏的。

所以 SD1.5 的高分辨率不是“生成”,而是“插值 + 幻觉”。


SDXL:分工的艺术(2023)

补上了 SD1.5 在“高频细节”和“结构一致性”上的缺口

3.1 架构层面的第一次革命

SDXL没有抛弃U-Net,但做了结构性分工

更密的Latent空间

从64×64提升到更精细的表征(实际实现为更高效的VAE压缩),每个latent向量负责的像素区域减小,频率上限提升约40%

这不是简单的"放大latent",而是重新训练VAE,让编码器学习更高效的语义压缩——用同样的比特数表达更多信息。

Base + Refiner的双阶段流水线

核心洞察:结构和纹理是不同频率的现象,应该用不同模型处理

  • Base模型(U-Net):在相对低分辨率下运行,负责构图、语义、大尺度结构
  • Refiner模型(另一个U-Net):接收Base的输出作为条件,负责高频细节、纹理、局部对比度

这类似于传统图像处理中的拉普拉斯金字塔:Base处理低频,Refiner处理高频残差。

原生1024与可外推性

SDXL的训练分辨率达到1024×1024,且通过改进的位置编码(插值型),可以外推到2048×2048仍保持可用质量。

3.2 为什么分工有效?

从信号处理视角,SDXL的分解是频率解耦

图像 = 低频结构(可压缩)+ 高频细节(可预测)
      ↓                ↓
   Base模型          Refiner模型
  (全局理解)      (局部生成)

Base只需要"知道"画面有张脸,Refiner负责"画"出毛孔。这种解耦让:

  • Base的attention负担减轻(分辨率固定)
  • Refiner的生成空间受限(已有结构指导),幻觉减少

3.3 SDXL的新边界

仍然无法突破的墙

  • U-Net的receptive field问题依旧,只是被Refiner部分缓解
  • 两阶段串行,推理时间×2
  • 外推到4K时,Refiner的局部性导致细节与结构脱节(如头发丝漂浮在空中)

新困局产生:U-Net的局部性是天生的,必须彻底换架构。


FLUX:Transformer的全局视野(2024)

补上了 U-Net 架构无法突破的“全局视野”缺口

4.1 为什么必须是DiT?

FLUX的架构切换(U-Net → DiT)不是追热点,而是物理必然

Attention的全局性

DiT的self-attention是全连接的:每个patch能看见所有其他patch。对于2048×2048的图像(256×256 patches),这意味着任意两点间的信息传递只需一层

对比U-Net:信息从左上角传到右下角需要经过4次下采样-上采样循环,每次都有信息损失。

Scaling的友好性

Transformer的性能随计算量可预测提升(scaling law)。U-Net的卷积结构在达到一定深度后收益递减,而DiT可以通过增加层数、头数、维度持续改进。

位置编码的外推性

FLUX采用RoPE(旋转位置编码),其设计本质是相对位置编码。这使得:

  • 训练时:模型学习的是"距离为k的 patches 如何交互"
  • 推理时:任意距离的交互都遵循同一函数,自然外推

4.2 FLUX的三重突破

更密的Latent

相比SDXL,FLUX的latent空间进一步压缩效率提升,在同等计算预算下能表达更高频率。

单阶段端到端

不再需要SDXL的Base+Refiner分工,单个DiT同时处理结构和细节。这得益于attention的全局性——模型自己学会了在需要时关注全局,在需要时聚焦局部

Tiled生成的质变

FLUX的tiled效果远超SDXL,因为:

  • 边界patch的attention可以看到相邻tile的上下文(若实现为 overlapping attention)
  • 光照、风格的统计特性由全局attention隐式约束,无需显式同步

4.3 FLUX的物理极限

Attention²的诅咒依旧

DiT解决了U-Net的局部性,但没有解决计算复杂度。2048×2048的图像在latent空间为256×256,attention矩阵大小为65536×65536,单精度存储需16GB,计算不可行。

单尺度的频率天花板

FLUX仍然是单尺度latent。虽然比SDXL更密,但固定的压缩比意味着频率上限固定。想要真正的4K细节,必须接受更大的latent,进而触发显存爆炸。

新困局产生:全局性有了,但算力不够;想要更密latent,但内存不够。需要更高效的注意力多尺度架构


Z-Image:轻量与多尺度的平衡(2024-2025)

“成本、速度、落地”

5.1 阿里的工程判断

Z-Image的设计哲学与FLUX不同:

不是"更大更强",而是"刚好够用,极致高效"。

这是基于阿里云的产品场景:

  • 淘宝商品图:需要1024-2048,但要求结构稳定(不能变形)、推理快速(实时生成)
  • 钉钉文档插图:需要轻量部署
  • 通义APP:需要低功耗

5.2 架构层面的创新

轻量DiT

比FLUX更少的层数、更小的维度:

  • 浅层:宽attention,捕获全局
  • 深层:窄attention+MLP,细化局部

这种异构设计让同样计算量下,有效receptive field更大。

多尺度特征融合(核心创新)

Z-Image不依赖单尺度latent,而是在DiT内部显式维护多分辨率特征

输入图像 → 多尺度编码(1×, 1/2×, 1/4×, 1/8×)
            ↓
      跨尺度attention(每个尺度能看到其他尺度)
            ↓
      渐进式上采样 + 特征融合
            ↓
      输出

这类似于传统计算机视觉中的图像金字塔,但完全可学习、端到端训练。

效果

  • 高频:从1×尺度获取
  • 结构:从1/8×尺度获取
  • 一致性:跨尺度attention保证

高效注意力变体

采用局部-全局混合attention

  • 局部窗口:计算密集型,但O(N)复杂度
  • 全局token:可学习的"汇总"token,数量固定(如64个),与图像尺寸无关

这让Z-Image的显存占用与分辨率线性相关,而非平方相关。

5.3 Z-Image的定位

维度Z-ImageFLUXSDXL
设计目标 产品落地 质量极限 工业稳定
架构 轻量异构DiT 标准DiT U-Net分工
多尺度 显式融合 隐式单尺度 两阶段分工
Attention 局部-全局混合 标准全局 局部层次
外推能力 强(2K-4K) 很强(4K+) 弱(<2K)
推理速度 最快 中等 最慢(双阶段)
工程成本 最低
适用场景 实时生成 专业创作 传统工业

5.4 Z-Image的妥协

为了效率牺牲的质量

  • 极端复杂场景(如拥挤街道)的全局一致性弱于FLUX
  • 最高频率细节(如毛发、织物纹理)不如FLUX真实
  • 艺术性、创造力略逊于大规模DiT

但这是正确的工程选择

对于90%的商业场景,"90分质量、100分速度"比"100分质量、50分速度"更有价值。


位置编码演化的总览

除了主要架构的变化之外,还有语义模块位置编码的演化。

因为

位置编码的演化,就是 AIGC 模型空间认知能力的演化。

SD1.5 靠卷积“猜位置”,SDXL 开始显式编码位置,FLUX 建立了可外推的全局坐标系,而 Z-Image 则在工程成本下构建了多尺度的高效位置体系。

高分辨率生成的突破,不仅来自更大的模型或更强的 attention,更来自“模型终于知道自己在画布的哪里”。

代际架构空间位置编码时间位置编码文本位置编码特点
SD1.5 U-Net 无显式 2D PE(卷积隐式) sin-cos CLIP 1D 局部性强,无法外推
SDXL U-Net++ 显式 2D sin-cos sin-cos++ 双编码器 1D 多尺度增强,但仍局部主导
FLUX DiT 2D RoPE(可外推) RoPE/sin-cos Transformer 1D 真正的全局坐标系
Z-Image 轻量 DiT 多尺度 + 局部相对 + 全局抽象 sin-cos Transformer 1D 工程最优,线性成本


回顾四代架构:

  • SD1.5(U-Net):证明了扩散模型可行,但暴露了局部性局限
  • SDXL(U-Net+分工):用工程分工绕过局限,但复杂度爆炸
  • FLUX(DiT):用Transformer解决局部性,但算力瓶颈显现
  • Z-Image(轻量DiT+多尺度):用效率优化平衡质量与成本

每一步都不是"更好"的简单替代,而是在约束条件下的当前最优

  • SD1.5:低算力时代的最优

  • SDXL:高频细节的最优

  • FLUX:全局一致性的最优

  • Z-Image:成本与落地性的最优

这或许是AI工程化的终极真理:

没有最好的架构,只有最合适的架构。

 

把一些成熟的传统算法,适配到现有的模型架构里去,永远不会过时。

之所以说传统算法永不过时,并不是怀旧,而是工程现实。

无论模型架构如何迭代,分辨率、算力、频率上限这些物理约束始终横在那里——它们不会因为你换了 U‑Net、换了 DiT、换了多尺度结构就自动消失。

而传统算法恰恰能在这些“结构性短板”上提供一种稳定、可控、可解释的补偿路径:

不依赖大规模数据,不受模型形态限制,却能在关键环节把模型无法表达的细节补回来。

基于这样的判断,博主开始尝试把传统图像处理重新嵌入到现代 AIGC 推理链路中,

探索一种不依赖重训、不依赖超分、却能真正吃下高分辨率的方案。

这条路并不轻松,但确实走通了。

为了让模型在高分辨率下保持结构稳定、细节可信,博主实现了一套纯传统算法的分辨率适配方案,

可以作为插件无缝接入各种开源模型架构。

虽然还不够完美,但已经证明这条路线是可行的,而且潜力巨大。

例如 GFPGAN  的原生分辨率只有 512×512,但通过这套方案,不需要超分、不需要重训,就能稳定支持 4K 人脸修复

,质量和成本都在可控范围内。

 facefusion LivePortrait 等模型同样能直接受益。

 

在训练场景下,它可以作为结构先验;

在推理场景下,它可以作为轻量插件。

理论上再做一次二次微调,效果会更进一步。

这套方案也可以写成纯 C 的算法库部署到移动端,只是工作量巨大,目前精力有限,还没完全落地。

但方向是明确的:传统算法与现代模型的结合,仍然有很大的工程空间。

一起努力吧。


博主之前为了把推理性能压榨到极限,也做了不少“苦活”.

特别是把移植到TF,然后用TF写个猥琐发育的Chunked Flash Attention in Keras

那时Flash Attention 还没发布,

而TF这个版本也是后来整理开源了,

毕竟我已经抛弃TensorFlow/Keras转投PyTorch了。

SD1.5 时代,为了推理速度和显存压到极限,博主做了很多“优化”(苦活):

TO C 性价比为王:

  • 权重预计算(减少重复计算)

  • Flash Attention(降低 attention 显存)

  • FP16/INT8 量化(端侧可运行)

  • 跨框架迁移(TF ↔ Torch ↔ ONNX ↔ TFLite)

  • 端侧蒸馏 Encoder,实现 1 秒级推理

  • 多模型并行部署,显存复用

后来回到广东,给某游戏大厂做了大量游戏场景的定制化 LoRA,彻底拥抱 PyTorch。

TO B 质量为王

  • 超高分辨率 显存要挤到极限

  • 干净的脏 素材细节要求极高

  • 高保真生成 设定一致性必须严格

  • 语义可控 小数据训练,泛化性不能丢

但无论 TO C 还是 TO B,问题本质都一样:

算法研发,就是用小资源干大事。

在这之间有些算法做出来了,但没开源。

后来大厂开源了他们的版本,打法粗暴,一地鸡毛。

但无可厚非,毕竟这些年博主从开源项目中也学到了不少。

只是在那时就意识到:

  • 不跟大厂硬钢 → 拿不到资源

  • 跟在大厂后面 → 肉汤喝不到,锅还被砸

也是下了决心,选择了裸辞。

不再关注战场发生什么,只问自己:

我想做什么,想达成什么。

现在回头看,选择是对的,但路还很长,还得继续推进。

以上,仅以此文共勉之。

若有各种其他问题可以通过以下方式联系博主交流学习。

微信: Dbgmonks
QQ: 200759103
邮箱: gaozhihan@vip.qq.com

注: 不注明来意者一律拒绝。

posted @ 2026-03-02 18:26  cpuimage  阅读(28)  评论(0)    收藏  举报