易照片| 您的智能AI照片生成器。
🦜 EasyPhoto 是一款Webui UI插件,用于生成AI肖像画,该代码可用于与您相关的数字分身进行训练。
🦜🦜欢迎!
目录
- 简介
- 待办事项清单
- 快速启动
- 1.云使用:AliyunDSW/AutoDL/Docker
- 2.本地安装:环境检查/下载/安装
- 如何使用
- 1. 模型训练
- 2.人物生成
- API测试
- 算法详细信息
- 1. 架构概述
- 2. 训练细节
- 3. 推理细节
- 参考文献
- 相关项目
- 许可证
- 联系我们
简介
EasyPhoto是一款Webui UI插件,用于生成训练AI肖像画,该代码可用于与您相关的数字分身。建议使用5到20张肖像图片进行,最好是半身照片且不要佩戴眼镜(少量可以接受)。完成训练后,我们可以在推理部分生成图像。我们支持使用预设模板图片并上传自己的图片进行推理。
请阅读我们开发者的Scene,共建美好社区盟约|简体中文
如果您在训练中遇到一些问题,请参考VQA。
我们现在支持从不同平台快速启动,请参阅快速启动。
新特性:
- 支持基于LCM-Lora的采样加速,现在您只需要进行12个步骤(vs 50步骤)即可生成图像和视频,并支持场景化(风格化)Lora的训练和大量内置的模型。[🔥 🔥 🔥 🔥 2023.12.09]
- 支持基于Concepts-Sliders的属性编辑和虚拟试穿,请参考sliders-wiki , tryon-wiki获取更多详细信息。[🔥 🔥 🔥 🔥 2023.12.08]
- 感谢揽睿星舟提供了内置EasyPhoto的SDWebUI官方镜像,并承诺每周更新一次。独家测试,可以在2分钟内拉起资源,并在5分钟内完成启动。[🔥 🔥 🔥 🔥 2023.11.20 ]
- ComfyUI 支持repo,感谢THtianhao的精彩工作![🔥 🔥 🔥 2023.10.17]
- EasyPhoto 论文地址arxiv [🔥 🔥 🔥 2023.10.10]
- 支持使用SDXL模型和一定的选项直接生成高清大图,不再需要上传模板,需要16GB显存。具体细节可以前往这里[🔥 🔥 🔥 2023.09.26]
- 我们同样支持Diffusers版本。 [🔥 2023.09.25]
- 支持对背景进行影响,并计算生成的图像与用户之间的相似度评分。 [🔥🔥 2023.09.15]
- 支持不同的预测基础模型。 [🔥🔥 2023.09.08]
- 支持多个生成!添加服务器选项以优化推理速度。在 UI 上添加日志刷新。 [🔥🔥 2023.09.06]
- 创建代码!现已支持Windows和Linux。[🔥 2023.09.02]
待办事项清单
- 支持中文界面。
- 支持模板背景部分变化。
- 支持高分辨率。
快速启动
1.云使用:AliyunDSW/AutoDL/揽睿星舟/Docker
A。通过阿里云DSW
DSW 有免费的 GPU 时间,用户可申请一次,申请后 3 个月内有效。
阿里云在Freetier提供免费GPU时间,获取并在阿里云PAI-DSW中使用,3分钟内即可启动EasyPhoto
b. 通过揽睿星舟/AutoDL
揽睿星舟
揽睿星舟官方全插件版本内置EasyPhoto,并承诺每周测试与更新,亲测可用,5分钟内拉起,感谢他们的支持和对社区做出的贡献。
自动DL
如果您正在使用 AutoDL,您可以使用我们提供的镜像快速启动稳定的 DIffusion webui。
您可以在社区镜像中填写以下信息来选择所需的镜像。
aigc-apps/sd-webui-EasyPhoto/sd-webui-EasyPhoto
C。通过docker
使用docker的情况下,请保证机器中已经正确安装显卡驱动与CUDA环境,然后执行以下命令:
# 拉取镜像
docker pull mybigpai-registry.cn-beijing.cr.aliyuncs.com/aigc/sd-webui-easyphoto:0.0.3
# 进入镜像
docker run -it -p 7860:7860 --network host --gpus all mybigpai-registry.cn-beijing.cr.aliyuncs.com/aigc/sd-webui-easyphoto:0.0.3
# 启动webui
python3 launch.py --port 7860
2.本地安装:环境检查/下载/安装
A。环境检查
我们已验证EasyPhoto可在以下环境中执行:如果您遇到内存使用过多而导致WebUI进程自动被kill掉,请参考ISSUE21,设置一些参数,例如num_threads=0,如果您还发现了其他解决的好方法办法,请及时联系我们。
Windows 10的详细信息:
- 操作系统: Windows10
- 蟒蛇:蟒蛇3.10
- 火炬:火炬2.0.1
- 张量流CPU:2.13.0
- CUDA:11.7
- 库德恩:8+
- 显卡: Nvidia-3060 12G
Linux的详细信息:
- 操作系统 Ubuntu 20.04, CentOS
- 蟒蛇:蟒蛇3.10和蟒蛇3.11
- 火炬:火炬2.0.1
- 张量流CPU:2.13.0
- CUDA:11.7
- 库德恩:8+
- 显卡: Nvidia-A10 24G & Nvidia-V100 16G & Nvidia-A100 40G
我们需要大约60GB的可用磁盘空间(用于保存权限和数据集),请检查!
b. 相关资料库和权限重新下载
我。控制网
我们需要使用 Controlnet 进行推理。相关软件源是Mikubil/sd-webui-controlnet。在使用 EasyPhoto 之前,您需要安装该软件源。
另外,我们至少三个 Controlnet 用于推理。因此,您需要设置Multi ControlNet: Max models amount (需要重新启动)。
二. 其他依赖关系。
我们与现有的 stable-diffusion-webui 环境相互兼容,启动 stable-diffusion-webui 时会安装相关软件源。
我们所需的权限会在第一次开始训练时自动下载。
C。插件安装
现在我们支持从git安装EasyPhoto。我们的仓库网址是https://github.com/aigc-apps/sd-webui-EasyPhoto。
今后,我们将从可用安装EasyPhoto 获得支持。
如何使用
1. 模型训练
EasyPhoto训练界面如下:
- 左边是训练图片。只需点击上传照片即可上传图片,点击清除照片即可删除上传的图片;
- 右边是训练参数,不能为第一次训练进行调整。
点击上传照片后,我们可以开始上传图片,这里最好上传5到20张图片,包括不同的角度和图标。最好有一些不包括眼镜的图片。如果所有图片都包含眼镜眼镜,则生成的结果可以轻松生成眼镜。
然后我们点击下面的“开始培训”,此时,我们需要填写上面的用户ID,例如用户名,才能开始培训。
模型开始训练后,webui会自动刷新训练日志。如果没有刷新,请单击“刷新日志”按钮。
如果要设置参数,每个参数的解析如下:
参数名 | 意义 |
---|---|
解决 | 时喂入网络的图片大小,默认值为训练512 |
验证和保存步骤 | 验证图片与保存中间权重的步数,默认值为100,代表每100步验证一次图片并保存权重 |
最大火车步数 | 最大训练步数,默认值为800 |
每张照片的最大步数 | 每张图片的最大训练次数,默认为200 |
训练批量大小 | 训练的批量大小,默认值为1 |
梯度累积步骤 | 是否进行梯度累计,默认值为4,结合train批量大小来看,每个Step相当于喂入四张图片 |
数据加载器数量工人 | 数据加载的作品数量,windows下不生效,因为设置了会报错,Linux正常设置 |
学习率 | 训练Lora的学习率,默认为1e-4 |
兰克·洛拉 | 权重的特征长度,默认为128 |
网络阿尔法 | Lora训练的正则化参数,一般为排名的二分之一,默认为64 |
2.人物生成
A。单人模版
- 步骤1:点击刷新按钮,查询训练后的用户ID对应的模型。
- 步骤2:选择用户ID。
- 步骤3:选择需要生成的模板。
- 步骤4:点击“生成”按钮结果生成。
b. 多人模板
- 步骤1:转到EasyPhoto的设置页面,设置num_of_Faceid大于1。
- 步骤2:应用设置。
- 步骤3:重新启动webui的ui界面。
- 步骤4:返回EasyPhoto并上传多人模板。
- 步骤5:选择多人的用户ID。
- 步骤6:单击“生成”按钮。执行图像生成。
算法详细信息
- 中文论文arxiv
- 中文博客在这里
1. 架构概述
在人工智能轮廓领域,我们希望模型生成的图像且与用户相似,而传统方法会引入不真实的桌面(如人脸融合或圆环)。为了解决这种不真实的问题,我们引入了稳态扩散模型的图像到图像功能。生成完美的个人肖像需要考虑所需的生成场景和用户的数字分身。我们使用预先准备好的模板作为所需的生成场景,并使用一个在线训练的人脸 LoRA 模型作为用户的数字分身,这是一种流行的稳定变异模型。我们使用少量用户图像来训练用户的稳定数字分身,并在推理过程中根据人脸LoRA模型和预期生成场景生成个人肖像图像。
2. 训练细节
首先,我们对输入的用户图像进行人脸检测,确定人脸位置后,按照一定比例截取输入图像。然后,我们使用显着性检测模型和皮肤美化模型获得干净的人脸训练图像,该基本图像只包含人脸。然后,我们为每张图像贴上一个固定的标签。这里不需要使用标签器,而且效果很好。最后,我们对稳定扩散模型进行调整,得到用户的数字分身。
在训练过程中,我们会利用模板进行实时验证,在训练结束后,我们会计算验证图像与用户图像之间的人脸ID差距,从而实现Lora融合图像,保证我们的Lora是用户的完美数字分身。
另外,我们将选择验证中与用户最相似的图像作为face_id图像,用于推理。
3. 推理细节
A。第一次扩散:
首先,我们接收到的模板进行人脸检测,以便实现稳定扩散而需要涂抹的遮光罩。然后,我们将使用模板图像与最佳用户图像进行人脸融合。人脸融合完成后,我们将使用上述遮罩对融合后的人脸图像进行内绘(fusion_image)。另外,我们通过仿射变换(replace_image)把训练中得到的最佳face_id图像贴到模板图像上。然后,我们将其应用Controlnets,在融合图像中使用带颜色的精明提取特征,在替换图像中使用openpose提取特征,以确保图像的相似性和稳定性。然后,我们将使用稳定扩散(Stable Diffusion)结合用户的数字分割进行生成。
b. 第二次扩散:
在得到第一次扩散的结果后,我们将该结果与最佳用户图像进行人脸融合,然后再次使用稳定扩散与用户的数字分身进行生成。第二次生成将使用更高的分辨率。
特别感谢
特别感谢DevelopmentZheng, qiuyanxin, rainlee, jhuang1207, bubbliiiiing, wuziheng, yjjinjie, hkunzhe, yunkchen同学们的代码贡献(此排名不分前面)。
参考文献
- Insightface:https://github.com/deepinsight/insightface
- cv_resnet50_face:https://www.modelscope.cn/models/damo/cv_resnet50_face-detection_retinaface/summary
- cv_u2net_salient:https://www.modelscope.cn/models/damo/cv_u2net_salient-detection/summary
- cv_unet_skin_retouching_torch:https://www.modelscope.cn/models/damo/cv_unet_skin_retouching_torch/summary
- cv_unet-image-face-fusion:https://www.modelscope.cn/models/damo/cv_unet-image-face-fusion_damo/summary
- 科希亚:https://github.com/bmaltais/kohya_ss
- controlnet-webui:https://github.com/Mikubill/sd-webui-controlnet
相关项目
我们还推出了一些很棒的项目开源以及任何您可能感兴趣的扩展项目:
- 模型范围。
- 面链。
- SD-WebUI-ControlNet。
- sd-webui-roop。
- 鲁普。
- sd-webui-deforum。
- sd-webui-附加网络。
- a1111-sd-webui-tagcomplete。
- sd-webui-segment-anything。
- SD-WebUI-隧道。
- sd-webui-mov2mov。
许可证
本项目采用Apache许可证(2.0版)。
视频概览
EasyPhoto独立版+sd-webui-EasyPhoto中文汉化
包含模型文件,所有文件包有点大~
sd-webui-EasyPhoto更新:
ꔷ 支持fastapi的例子和测速样例 >> pull request #148ꔷ 支持训练/推理关闭美颜提升相似度,降低过度磨皮的感觉 >> pull request #161ꔷ 支持在训练/推理的基础模型选择中可以选择多层级目录的模型 >> pull request #165 BUG修复
ꔷ 修复人脸融合带来的边缘模糊问题 >> pull request #147ꔷ 修复人脸检测失败带来的特征提取缓解报错导致训练失败 >> pull request #139 ------ 2023.10.13