生成摄影或数字艺术中常见分辨率的图像,例如1024x1024像素或更高(百万像素范围),对生成模型带来了重大挑战。在这些尺度下直接生成会占用大量GPU显存,大幅增加计算耗时,且常使训练不稳定。为克服这些障碍,已发展出几种方法,使利用先进的GAN和扩散模型技术生成高保真、高分辨率图像成为可能。运用渐进式和基于风格的架构回顾第2章,我们讨论了渐进式GAN增长(ProGAN)。这种方法通过在生成器和判别器中增加层来逐步提高训练期间的输出分辨率。虽然在达到1024x1024等分辨率时表现良好,但训练稳定性和架构复杂性在更高分辨率下可能成为制约因素。StyleGAN及其变体在此基础上构建,但引入了对高分辨率生成特别有益的架构改进:解耦的潜在空间: 映射网络将输入潜在变量$z$转换为中间潜在变量$w$。这个空间通常更少缠结,实现更好的风格控制和可能更平滑的插值,这间接有助于稳定性。自适应实例归一化(AdaIN): 通过AdaIN在每个分辨率级别注入风格信息($w$)允许对特征进行精细控制,而无需将风格信息通过主卷积骨干网络传递。这种分离有助于管理生成高频细节的复杂性。常量学习输入: 生成器从一个学习到的常量张量开始生成,而非潜在编码本身,为网络提供了一个稳定的根基。这些特性共同促成了StyleGAN比早期架构更稳定地生成高质量、高分辨率图像的能力。然而,在直接生成多百万像素分辨率图像时,即使是StyleGAN也面临显存和计算限制。基于块的生成另一种策略是在从高分辨率图像中提取的小块上训练生成模型。其核心是模型从这些块中学习与高分辨率相关的统计特性和纹理。训练: 一个GAN(通常带有专门的PatchGAN判别器,用于评估局部块的真实性)或扩散模型在例如256x256或512x512的图像块上进行训练。推理: 生成完整的高分辨率图像需要拼接或组合为不同空间位置生成的输出。这可以使用重叠的图像块和融合技术完成,或采用能够保证空间一致性的生成方法。基于块的方法主要困难在于保持全局连贯性并避免在块边界处出现可见的接缝或伪影。虽然对纹理和重复模式有效,但纯粹从图像块生成全局一致的结构(如人脸或复杂场景)具有挑战性。多尺度和级联式细化模型这些方法明确使用多个在不同分辨率下运行的模型或阶段,以构建最终的高分辨率输出。级联生成: 基础模型生成低分辨率图像(例如,64x64或128x128)。后续模型充当条件超分辨率网络,接收前一阶段的输出并进行放大,同时增加适合新分辨率的更精细细节。每个阶段仅侧重于学习与其特定尺度增长相关的细节。这可以通过GAN或扩散模型来实现。digraph G { rankdir=LR; node [shape=box, style=filled, color="#dee2e6", fontname="sans-serif"]; edge [fontname="sans-serif"]; Z [label="潜在噪声 Z", shape=ellipse, style=filled, color="#a5d8ff"]; Gen_Low [label="生成器\n(低分辨率)", style=filled, color="#bac8ff"]; Img_Low [label="图像 (低分辨率)\n例如, 128x128", shape=note, style=filled, color="#e9ecef"]; Upsample1 [label="上采样", shape=cds, style=filled, color="#99e9f2"]; Refine_Mid [label="细化模型 1\n(中分辨率)", style=filled, color="#a9e34b"]; Img_Mid [label="图像 (中分辨率)\n例如, 512x512", shape=note, style=filled, color="#e9ecef"]; Upsample2 [label="上采样", shape=cds, style=filled, color="#99e9f2"]; Refine_High [label="细化模型 2\n(高分辨率)", style=filled, color="#a9e34b"]; Img_High [label="图像 (高分辨率)\n例如, 1024x1024", shape=note, style=filled, color="#e9ecef"]; Z -> Gen_Low; Gen_Low -> Img_Low [label=" 生成 "]; Img_Low -> Upsample1; Upsample1 -> Refine_Mid [label=" 输入 "]; Refine_Mid -> Img_Mid [label=" 细化 "]; Img_Mid -> Upsample2; Upsample2 -> Refine_High [label=" 输入 "]; Refine_High -> Img_High [label=" 细化 "]; }一张图表,说明了用于高分辨率图像生成的级联细化流程。基础生成器创建一个低分辨率图像,该图像随后由在逐渐增加的分辨率下运行的专用模型进行顺序上采样和细化。优点: 这种模块化方法将高分辨率生成这项复杂任务分解开来。每个模型都在可控的分辨率增量下运行,从而可能提高训练稳定性,并允许为每个阶段优化不同的架构。缺点: 需要训练多个模型,可能增加总体训练时间和复杂性。如果早期阶段产生有缺陷的输出,则可能发生阶段间的错误传播。细化模型的条件机制需要仔细设计,这点很重要。潜在扩散模型 (LDMs)扩散模型(第4章)擅长生成高保真图像,但计算开销大,尤其是在高分辨率下经过多步的去噪过程。潜在扩散模型(LDMs)通过在较低维度的潜在空间中执行计算密集型扩散过程来解决此问题。架构: LDMs通常包括:一个自编码器(通常是VAE):用于将高分辨率图像压缩成紧凑的潜在表示并准确重建。编码器$E$将图像$x$映射到潜在变量$z = E(x)$,解码器$D$重建$\hat{x} = D(z)$。一个扩散模型:完全在自编码器学习到的潜在空间中进行训练。它学习反转应用于潜在编码$z$的扩散过程。生成过程:在潜在空间维度中采样随机噪声。使用仅在潜在空间中运行的已训练扩散模型来应用逆向扩散(去噪)过程。这会生成一个干净的潜在表示$z_{gen}$。使用预训练的解码器$D$将生成的潜在变量$z_{gen}$映射回高分辨率像素空间:$x_{gen} = D(z_{gen})$。digraph G { rankdir=LR; splines=ortho; node [shape=box, style=filled, fontname="sans-serif"]; edge [fontname="sans-serif"]; subgraph cluster_pixel { label = "像素空间 (高分辨率)"; style=filled; color="#f1f3f5"; node [style=filled, color="#e9ecef"]; RealImage [label="真实图像 (x)"]; GeneratedImage [label="生成图像 (x_gen)"]; } subgraph cluster_latent { label = "潜在空间 (低分辨率)"; style=filled; color="#e3fafc"; node [style=filled, color="#d0bfff"]; LatentCode [label="潜在编码 (z)"]; NoisyLatent [label="噪声潜在变量"]; GaussianNoise [label="高斯噪声", shape=ellipse]; GeneratedLatent [label="生成潜在变量 (z_gen)"]; } Encoder [label="编码器 E", shape=invhouse, style=filled, color="#a5d8ff"]; Decoder [label="解码器 D", shape=house, style=filled, color="#a5d8ff"]; Diffusion [label="正向扩散\n(仅训练)", shape=cds, style=filled, color="#ffc9c9"]; Denoising [label="反向扩散 / 去噪", shape=cds, style=filled, color="#96f2d7"]; RealImage -> Encoder [xlabel=" 编码 "]; Encoder -> LatentCode; LatentCode -> Diffusion [xlabel=" 添加噪声 "]; Diffusion -> NoisyLatent; GaussianNoise -> Denoising [xlabel=" 启动采样 "]; Denoising -> GeneratedLatent [xlabel=" 去噪 "]; GeneratedLatent -> Decoder [xlabel=" 解码 "]; Decoder -> GeneratedImage; // 用于布局的隐形边 edge [style=invis]; RealImage -> GeneratedImage; LatentCode -> GaussianNoise; NoisyLatent -> GeneratedLatent; }潜在扩散模型方法。编码器将高分辨率图像映射到潜在空间。扩散/去噪过程完全发生在这个计算成本较低的潜在空间中。解码器随后将生成的潜在编码映射回高分辨率像素空间。通过在空间维度上比像素空间小4倍、8倍甚至16倍的潜在空间中执行迭代去噪,LDMs大幅降低了计算需求,使扩散模型在消费级硬件上进行百万像素图像生成成为可能。自编码器的质量非常重要;它必须在潜在空间中捕获与感知相关的信息,以获得高质量的最终输出。策略组合通常,最先进的结果是通过结合这些策略实现的。例如:在级联细化框架中采用类似StyleGAN的生成器架构。采用潜在扩散生成基础分辨率(例如,256x256或512x512),然后使用单独的基于扩散或基于GAN的上采样器进一步细化到1024x1024。将高分辨率模型(级联式、LDM)条件化于其他模型的输出,例如文本嵌入(下一节会涉及)。计算现实无论采用何种策略,生成高分辨率图像仍然是计算密集型任务。训练这些模型通常需要多GPU配置、大量内存(包括系统内存和GPU显存)以及可观的训练时间(数天或数周)。梯度累积、混合精度训练以及可能的模型并行等技术成为从事高分辨率生成前沿工作的实践者不可或缺的工具。评估输出也需要仔细考量,因为像FID这样的指标在极高分辨率下可能会饱和或表现不同于较低分辨率,这使得定性评估和专用指标变得更为重要。