HumanSD

HumanSD

基于骨骼引导的人体图像生成模型

HumanSD是一个基于骨骼引导的扩散模型,用于生成可控的人体图像。该模型通过热图引导去噪损失对稳定扩散模型进行微调,增强了骨骼条件的控制能力,同时减轻了灾难性遗忘。HumanSD在三个大规模人体数据集上训练,其中两个是新建立的。相比现有方法,HumanSD在复杂姿势、绘画风格、多人场景和细节方面表现更佳。

HumanSD人物图像生成骨架引导扩散模型Stable DiffusionGithub开源项目

HumanSD


本仓库包含了ICCV2023论文的实现:

HumanSD:一种基于骨架引导的原生人体图像生成扩散模型 [项目主页] [论文] [代码] [视频] [数据] <br> Xuan Ju<sup>∗12</sup>, Ailing Zeng<sup>∗1</sup>, Chenchen Zhao<sup>∗2</sup>, Jianan Wang<sup>1</sup>, Lei Zhang<sup>1</sup>, Qiang Xu<sup>2</sup><br> <sup></sup> 共同第一作者 <sup>1</sup>国际数字经济研究院 <sup>2</sup>香港中文大学

在这项工作中,我们提出了一种用于可控人体图像生成的原生骨架引导扩散模型HumanSD。与使用双分支扩散进行图像编辑不同,我们使用新颖的热图引导去噪损失对原始SD模型进行微调。这种策略在模型训练过程中有效且高效地增强了给定的骨架条件,同时缓解了灾难性遗忘效应。HumanSD在三个大规模的人体中心数据集上进行微调,这些数据集包含文本-图像-姿势信息,其中两个数据集是本工作中建立的。


<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/a34ecd6f-3168-4ae2-a454-0432952cf718.png" width="95%"> </div>
  • (a) 预训练的无姿势文本引导稳定扩散(SD)的生成结果
  • (b) 作为ControlNet和我们提出的HumanSD的条件的姿势骨架图像
  • (c) ControlNet的生成结果
  • (d) HumanSD(我们的方法)的生成结果。ControlNet和HumanSD同时接收文本和姿势条件。

HumanSD在以下方面展现了其优势:(I)具有挑战性的姿势,(II)准确的绘画风格,(III)姿势控制能力,(IV)多人场景,以及(V)精细的细节。

目录

待办事项

新闻!!我们的论文已被ICCV2023接收!训练代码已发布。

  • 发布推理代码和预训练模型
  • 发布Gradio UI演示
  • 公开训练数据(LAION-Human)
  • 发布训练代码

模型概览

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/db7e228a-2880-48a4-bef0-5484ce041875.png" width="95%"> </div>

入门指南

环境要求

HumanSD已在Python 3.9的Pytorch 1.12.1上实现和测试。

克隆仓库:

[object Object],[object Object]

我们建议您首先按照官方说明安装pytorch。例如:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

然后,您可以通过以下方式安装所需的包:

[object Object],[object Object],[object Object]

您还需要按照这里的说明安装MMPose。请注意,您只需将MMPose安装为Python包即可。注意:由于MMPose的更新,我们建议您安装0.29.0版本的MMPose。

模型和检查点

下载HumanSD所需的检查点,可以在这里找到。数据结构应如下所示:

|-- humansd_data
    |-- checkpoints
        |-- higherhrnet_w48_humanart_512x512_udp.pth
        |-- v2-1_512-ema-pruned.ckpt
        |-- humansd-v1.ckpt

请注意,v2-1_512-ema-pruned.ckpt应从Stable Diffusion下载。

快速演示

您可以通过命令行或gradio运行演示。

您可以通过以下命令行运行演示:

python scripts/pose2img.py --prompt "油画,女孩们在舞台上跳舞" --pose_file assets/pose/demo.npz

您还可以运行与ControlNet和T2I-Adapter的对比演示:

python scripts/pose2img.py --prompt "油画,女孩们在舞台上跳舞" --pose_file assets/pose/demo.npz --controlnet --t2i

您可以通过以下方式运行gradio演示:

python scripts/gradio/pose2img.py

我们还提供了与ControlNet和T2I-Adapter的对比,您可以在一个演示中运行所有这些方法。但您需要按照以下步骤下载相应的模型和检查点:

<details> <summary>对比ControlNet和T2I-Adapter的结果。</summary> (1) 您需要使用以下命令初始化ControlNet和T2I-Adapter作为子模块
git submodule init
git submodule update

(2) 然后从以下位置下载检查点: a. T2I-Adapter b. ControlNet。 并将它们放入humansd_data/checkpoints

然后,运行:

python scripts/gradio/pose2img.py --controlnet --t2i

请注意,由于路径冲突,您可能需要修改T2I-Adapter中的一些代码。

例如,使用

from comparison_models.T2IAdapter.ldm.models.diffusion.ddim import DDIMSampler

而不是

from T2IAdapter.ldm.models.diffusion.ddim import DDIMSampler
</details>

数据集

您可以参考此处的代码来加载数据。

Laion-Human

您可以在这里申请访问Laion-Human。请注意,我们已经提供了姿势注释、图像的.parquet文件和映射文件,请根据.parquet下载图像。.parquet中的key是相应的图像索引。例如,00033.parquet中key=338717的图像对应于images/00000/000338717.jpg。

下载图像和姿势后,您需要解压缩文件,使其看起来像这样:

|-- humansd_data
    |-- datasets
        |-- Laion 
            |-- Aesthetics_Human
                |-- images
                    |-- 00000.parquet
                    |-- 00001.parquet
                    |-- ...
                |-- pose
                    |-- 00000
                        |-- 000000000.npz
                        |-- 000000001.npz
                        |-- ...
                    |-- 00001
                    |-- ... 
                |-- mapping_file_training.json        

然后,您可以使用python utils/download_data.py下载所有图像。

之后,文件数据结构应如下所示:

|-- humansd_data
    |-- datasets
        |-- Laion 
            |-- Aesthetics_Human
                |-- images
                    |-- 00000.parquet
                    |-- 00001.parquet
                    |-- ...
                    |-- 00000
                        |-- 000000000.jpg
                        |-- 000000001.jpg
                        |-- ...
                    |-- 00001
                    |-- ...
                |-- pose
                    |-- 00000
                        |-- 000000000.npz
                        |-- 000000001.npz
                        |-- ...
                    |-- 00001
                    |-- ... 
                |-- mapping_file_training.json        

如果您下载的LAION-Aesthetics是tar文件,这与我们的数据结构不同,我们建议您通过以下代码提取tar文件:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Human-Art

您可以在这里下载Human-Art数据集。

文件数据结构应如下所示:

|-- humansd_data
    |-- datasets
        |-- HumanArt 
            |-- images
                |-- 2D_virtual_human
                    |-- cartoon
                        |-- 000000000007.jpg
                        |-- 000000000019.jpg
                        |-- ...
                    |-- digital_art
                    |-- ...
                |-- 3D_virtual_human
                |-- real_human
            |-- pose
                |-- 2D_virtual_human
                    |-- cartoon
                        |-- 000000000007.npz
                        |-- 000000000019.npz
                        |-- ...
                    |-- digital_art
                    |-- ...
                |-- 3D_virtual_human
                |-- real_human
            |-- mapping_file_training.json   
            |-- mapping_file_validation.json     

训练

请注意,在开始训练之前,应下载并准备好数据集和检查点。

运行以下命令开始训练:

python main.py --base configs/humansd/humansd-finetune.yaml -t --gpus 0,1 --name finetune_humansd

如果您想在没有热图引导扩散损失的情况下进行微调以进行消融实验,可以运行以下命令:

python main.py --base configs/humansd/humansd-finetune-originalloss.yaml -t --gpus 0,1 --name finetune_humansd_original_loss

定量结果

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/d61922d0-3b93-4c52-9299-092aeed2e828.png" width="97%"> </div>

可以通过以下方式计算指标:

python scripts/pose2img_metrics.py --outdir outputs/metrics --config utils/metrics/metrics.yaml --ckpt path_to_ckpt

定性结果

  • (a) 由预训练的文本引导稳定扩散(SD)生成的图像
  • (b) 作为ControlNet、T2I-Adapter和我们提出的HumanSD条件的姿势骨骼图像
  • (c) 由ControlNet生成的图像
  • (d) 由T2I-Adapter生成的图像
  • (e) 由HumanSD (我们的方法) 生成的图像

ControlNet、T2I-Adapter和HumanSD同时接收文本和姿势条件。

自然场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/5812d22e-44b3-49e4-9768-ecc47c6f099f.png" width="75%"> </div> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/fd23bccb-dee5-4b63-a8c9-e6bd412cc561.png" width="75%"> </div> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/70782f19-c080-471a-a5d6-d30768a822f3.png" width="75%"> </div> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/d490b8e0-3c8d-4abb-8ad9-d11bff3f1373.png" width="75%"> </div> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/a01f0165-80de-43e5-87df-313e3bc6c952.png" width="75%"> </div>

素描场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/19870858-c7c4-44cc-b24d-200e62560946.png" width="75%"> </div> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/5aa2f9d4-2d11-494b-8c16-a1cf9891a47e.png" width="75%"> </div>

皮影戏场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/888dd925-5aed-4f10-a6c4-243c9280e943.png" width="75%"> </div>

儿童绘画场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/3cf6c252-3f0a-411e-b2b7-c93f70bf1629.png" width="75%"> </div>

油画场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/8935723a-b8b0-48c4-92bb-bf248ff7b362.png" width="75%"> </div> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/d1d30ca1-5558-4e62-b72c-9f71ddb5a92e.png" width="75%"> </div>

水彩场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/f0d7fbce-fb60-4e7d-b525-55c9844186de.png" width="75%"> </div>

数字艺术场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/a2065d05-0c75-4186-8c33-bf4828c77054.png" width="75%"> </div>

浮雕场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/e3324883-d20a-4eaa-a8a8-407eb14e3801.png" width="75%"> </div>

雕塑场景

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/0626cbf5-bde1-4871-b275-b6b5dd8d1838.png" width="75%"> </div>

引用我们

@article{ju2023humansd, title={Human{SD}: A Native Skeleton-Guided Diffusion Model for Human Image Generation}, author={Ju, Xuan and Zeng, Ailing and Zhao, Chenchen and Wang, Jianan and Zhang, Lei and Xu, Qiang}, booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision}, year={2023} } @inproceedings{ju2023human, title={Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes}, author={Ju, Xuan and Zeng, Ailing and Wang, Jianan and Xu, Qiang and Zhang, Lei}, booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, year={2023}, }

致谢

  • 我们的代码是在Stable Diffusion的基础上修改的,感谢所有贡献者!
  • 如果没有LAION及其创建开放、大规模数据集的努力,HumanSD将无法实现。
  • 感谢Stability AI的DeepFloyd团队创建了用于训练HumanSD的LAION-5B数据集子集。
  • HumanSD使用了由Romain Beaumont训练的OpenCLIP。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多