ARTICLE DETAIL

资讯详情

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

块移除蒸馏揭秘:SDXS 如何把 U-Net 压缩 70% 仍保持画质

块移除蒸馏揭秘:SDXS 如何把 U-Net 压缩 70% 仍保持画质 块移除蒸馏揭秘SDXS 如何把 U-Net 压缩 70% 仍保持画质【免费下载链接】sdxsSDXS: Real-Time One-Step Latent Diffusion Models with Image Conditions项目地址: https://gitcode.com/gh_mirrors/sd/sdxs生成一张图要等多久传统扩散模型往往要十几秒而 SDXS 项目借助块移除蒸馏Block Removal Distillation这一核心技巧将主干网络 U-Net 压缩约 70%画质却几乎不掉。SDXS 是一套面向实时场景的一步生成扩散模型方案能在单卡上以 100 FPS 输出 512×512 图像、以 30 FPS 输出 1024×1024 图像。本文就用最通俗的方式为你拆解块移除蒸馏的原理、实测效果与上手方法。上图同样输入热气球峡谷提示词左侧是 SDXL 多步采样的结果右侧是 SDXS-1024 一步生成的多张图片画质不相上下。为什么扩散模型出图这么慢先认识 U-Net 这个大块头扩散模型的灵魂是 U-Net——一个负责逐级去噪的卷积网络参数量动辄上亿、体积以 GB 计。更麻烦的是传统方法必须迭代 20~50 步才能出图每一步都要完整跑一遍庞大的 U-Net再加上不算轻巧的 VAE 解码器一张图等上十几秒是家常便饭。要让出图变快无非三条路压缩 U-Net、减少采样步数、轻量化解码器。SDXS 的厉害之处在于它把三条路同时走通了而其中最硬核的一招就是块移除蒸馏。块移除蒸馏是什么给 U-Net 做一次减脂手术 知识蒸馏的思路是让一个大而全的教师模型去教会一个小而快的学生模型。块移除蒸馏则把这一步做到了极致——学生 U-Net 不是从零设计的而是直接从原版 U-Net 上切除约 70% 的网络块包括部分 Down/Up 采样块与注意力块留下一个紧凑的骨架。图注蒸馏框架由解码器蒸馏、U-Net 蒸馏、ControlNet 蒸馏三部分组成学生模型在教师模型的引导下逐步对齐。被切掉的块正是蒸馏要补课的地方。训练时学生 U-Net 以教师 U-Net 的输出为标准答案通过蒸馏损失不断逼近把被删除块承载的语义知识吸收回来。因为骨架源于原网络学生与教师天然同构蒸馏效率远高于凭空训练一个全新的小模型。画质不减的秘诀特征匹配损失让压缩 U-Net 学到精髓只模仿最终输出学生网络容易学个皮毛。为此SDXS 引入了特征匹配损失Feature Matching Loss不仅要求学生与教师的最终结果一致还要求它们中间层的特征也尽量对齐——相当于学生照着教师的解题过程一步步模仿而不是只抄答案。图注左为多步教师引导右为在线/离线模型的 Diff-Instruct 训练配合特征匹配损失实现一步生成。正是这一设计让瘦身约 70% 的 U-Net 依旧能理解复杂提示词、还原细腻细节这也是压缩后画质不掉的关键所在。实测速度U-Net 压缩 70% 后出图快了多少⚡️块移除蒸馏带来的收益立竿见影SDXS-512512×512 图像约100 FPS比 SD v1.5 快约30 倍SDXS-10241024×1024 图像约30 FPS比 SDXL 快约60 倍。图注整条推理链路延迟从 512ms 降到 6.3ms、从 1792ms 降到 24ms速度提升肉眼可见。如果把出图预算限定为 1 秒SDXL 只能跑 16 步、得到一张略显模糊的图而 SDXS-1024 可以输出 30 张清晰图片。这种量级的速度差距正是实时应用最需要的。画质对比1 步生成 vs 16 步生成真的有差别吗空口无凭直接看对比图。下面这张图横向比较了 6 个模型在 5 组提示词下的表现其中 SDXS 系列**仅用 1 步1 NFE**出图。图注狮子、汽车、雨中老人、热气球、湖景五组场景中SDXS-512 一步生成的结果与 SD v1.5 十六步生成相当提示词跟随能力甚至更优。结论很直观压缩后的 U-Net 1 步采样画质依然能打。这也解释了为什么 SDXS 敢把实时两个字写进项目名。不止 U-NetSDXS 加速的三板斧 块移除蒸馏只是第一板斧SDXS 还配齐了另外两招轻量解码器蒸馏训练一个极轻量的图像解码器Tiny VAE用输出蒸馏损失 GAN 损失模仿原版 VAE 解码器参数从 0.87B 降到 0.32B显存占用大减一步采样把多步采样的轨迹拉直再用特征匹配损失把多步模型快速微调成单步模型采样步数从几十步直接降到 1 步块移除蒸馏压缩 U-Net如上文所述让模型更小、推理更快。三步叠加最终换来的是小模型、少步数、快解码的实时生成全链路。从文生图到图生图ControlNet 也能用块移除蒸馏更妙的是这套蒸馏策略还能无缝扩展到ControlNet支持 Canny 边缘、深度图、草图等图像条件控制实现高效的图生图Image-to-Image迁移。图注输入黑白轮廓或灰度控制图SDXS 即可按结构生成细节丰富的成图控制信息被完整保留。例如项目自带的素描演示demo_sketch.py你随手画几笔草图SDXS 就能实时补全成写实、动漫、像素风等任意风格的成品图。快速上手三步跑通 SDXS 实时生成 demo 想亲自体验块移除蒸馏的成果只需三步git clone https://gitcode.com/gh_mirrors/sd/sdxs cd sdxs conda create -n sdxs python3.10 -y conda activate sdxs pip install -r requirements.txt推荐环境Python 3.10 PyTorch 2.2.1 CUDA 11.8。装好后直接运行python demo.py—— 文生图 demo512×512一步出图python demo_anime.py—— 动漫风格文生图基于 LoRApython demo_sketch.py—— 素描转图像 demo基于 ControlNet。三个 demo 都基于 Gradio 构建浏览器打开即用界面里还能切换 Tiny/Large VAE 与精度类型在速度与画质之间自由取舍。依赖清单见requirements.txt每个 demo 的核心逻辑都很短比如demo.py中调用管线时只需设置num_inference_steps1一步出图就是这么简单。总结块移除蒸馏用切除约 70% 网络块 特征匹配蒸馏补课的组合拳让 SDXS 在保持画质的同时把 U-Net 压缩约 70%再叠加轻量 VAE 与一步采样最终实现 100 FPS 级别的实时出图。对于想部署实时图像生成、或在低算力设备上跑扩散模型的开发者来说这套思路非常值得参考与复现。【免费下载链接】sdxsSDXS: Real-Time One-Step Latent Diffusion Models with Image Conditions项目地址: https://gitcode.com/gh_mirrors/sd/sdxs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表