HumanSD
热图引导去噪微调SD,实现精准人体骨骼姿态控制的图像生成模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
热图引导去噪微调SD,实现精准人体骨骼姿态控制的图像生成模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你对着 Midjourney 输入「一位正在跳舞的女性」时,AI 可能给你一个站得笔直的僵硬pose;当你想要「瑜伽运动员做倒立」时,骨骼结构更是经常翻车——这是所有文本引导图像生成模型的共同痛点:文本描述不了精确的人体姿态。
2023 年,IDEA(国际数字经济研究院)联合港中大发表 ICCV 论文并开源了 HumanSD,首次提出原生骨架引导扩散模型方法,通过热图引导去噪损失(Heatmap-guided Denoising Loss)微调 Stable Diffusion,在保持生成质量的同时实现精准的人体姿态控制。项目 GitHub 迅速获得 300+ ⭐,被 ICCV 2023 录用。
{}
此前业界的主流方案(如 ControlNet)采用双分支架构:一个分支处理姿态条件,另一个分支处理文本条件,两个分支的输出通过复杂的特征融合层拼接。这种方法存在两个根本性问题:
灾难性遗忘(Catastrophic Forgetting):双分支架构在微调时容易破坏原始 SD 的预训练知识,导致模型在某些文本描述下生成质量下降。研究者发现 ControlNet 在复杂文本场景下容易「忽略文字指令」,只保留姿态。
效率低下:两套独立的编码分支带来了 2 倍的计算开销,在推理时尤为明显。
HumanSD 提出了一个优雅的解决方案:不增加新分支,而是改造原有扩散过程的去噪目标。
具体来说,在 SD 的每一步去噪过程中,模型额外接收姿态热图(Pose Heatmap)作为条件输入。热图引导损失函数的核心思想是:在去噪过程中,强制模型的注意力机制在骨骼关键点附近关注姿态信息,同时保留在纹理、颜色、光影区域的文本引导能力。






图1-6 展示了 HumanSD 在多种场景下的生成效果: 从日常生活场景、数字艺术风格、到油画、影子戏、素描等多种艺术形式,HumanSD 均能在精确还原骨骼姿态的同时,保持极高的图像质量和风格一致性。
HumanSD 基于 Stable Diffusion v2.1 微调而来,核心技术栈包括:
在 MSCOCO 基准测试中,HumanSD 在骨骼对齐精度(AP)、图像质量(FID)和文本-图像一致性(CLIP Score)三个维度上均优于 ControlNet 和 T2I-Adapter。论文在 ICCV 2023 的评测结果显示:
HumanSD 的姿态控制精度(以骨架 IoU 衡量)比 ControlNet 提升了 12.3%,同时 FID 分数降低了 8.7%(越低越好),表明生成图像更加真实自然。
HumanSD 依赖特定的 Python 3.8.5 + PyTorch 1.12.1 + CUDA 11.3 组合,且需要安装 MMPose 姿态估计库。官方权重需要从 Google Drive 手动下载(总计约 15GB),包括:
项目提供了三种推理入口:
scripts/pose2img.py):传入文本提示和姿态 .npz 文件,快速生成单张图像scripts/gradio/pose2img.py):提供交互式界面,可在浏览器中拖拽上传姿态图或从预设中选择scripts/pose2img_metrics.py):支持同时对比 HumanSD、ControlNet、T2I-Adapter 的生成效果生成一张 512×512 图像约需 24GB 显存(FP16),推荐使用 RTX 3090 或 RTX 4090。单张生成时间在 RTX 3090 上约 15-20 秒(50 步 DDIM 采样)。
值得称道的是,HumanSD 还引入了两个子模块作为对比基准:ControlNet 和 T2I-Adapter。用户可以通过 git submodule 初始化后,在同一界面直观对比三种方案的效果差异,这一设计极大方便了学术研究者进行消融实验。
项目代码结构清晰,采用标准深度学习项目布局:
ldm/ # 核心扩散模型代码
models/diffusion/ # DDIM 采样器(已针对 HumanSD 定制)
modules/ # 注意力机制、EMA、扩散模块
data/ # 数据加载管道
scripts/ # 推理与评测脚本
gradio/ # Web UI 入口
pose2img.py # 核心推理脚本(含骨骼可视化)
txt2img.py # 纯文本生成参考实现
configs/ # YAML 配置文件(OmegaConf 格式)
humansd/ # HumanSD 专用配置
stable-diffusion/ # SD 基座配置
整体代码质量较高,注释规范,推理脚本与训练脚本分离良好。不足之处:缺少 Dockerfile,依赖版本较旧(PyTorch 1.12.1),对最新 GPU 架构(如 Hopper)的兼容性存在隐患。
24GB 显存门槛将大量个人开发者拒之门外。当前开源社区已有工作尝试通过量化(INT8/INT4)降低显存需求,但尚未官方支持。
HumanSD 的效果高度依赖 MMPose 的姿态检测精度。当输入图像中人物遮挡严重或光照极端时,姿态估计失败会直接导致生成质量崩溃。
对于群体场景(10 人以上),当前的自底向上姿态估计方法召回率明显下降,多人骨骼交叉混淆问题尚未根本解决。
项目使用 Stable Diffusion v2.1 作为基座,SD 2.1 本身因训练数据争议(LAION-5B 包含 NSFW 内容)存在法律风险的下游影响。
HumanSD 的意义不仅在于单个方法的性能提升,更在于它代表了一个重要方向:将姿态估计、图像生成、知识保持三个任务统一在一个扩散框架内。这一范式启发了后续大量工作,如骨骼引导的视频生成(AnimateDiff 的姿态扩展)、3D 人体生成等。
从增长趋势看,骨架引导的图像生成已成为 AI 生成内容(AIGC)领域的重要分支。ControlNet 的 30k+ ⭐ 和后续社区的数千个自定义姿态控制模型证明了这个方向的旺盛需求。HumanSD 在学术圈有独特价值,为研究者提供了精细可控的实验基准。
项目地址:https://github.com/IDEA-Research/HumanSD
论文链接:https://arxiv.org/abs/2304.04269
项目主页:https://idea-research.github.io/HumanSD/
许可证:Apache-2.0