跳转至

2.StableHair论文

这是首个基于扩散模型的发型迁移框架,旨在解决现有方法(大多基于 GAN)在处理真实世界中复杂多样的发型时效果不佳的问题 。为了实现对任意发型稳健、高保真的迁移,同时保持人物身份和背景不变,作者设计了一个创新的两阶段流水线 (two-stage pipeline) 。第一阶段,通过一个Bald Converter将用户提供的源图片处理成光头状态,为后续生成提供基础 。第二阶段,利用Hair ExtractorLatent IdentityNet将参考发型画到光头图像上。

图像处理流程

1.Input

用户提供一张源图像(Source Image,即需要被换发的人)和一张参考图像(Reference Image,即提供目标发型)。

2.Convert to Bald State

源图像首先被送入一个训练好的Bald Converter。该转换器会移除源图像中的所有头发,生成一张保持了原始身份、表情和背景的Bald Proxy Image

3.Hair Transfer and Integration

Hair Extractor负责从参考图像中提取出发型的关键特征,如颜色、纹理、卷曲度、光泽等细节。Latent IdentityNet负责处理光头代理图像,确保在生成新头发的过程中,人物的面部特征、身份信息和背景环境得到严格保持不变。

上述两个模块提取出的特征被注入到主扩散模型(U-Net)的特定层中 。扩散模型从一个随机噪声开始,在这些特征的强力引导下,逐步去噪,最终生成一张既有参考发型、又保持了源人物身份的目标图像

alt text

细节

Latent ControlNet

ControlNet不直接输出一张完整的图像。它的输出是一组feature maps。ControlNet 内部有一个与主扩散模型U-Net结构相同的“可训练副本” 。当一个条件图像输入 ControlNet 后,这个可训练副本会逐层提取其特征。这些被提取出的特征图,就是 ControlNet 的输出。它们随后会被逐层地添加到主扩散模型(被锁定的 U-Net)的对应层中 。

标准的 ControlNet 接收的是像素空间的条件图像(如边缘图、姿态图)。作者发现其无法正常保持人物特征。所以在将条件图像(如光头图)送入ControlNet的可训练副本之前,先用一个VAE编码器将其从像素空间转换到潜空间。这样一来,主 U-Net 和作为控制器的 ControlNet 都在 同一个潜空间内操作,信息表示保持一致,从而完美解决了颜色偏差问题,实现了高度的内容一致性

  • 第一阶段,当 Latent ControlNet 作为Bald Converter工作时,它的条件图像是原始的源图像。因为它的任务是看着原始图像,然后生成一个对应的光头版本。
  • 第二阶段,当 Latent ControlNet 作为Latent IdentityNet工作时,它的条件图像是Bald Proxy Image。因为此时它的任务是确保最终生成的带新发型的人,其脸部和背景要和这个光头图像一模一样。

Hair Extractor

设计目的:为了能够从参考图中捕捉到尽可能丰富和精细的头发细节。

结构设计:它是一个可训练的 U-Net 副本(源自预训练的扩散模型)。当参考图像通过它时,其内部每一层自注意力模块的特征都会被“提取”出来 。这些包含了丰富头发细节的特征,随后会被注入到主生成U-Net中新增的Hair Cross-Attention layers里,作为生成新头发的精确指导。这种方式使得模型能够复刻极其复杂的发型。