Project Icon

HumanSD

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

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

HumanSD


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

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

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


  • (a) 预训练的无姿势文本引导稳定扩散(SD)的生成结果
  • (b) 作为ControlNet和我们提出的HumanSD的条件的姿势骨架图像
  • (c) ControlNet的生成结果
  • (d) HumanSD(我们的方法)的生成结果。ControlNet和HumanSD同时接收文本和姿势条件。

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

目录

待办事项

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

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

模型概览

入门指南

环境要求

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

克隆仓库:

git clone git@github.com:IDEA-Research/HumanSD.git

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

# conda
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch

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

pip install -r requirements.txt

您还需要按照这里的说明安装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的对比,您可以在一个演示中运行所有这些方法。但您需要按照以下步骤下载相应的模型和检查点:

对比ControlNet和T2I-Adapter的结果。 (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

数据集

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

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文件:

import tarfile
tar_file="00000.tar" # 00000.tar - 00286.tar
present_tar_path=f"xxxxxx/{tar_file}"
save_dir="humansd_data/datasets/Laion/Aesthetics_Human/images"
with tarfile.open(present_tar_path, "r") as tar_file:
    for present_file in tar_file.getmembers():
        if present_file.name.endswith(".jpg"):
            print(f"     image:- {present_file.name} -")
            image_save_path=os.path.join(save_dir,tar_file.replace(".tar",""),present_file.name)
            present_image_fp=TarIO.TarIO(present_tar_path, present_file.name)
            present_image=Image.open(present_image_fp)
            present_image_numpy=cv2.cvtColor(np.array(present_image),cv2.COLOR_RGB2BGR)
            if not os.path.exists(os.path.dirname(image_save_path)):
                os.makedirs(os.path.dirname(image_save_path))
            cv2.imwrite(image_save_path,present_image_numpy)

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

定量结果

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

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同时接收文本和姿势条件。

自然场景

素描场景

皮影戏场景

儿童绘画场景

油画场景

水彩场景

数字艺术场景

浮雕场景

雕塑场景

引用我们

@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。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号