ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

See-through核心实现原理(一):透明图层扩散LayerDiff 3D与TransparentVAE全解

See-through核心实现原理(一):透明图层扩散LayerDiff 3D与TransparentVAE全解 See-through核心实现原理一透明图层扩散LayerDiff 3D与TransparentVAE全解【免费下载链接】see-throughSingle-image Layer Decomposition for Anime Characters (SIGGRAPH 2026 Conference Paper)项目地址: https://gitcode.com/gh_mirrors/se/see-throughSee-through 是一个将单张动漫插画自动分解为多张透明图层的开源项目SIGGRAPH 2026 论文其核心由两个关键模块驱动负责画出透明图层的LayerDiff 3D扩散模型以及负责读懂与写出透明通道的Transparent VAE。本文将用尽量直白的方式带你完整理解这套动漫角色图层分解Layer Decomposition系统的实现原理。️ 先看效果一张图如何变成 2.5D 模型素材See-through 的主管线会把一张静态动漫立绘分解为最多23 个语义图层——头发、脸、眼睛、衣服、配饰等每个图层都是已补全遮挡区域的透明 PNG并附带推断好的绘制顺序最终导出为分层 PSD 文件可直接用于 Live2D 风格的 2.5D 动画制作。下图是仓库自带的测试样图它会被管线逐层剥开 核心难题为什么普通扩散模型画不了透明图层在深入两个组件之前先理解难点所在标准 VAE 只认识 RGB。SDXL 的 VAE 输入输出都是 3 通道遇到透明像素时透明区域的颜色是任意的模型不知道该编码什么透明区域的像素值没有唯一正确答案。同一张半透明图层透明部分填黑或填白编码结果完全不同图层之间有遮挡关系。头发在脸前、手在衣服后——生成模型必须理解前后景才能为每张被遮挡的图层补全被盖住的部分。See-through 的解法是把这两个难题拆给两个专用组件Transparent VAE改造编码/解码环节让 RGBA 透明图可以无损进入扩散模型的隐空间LayerDiff 3D在 SDXL 扩散主干上扩展出层间注意力同时生成多个相互一致的透明图层。 LayerDiff 3D把图层堆叠当成时间序列LayerDiff 3D 继承自开源项目 LayerDiffuse 的思想但做了一个关键改造把多张图层叠起来的顺序类比成视频的时间帧——背景是第 0 帧前景图层依次是第 1、2、3 帧……这样一来视频扩散模型里现成的跨帧注意力机制就天然变成了跨图层注意力。从 2D 到 3D 的三段式训练项目在 training/README.md 中明确了两段模型族共用的三阶段训练流程train_layerdiff.py -- cvt_layerdiff2d_to_3d.py -- train_layerdiff3d.py (2D 图层模型) (UNet 权重 2D→3D 转换) (3D 图层模型)这种先训 2D、再转换权重、最后精调 3D的路线比直接训练 3D 模型省得多也更容易稳定收敛。对应的训练配置见 training/configs/test_layerdiff3d.yaml。3D 主干里的跨帧注意力3D 版本的核心代码位于 common/modules/layerdiffuse/layerdiff3d.py它基于 diffusers 的时空 UNet 构建并在中间块插入了自研的跨帧注意力。真正的层间通信发生在 common/modules/layerdiffuse/transformer3d.py 的CrossFrameTransformerBlock中它让第 N 层比如脸在生成时能看到第 N-1 层比如头发的特征时间维度上的 Transformer 块按步长 2 稀疏插入见 transformer3d.py#L298-L304在效果和显存开销之间取得平衡。这正是遮挡补全能力来源当前图层被盖住的区域模型参考相邻图层的上下文来脑补出合理内容。采样与去噪DPM 2M 求解器推理时模型通过一套自定义的 kdiffusion SDXL 流水线驱动去噪求解器为 DPM 2M实现见 diffusers_kdiffusion_sdxl.py#L31流水线主类见 diffusers_kdiffusion_sdxl.py#L57。相比默认采样器它在相同步数下出图更干净适合多图层这种对边缘一致性要求极高的任务。 TransparentVAE让 VAE 学会透明通道这是整个项目最精巧的设计。它的思路是不改动 SDXL 原版 VAE 的任何权重只在外面套两个轻量的可学习模块负责透明信息的进出。编码端把 alpha 通道注入隐空间编码器实现在 common/modules/layerdiffuse/vae.py#L276 的TransparentVAEEncoder流程分三步透明区域填色把 RGBA 图的透明部分先用 RGB 颜色填充pad_rgb得到一张完整的 RGB 图交给原版 SDXL VAE 正常编码得到一个高斯隐变量分布学习透明偏移一个小型卷积网络 LatentTransparencyOffsetEncoder 接收完整 ARGB 四通道输入输出一个 4 通道的偏移量确定性采样用偏移量直接扰动高斯分布采样点vae.py#L175-L178 的dist_sample_deterministic而不是随机采样。代码里还有一个有趣的细节偏移量乘以一个alpha300的缩放系数vae.py#L283-L284注释说明这是借鉴 LoRA 的 alpha——防止零初始化时输出过小让透明信息真正在隐空间中占得住位置。解码端小 UNet 还原 alpha RGB解码器 TransparentVAEDecoder 内嵌了一个小型 UNet10241024×1024 像素级3 通道进、4 通道出它同时参考原版 VAE 解码出的 RGB 像素sd_vae.decode(latent)4 通道隐变量本身然后估计出缺失的 alpha 通道和前景 RGB还原出完整 RGBA 图层vae.py#L235-L273。解码时还用了测试时增强TTA对输入做翻转/旋转的多视角前向再取中位数vae.py#L199-L233用少量算力换取边缘更锐利、透明度更稳的结果。训练损失感知损失为主透明 VAE 的训练脚本为 training/train/train_vae.py损失函数定义在 training/train/loss_vae.py——采用LPIPS ConvNeXt 感知损失的组合。因为像素级 L1/L2 对透明边缘的微小偏差并不敏感而感知损失更贴近人眼判断这正是透明边缘质量的关键。⚙️ 完整推理流水线从 PNG 到 PSD把所有组件串起来的主脚本是 inference/scripts/inference_psd.py其执行逻辑为输入单张插画 → SAM 系列标注器分割头发/脸/身体等语义部件 → Transparent VAE 编码部件图层 → LayerDiff 3D 扩散生成互相一致的透明图层默认模型 seethroughv0.0.2_layerdiff3d见 inference_psd.py#L26 → Marigold 伪深度估计推断前后遮挡顺序 → 分层合成导出 ≤23 层的 PSD 文件默认 bf16 精度下约需 12–16 GB 显存8 GB 显存的设备可以使用 NF4 量化管线inference_psd_quantized.py或块交换管线inference_psd_blockswap.py质量损失极小PSNR ~30 dB、SSIM ~0.96。 源码导航速查模块路径作用3D 时空 UNet 主干common/modules/layerdiffuse/layerdiff3d.pyLayerDiff 3D 的扩散主干跨帧 Transformercommon/modules/layerdiffuse/transformer3d.py层间注意力的核心透明 VAE 编解码器common/modules/layerdiffuse/vae.pyRGBA 隐空间进出采样流水线common/modules/layerdiffuse/diffusers_kdiffusion_sdxl.pySDXL kdiffusion 推理2D→3D 权重转换training/scripts/cvt_layerdiff2d_to_3d.py三阶段训练的中间环节3D 模型训练training/train/train_layerdiff3d.py多卡 DeepSpeed 训练透明 VAE 训练training/train/train_vae.py感知损失训练主推理管线inference/scripts/inference_psd.py端到端 PSD 输出✅ 小结See-through 的两个核心设计可以一句话概括LayerDiff 3D把图层堆叠重解释为时间序列用现成的视频扩散跨帧注意力解决多图层一致生成与遮挡补全Transparent VAE用轻量外挂 确定性偏移的方式让 RGB 原生的 SDXL VAE无损承载 alpha 通道且零改动复用预训练权重。这种借力现有大模型骨架 小模块注入新能力的工程思路对想复现类似透明图层分解功能的开发者非常有参考价值。下一篇我们将深入 Marigold 伪深度估计与 23 类身体部件标签系统看看图层排序是如何被推断出来的。【免费下载链接】see-throughSingle-image Layer Decomposition for Anime Characters (SIGGRAPH 2026 Conference Paper)项目地址: https://gitcode.com/gh_mirrors/se/see-through创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表