Stable Diffusion WebUI|EasyPhoto|妙鸭相机平替
Stable Diffusion WebUI扩展插件EasyPhoto,翻译中文为简单照片。最近通过AI生成照片的一个APP很火,叫做妙鸭相机,通过上传几张你的个人照片就可以训练出角色模型,然后用户可以自由生成各种照片。可这有两个缺点,毕竟要上传个人照片到别人的服务器,而且妙鸭相机官方对于用户安全隐私的协议定义模糊,已经导致很多用户不满,上传后的照片使用权居然归官方所有。其二就是需要收费,对于量大的用户来说也是一个痛点。而站长在体验了EasyPhoto之后认为,这真的可以完美取代妙鸭相机,有过之而无不及,大部分参数都可以自定义,可用性极强,训练也极其简单。
项目仓库
GitHub:aigc-apps/sd-webui-EasyPhoto: 📷 EasyPhoto
网络问题
在安装过程中,你可能即便开启了魔法上网也无法下载一些编程依赖库,关于魔法上网的相关配置问题不方便在站内讲解,请自行查看【魔法上网】的教程内容。
安装教程
快捷安装
这种方式最为简单,下载
后直接解压
该文件,你将会得到一个名为sd-webui-EasyPhoto
的文件夹
,将其移动至.\stable-diffusion-webui\extensions
目录内即可完成安装。
本站已经将需要用到的相关模型放置于该插件内,安装后可以免去自行下载相关模型的繁琐步骤。
在线安装
此方法适用于魔法环境没有问题的朋友,可以通过在线安装的方式一键安装,非常方便。
打开Stable Diffusion
的扩展
界面后,点击从网址安装
按钮,然后在扩展的git仓库网址
输入框中粘贴如下网址,最后点击安装
按钮即可,然后等待安装脚本自动执行。
https://github.com/aigc-apps/sd-webui-EasyPhoto.git
这可能需要等待几分钟,不要刷新或关闭网页。安装完成后点击页面最下方的重载UI按钮
,UI重新启动后就可以在主菜单中看到EasyPhoto
选项卡。
其它依赖
本插件还依赖于阿里的魔塔
和huggingface
的一些模型,如果你的魔法网络环境没有问题,那么你可以直接正常使用,该插件会自动下载相关内容。
但如果你的魔法网络存在问题,可以使用本站所提供的环境依赖包,关于该依赖的详细安装方式如下。
该插件的辅助模型默认路径为%USERPROFILE%\.cache
,如果你是初次使用,可能不存在此路径,可以在CMD中执行如下代码判断该路径是否存在,如果不存在则自动创建。
if not exist %USERPROFILE%\.cache mkdir %USERPROFILE%\.cache
执行完上面的代码之后,我们可以通过在CMD
中执行
下面的代码
,自动打开模型目录
。
start %USERPROFILE%\.cache
将我们下载完成的模型
文件解压
缩,你将会得到两个文件夹,名称分别为huggingface
和modelscope
,移动
至刚刚打开的文件夹(.cache)
下即可。
使用教程
基础设置
在使用此插件功能之前,我们还需要设置一下Controlnet。
我们至少需要三个Controlnets
用于推理。因此,您需要设置Multi ControlNet: Max models amount (requires restart)
。
模型训练
以下是程序的主界面,站长来讲解一下基础功能。
在开始即用之前,我们需要训练一个自己的角色模型,方便以后生成的图像都使用该模型,来确定角色的形象可以与所需要的人物一致。
我们点击Upload Photos
按钮,上传5张至20张
之间的同一个角色照片,比如站长本次使用的是樱景宁宁
写真图,共计20张图片。
在右侧The base checkpoint you use.
选择基础模型
,也就是你希望训练模型时使用哪个模型做为训练时的基础Base,这很重要,这关乎于以后的出图风格。
如果要设置参数,以下是每个参数的解析:
参数名 | 含义 |
---|---|
resolution | 训练时喂入网络的图片大小,默认值为512。 |
validation & save steps | 验证图片与保存中间权重的steps数,默认值为100,代表每100步验证一次图片并保存权重。 |
max train steps | 最大训练步数,默认值为800。 |
max steps per photos | 每张图片的最大训练次数,默认为200。 |
train batch size | 训练的批次大小,默认值为1。 |
gradient accumulationsteps | 是否进行梯度累计,默认值为4,结合train batch size来看,每个Step相当于喂入四张图片。 |
dataloader num workers | 数据加载的works数量,windows下不生效,因为设置了会报错,Linux正常设置。 |
learning rate | 训练Lora的学习率,默认为1e-4。 |
rank Lora | 权重的特征长度,默认为128。 |
network alpha | Lora训练的正则化参数,一般为rank的二分之一,默认为64。 |
在你设置完所有参数后,点击Start Training
按钮,即可开始训练。此时网页会自动弹出一个窗口,让你输入一个名字,也就是角色的ID,方便让你知道以后应该选用哪个模型做为你的角色。随便输入,只要你能记得这是谁就好。
训练期间你可以多次点击Refresh Log
按钮,来查看训练的进度。默认设置的最大部署为800,也就是当训练步数达到800时就会完成模型训练,
其实全部保持默认,训练后的效果也还不错。站长2080TI的显卡,20张超大原图分辨率图像的训练时间为5个小时左右,如果你的图像并不大,经过裁切之后可以大幅缩短训练时间。
图像生成
模型训练完成之后,我们可以来到Inference
选项卡,里面内置了一些模板,你可以直接点击一张照片模板,然后在下面选择对应的基础模型和你训练的模型ID,比如本站设置训练樱景宁宁
的角色ID
为NN
,那么在User id (The User id you provide while training)
内你就可以选择为NN
的模型,如果你没有看到该模型,可以点击🔄按钮刷新模型列表,这将会自动查找最新模型。
如果你需要高级编辑设置,那么可以打开高级选项卡,设置Prompt提示词和种子之类的内容,非常方便。
下面是生成后的效果图,个人认识还是挺好的,最起码训练过程非常简单,人人都可以上手,比LoRA训练快多了。
注意:第一次生成会比较慢,后面速度就会变快啦。
效果展示
为了方便大家对比,知道原角色长什么样子,这里放几张宁宁的训练图像。
下面是模板图与二次生成的图像对比,左面是模板,右面是二创。
效果真的很赞,如果你觉得不够像,也可以在高级选项卡内,调节面部融合的比例,这可以让你自由控制角色相似度!
多人模板
如果你希望一次生成多张人脸的内容,那么也可以通过如下设置进行生成。
- 步骤1:转到EasyPhoto的设置页面,设置num_of_Faceid大于1。
- 步骤2:应用设置。
- 步骤3:重新启动webui的ui界面。
- 步骤4:返回EasyPhoto并上传多人模板。
- 步骤5:选择两个人的用户ID。
- 步骤6:单击“生成”按钮。执行图像生成。
算法相关
1. 架构概述
在人工智能肖像领域,我们希望模型生成的图像逼真且与用户相似,而传统方法会引入不真实的光照(如人脸融合或roop)。为了解决这种不真实的问题,我们引入了稳定扩散模型的图像到图像功能。生成完美的个人肖像需要考虑所需的生成场景和用户的数字二重身。我们使用一个预先准备好的模板作为所需的生成场景,并使用一个在线训练的人脸 LoRA 模型作为用户的数字二重身,这是一种流行的稳定扩散微调模型。我们使用少量用户图像来训练用户的稳定数字二重身,并在推理过程中根据人脸 LoRA 模型和预期生成场景生成个人肖像图像。
2. 训练细节
首先,我们对输入的用户图像进行人脸检测,确定人脸位置后,按照一定比例截取输入图像。然后,我们使用显著性检测模型和皮肤美化模型获得干净的人脸训练图像,该图像基本上只包含人脸。然后,我们为每张图像贴上一个固定标签。这里不需要使用标签器,而且效果很好。最后,我们对稳定扩散模型进行微调,得到用户的数字二重身。
在训练过程中,我们会利用模板图像进行实时验证,在训练结束后,我们会计算验证图像与用户图像之间的人脸 ID 差距,从而实现 Lora 融合,确保我们的 Lora 是用户的完美数字二重身。
此外,我们将选择验证中与用户最相似的图像作为 face_id 图像,用于推理。
3. 推理细节
a. 第一次扩散:
首先,我们将对接收到的模板图像进行人脸检测,以确定为实现稳定扩散而需要涂抹的遮罩。然后,我们将使用模板图像与最佳用户图像进行人脸融合。人脸融合完成后,我们将使用上述遮罩对融合后的人脸图像进行内绘(fusion_image)。此外,我们还将通过仿射变换(replace_image)把训练中获得的最佳 face_id 图像贴到模板图像上。然后,我们将对其应用 Controlnets,在融合图像中使用带有颜色的 canny 提取特征,在替换图像中使用 openpose 提取特征,以确保图像的相似性和稳定性。然后,我们将使用稳定扩散(Stable Diffusion)结合用户的数字分割进行生成。
b. 第二次扩散:
在得到第一次扩散的结果后,我们将把该结果与最佳用户图像进行人脸融合,然后再次使用稳定扩散与用户的数字二重身进行生成。第二次生成将使用更高的分辨率。
总结
对于动手能力较差的人来说,这个插件真的很好用了,毕竟效果真的很顶,而且可自定义的参数也比较多。
已安装里已经看到安装了,但选项卡里就是出不来
RuntimeError: Error running install.py for extension D:\AIhuihua\extensions\sd-webui-EasyPhoto.
提示:Python 运行时抛出了一个异常。请检查疑难解答页面。
Command: “D:\AIhuihua\py310\python.exe” “D:\AIhuihua\extensions\sd-webui-EasyPhoto\install.py”
Error code: 1
stdout: Installing requirements for easyphoto-webui
Installing requirements for tensorflow
Installing requirements for easyphoto-webui
Installing requirements for modelscope
下载了整个包扔到extensions里的 一键启动 提示 离线下载了还需要魔法网络吗?
这个是不是和用SD先生成一系列照片,再使用一键AI换脸把生成的照片上的人进行换脸的效果是一样的?
这插件是不是有大问题,关闭sd后cpu直接99%,十几个rundll32在占用