语言:
缩略图: ''
标签:
- 控制网络
- 劳恩数据集
- 人脸
- 媒体管道
- 图像转图像
许可证: 开放轨道
基础模型: stabilityai/stable-diffusion-2-1-base
数据集:
- 劳恩人脸数据集
- 劳恩数据集
管道标签: 图像转图像
控制网络劳恩人脸数据集
目录:
- 概述: 样本、内容与构建
- 使用: 下载、训练与推理
- 许可证
- 致谢与鸣谢
概述:
本数据集专为训练具备人类面部表情控制能力的ControlNet而设计,包含用于视线方向追踪的瞳孔关键点。训练已在Stable Diffusion v2.1基础版(512)和Stable Diffusion v1.5上通过验证。
样本:
精选自ControlNet + Stable Diffusion v2.1基础版
支持多人脸图像处理:
数据集内容:
- train_laion_face.py - ControlNet训练入口文件
- laion_face_dataset.py - 数据集迭代处理代码,包含裁剪和尺寸调整功能
- tool_download_face_targets.py - 读取metadata.json并填充目标文件夹的工具
- tool_generate_face_poses.py - 生成源图像的原始脚本(为可复现性保留,非训练必需)
- training/laion-face-processed/prompt.jsonl - 包含图像提示文本
- training/laion-face-processed/metadata.json - 劳恩数据集相关元数据,也用于下载目标数据集
- training/laion-face-processed/source/xxxxxxxxx.jpg - 带检测标注的生成图像
- training/laion-face-processed/target/xxxxxxxxx.jpg - 选自劳恩人脸数据集的图像
数据集构建:
源图像通过提取劳恩人脸数据集slice 00000,并采用特殊配置参数经MediaPipe人脸检测器处理生成。
MediaPipe使用的线条颜色与粗细配置如下:
线条粗细 = 2
半径 = 1
右虹膜绘制 = 绘图规范(颜色=(10, 200, 250), 粗细=线条粗细, 圆半径=半径)
右眼绘制 = 绘图规范(颜色=(10, 200, 180), 粗细=线条粗细, 圆半径=半径)
右眉绘制 = 绘图规范(颜色=(10, 220, 180), 粗细=线条粗细, 圆半径=半径)
左虹膜绘制 = 绘图规范(颜色=(250, 200, 10), 粗细=线条粗细, 圆半径=半径)
左眼绘制 = 绘图规范(颜色=(180, 200, 10), 粗细=线条粗细, 圆半径=半径)
左眉绘制 = 绘图规范(颜色=(180, 220, 10), 粗细=线条粗细, 圆半径=半径)
嘴部绘制 = 绘图规范(颜色=(10, 180, 10), 粗细=线条粗细, 圆半径=半径)
头部绘制 = 绘图规范(颜色=(10, 200, 10), 粗细=线条粗细, 圆半径=半径)
虹膜标记规范 = {468: 右虹膜绘制, 473: 左虹膜绘制}
我们实现了名为draw_pupils
的方法来修改MediaPipe部分功能,作为待合并变更的临时解决方案。
使用说明:
ZIP文件应解压至ControlNet目录根路径,使train_laion_face.py
等.py文件与tutorial_train.py
同级。假设基于ControlNet仓库0acb7e5版本,但无直接依赖。
下载:
因版权限制不包含原始目标文件。提供tool_download_face_targets.py脚本,通过读取metadata.json自动填充target文件夹。该脚本无需依赖项,但安装tqdm可显示进度条。
训练:
目标文件夹完整后,可在至少24GB显存的设备上训练。我们的模型在A6000上训练200小时(4个epoch)。
python tool_add_control.py ./models/v1-5-pruned-emaonly.ckpt ./models/controlnet_sd15_laion_face.ckpt
python ./train_laion_face_sd15.py
推理:
提供gradio_face2image.py
。需更新以下两行指向训练好的模型:
model = create_model('./models/cldm_v21.yaml').cpu() # 基于SD2.1基础版微调时无需修改
model.load_state_dict(load_state_dict('./models/control_sd21_openpose.pth', location='cuda'))
模型存在局限:虽然视线和嘴部追踪优于先前尝试,仍可能忽略控制指令。在提示中添加"看向右侧"等细节可改善效果。
🧨 Diffusers
推荐配合Stable Diffusion 2.1 - Base使用,实验表明也可适配其他扩散模型如dreambooth优化的stable diffusion。
配合Stable Diffusion 1.5使用时,在from_pretrained参数中插入subfolder="diffusion_sd15"
。提供v1.5半精度变体但未经测试。
- 安装依赖:
$ pip install diffusers transformers accelerate
- 运行代码:
from PIL import Image
import numpy as np
import torch
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
from diffusers.utils import load_image
image = load_image(
"https://huggingface.co/CrucibleAI/ControlNetMediaPipeFace/resolve/main/samples_laion_face_dataset/family_annotation.png"
)
controlnet = ControlNetModel.from_pretrained("CrucibleAI/ControlNetMediaPipeFace", torch_dtype=torch.float16, variant="fp16")
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-1-base", controlnet=controlnet, safety_checker=None, torch_dtype=torch.float16
)
controlnet = ControlNetModel.from_pretrained("CrucibleAI/ControlNetMediaPipeFace", subfolder="diffusion_sd15")
pipe = StableDiffusionControlNetPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", controlnet=controlnet, safety_checker=None)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
image = pipe("牙科广告中的幸福家庭", image=image, num_inference_steps=30).images[0]
image.save('./images.png')
许可证:
源图像: (/training/laion-face-processed/source/)
采用CC0 1.0许可,详见 http://creativecommons.org/publicdomain/zero/1.0
训练模型:
发布的ControlNet检查点采用CreativeML Open RAIL-M许可。
源代码:
lllyasviel/ControlNet采用Apache 2.0许可
我们的修改遵循相同许可。
致谢:
特别感谢张等人提出ControlNet,Rombach等人(StabilityAI)开发Stable Diffusion,以及Schuhmann等人构建LAION数据集。
本文档样本图像取自Unsplash,采用CC0许可。
@misc{zhang2023adding,
title={为文本到图像扩散模型添加条件控制},
author={张绿敏与Maneesh Agrawala},
year={2023},
eprint={2302.05543},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{rombach2021highresolution,
title={基于潜在扩散模型的高分辨率图像合成},
author={Robin Rombach等},
year={2021},
eprint={2112.10752},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{schuhmann2022laion5b,
title={LAION-5B: 用于训练下一代图文模型的大规模开放数据集},
author={Christoph Schuhmann等},
year={2022},
eprint={2210.08402},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
本项目由Crucible AI支持实现。