AIGC专栏5——EasyPhoto AI写真照片生成器 sd-webui插件介绍、安装与使用

本文主要是介绍AIGC专栏5——EasyPhoto AI写真照片生成器 sd-webui插件介绍、安装与使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AIGC专栏5——EasyPhoto AI写真照片生成器 插件安装与使用

  • 学习前言
  • 源码下载地址
  • 技术原理储备(SD/Control/Lora)
    • StableDiffusion
    • ControlNet
    • Lora
  • EasyPhoto插件简介
  • EasyPhoto插件安装
    • 安装方式一:Webui界面安装 (需要良好的网络)
    • 安装方式二:Git clone下载安装 (clone过程会提示安装进度)
    • 其它插件安装:Controlnet 安装
  • EasyPhoto训练
    • 1、上传图片(Upload photos)
    • 2、参数设置(Adanced Options)
      • a、默认参数解析
      • b、开启或者关闭验证
    • 3、开始训练(Start Training)
      • a、填入User ID
      • b、下载权重
      • c、开始训练
      • d、得分检查
  • EasyPhoto预测
    • 1、User ID选择
    • 2、模板选择
      • a、预设模板(template image)
      • b、上传模板(upload image)
      • c、上传多图批量预测(upload dir)
    • 3、高级选项(Advanced Options,参数设置)
    • 4、单人预测
    • 5、多人预测
      • a、Num of Faceid设置
      • b、选择User ID
  • 训练加速与预测加速
  • 常见问题汇总

学习前言

在视觉方向的AIGC领域,AI写真是一个靠谱且经过验证的落地方案,随着StableDiffusion领域开源社区的快速发展,社区也涌现了类似 FaceChain 这样基于 Modelscope开源社区结合 diffusers 的开源项目,用于指导用户快速开发个人写真。

然而对于大量使用SDWebUI的 AIGC 同学们,短时间内却没有一个效果足够好的开源插件,去适配真人写真这一功能。

对于AI写真而言,需要注意两个方向的重点,一个是一定要和用户像,另外一个是一定要真实

最近我参与了一个EasyPhoto的项目,可以根据模板图像生成对应的用户写真,借助Stable Diffusion与Lora的强大生成能力,生成图片可以做到较为相似且真实,近期也开源了出来。
在这里插入图片描述

源码下载地址

https://github.com/aigc-apps/sd-webui-EasyPhoto

麻烦各位朋友点个Star,这对我来讲还是很重要的!

技术原理储备(SD/Control/Lora)

StableDiffusion

StableDiffusion作为Stability-AI开源图像生成模型,通常分为SD1.5/SD2.1/SDXL等版本, 是通过对海量的图像文本对进行训练结合文本引导的扩散模型,使用训练后的模型,通过对输入的文字进行特征提取,引导扩散模型在多次的迭代中生成高质量且符合输入语义的图像。下面的图像就是Stable Diffusion官网贴出来的他们的效果。

EasyPhoto AI基于StableDiffusion丰富的开源社区与强大的生成能力,进而生成逼真且自然的AI写真。
在这里插入图片描述

ControlNet

ControlNet是《Adding Conditional Control to Text-to-Image Diffusion Models》提出的通过添加部分训练过的参数,对StableDiffsion模型进行扩展,用于处理一些额外的输入信号,例如骨架图/边缘图/深度图/人体姿态图等等输入,从而完成利用这些额外输入的信号,引导扩散模型生成与信号相关的图像内容。例如我们在官方 Repo 可以看到的,使用Canny边缘作为信号,控制输出的小狗。

EasyPhoto 基于多Controlnet强大的控制能力,在保留原模板特点的情况下(如颜色、光照、轮廓),生成非常自然写真图像。
在这里插入图片描述

Lora

由《LoRA: Low-Rank Adaptation of Large Language Models》 提出的一种基于低秩矩阵的对大参数模型进行少量参数微调训练的方法,广泛引用在各种大模型的下游使用中。AI真人写真需要保证最后生成的图像和我们想要生成的人是相像的,这就需要我们使用Lora 技术,对输入的少量图片,进行一个简单的训练,从而使得我们可以得到一个小的指定人脸(Face id)的模型。

EasyPhoto插件简介

EasyPhoto是一款Webui UI插件,用于生成AI肖像画,该代码可用于训练与用户相关的数字分身。建议使用 5 到 20 张肖像图片进行训练,最好是半身照片且不要佩戴眼镜(少量可以接受)。训练完成后,EasyPhoto可以在推理部分生成图像。EasyPhoto支持使用预设模板图片与上传自己的图片进行推理。

这些是插件的生成结果,从生成结果来看,插件的生成效果还是非常不错的:
在这里插入图片描述
在这里插入图片描述
每个图片背后都有一个模板,EasyPhoto会对模板进行修改使其符合用户的特征。
在EasyPhoto插件中,Inference侧已经预置了一些模板,可以用插件预置的模板进行体验;另外,EasyPhoto同样可以自定义模板,在Inference侧有另外一个tab页面,可以用于上传自定义的模板。如下图所示。
在这里插入图片描述
而在Inference预测前,我们需要进行训练,训练需要上传一定数量的用户个人照片,训练的产出是一个Lora模型。该Lora模型会用于Inference预测。

总结而言,EasyPhoto的执行流程非常简单:
1、上传用户图片,训练一个与用户相关的Lora模型;
2、选择模板进行预测,获得预测结果。

EasyPhoto插件安装

安装方式一:Webui界面安装 (需要良好的网络)

安装过程较为简单,网络良好的情况下,跳转到Extentions,然后选择install from URL。
输入https://github.com/aigc-apps/sd-webui-EasyPhoto,点击下方的install即可安装,在安装过程中,会自动安装依赖包,这个需要耐心等待一下。安装完需要重启WebUI。
在这里插入图片描述

安装方式二:Git clone下载安装 (clone过程会提示安装进度)

直接进入到Webui的extensions文件夹,打开git工具,git clone即可。
下载完成后,重新启动webui,便会检查需要的环境库并且安装。
在这里插入图片描述

其它插件安装:Controlnet 安装

我们需要使用 Controlnet 进行推理。相关软件源是Mikubill/sd-webui-controlnet。在使用 EasyPhoto 之前,您需要安装这个软件源。

此外,我们至少需要三个 Controlnets 用于推理。因此,您需要设置 Multi ControlNet: Max models amount (requires restart)
在这里插入图片描述

EasyPhoto训练

EasyPhoto训练界面如下:

  • 左边是训练图片,直接点击Upload Photos即可上传图片,点击Clear Photos可以删除已经上传的图片;
  • 右边是训练参数,初次训练可不做参数调整。

在这里插入图片描述

1、上传图片(Upload photos)

点击Upload Photos后即可开始上传图片,在此处我们最好上传5-15张图片、包含不同角度、不同光照的情况;而我这里用了7张,最好有一些图片是不包括眼镜的,如果都是眼镜,生成结果里面有容易会生成眼镜
在这里插入图片描述
上传完成后,我们就可以在界面上看到已经上传的图像啦!
在这里插入图片描述

2、参数设置(Adanced Options)

a、默认参数解析

然后我们来看右边的参数设置部分,这里参数可调节的量还是比较多的,初次训练不做调整,每个参数的解析如下:

参数名含义
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 alphaLora训练的正则化参数,一般为rank的二分之一,默认为64

最终训练步数的计算公式也比较简单,Final training step = Min(photo_num * max_steps_per_photos, max_train_steps)。

简单来理解就是:
图片数量少的时候,训练步数为photo_num * max_steps_per_photos。
图片数量多的时候,训练步数为max_train_steps。

b、开启或者关闭验证

EasyPhoto在训练时默认会对训练过程进行验证,然后根据 训练过程中的验证结果,进行最优秀的几个Lora进行融合。

但这个 验证 在显存不足时容易导致 卡住,并且因为验证的频次较多,会影响一定的训练速度,如果机器的配置不足,可以尝试关闭验证来加快训练速度。

在这里插入图片描述

3、开始训练(Start Training)

a、填入User ID

然后我们点击下方的开始训练,此时需要在上方填入一下User ID,比如 用户的名字,然后就可以开始训练了。
在这里插入图片描述

b、下载权重

开始初次训练时会从oss上下载一部分权重,我们耐心等待即可,大概需要下载10G左右的资源,下载进度需要关注终端。
在这里插入图片描述

c、开始训练

在自动预处理完成后,Lora模型开始训练,我们只需要耐心的等待训练完成即可!
在这里插入图片描述

d、得分检查

终端显示成这样就已经训练完了,最后这步是在计算验证图像与用户图像之间的人脸 ID 相似性,从而实现 Lora 融合,确保我们的 Lora 是用户的完美数字分身。

一般来讲这个得分相似性在0.50以上是正常的情况,如果得分在0.10以下则需要检查一下环境,可能因为环境不对导致模型并未训练。
在这里插入图片描述

EasyPhoto预测

1、User ID选择

训练完后,我们需要将tab页转到Inference。由于Gradio的特性,刚训练好的模型不会自动刷新,可以点击Used id旁的蓝色旋转按钮进行模型刷新。

刷新完后选择刚刚训练的模型,然后选择对应的模板即可开始预测。
在这里插入图片描述

2、模板选择

a、预设模板(template image)

EasyPhoto仓库中预设了一些模板,template image中直接点击,即可选择模版进行预测。
在这里插入图片描述

b、上传模板(upload image)

预设模板的内容比较有限,可以切到upload image,直接自己上传模板进行预测。
在这里插入图片描述

c、上传多图批量预测(upload dir)

点击upload dir可以上传多图进行批量预测,上传完成后,点击Start Generation即可批量生成。

批量生成时间较久,请耐心等待。
在这里插入图片描述

3、高级选项(Advanced Options,参数设置)

高级选项中包含预测中各个能够设置的参数,大概有下面这么几个,请各位同学按情况进行调整

参数名参数解释调整后的影响
Additional Prompt正向提示词,会传入Stable Diffusion模型进行预测。可以根据自身希望增加的元素调整prompt词。
Seed种子值。用于保证结果的可复现性,为-1时会随机选择一个种子数。
Face Fusion Ratio Before第一次人脸融合的强度。调节后会影响人物相似度,一般来讲,值越大与训练人物的相似度越高。
Face Fusion Ratio After第二次人脸融合的强度。调节后会影响人物相似度,一般来讲,值越大与训练人物的相似度越高。
First Diffusion steps第一次进行Stable Diffusion的总步数。第一次Diffusion主要进行人像区域的调整,使得人像更自然。调节后会影响图片质量与出图速度,一般值越大图片质量越高,出图越慢。
First Diffusion denoising strength第一次进行Stable Diffusion的重绘比例。调节后会影响图片的重绘比例与出图速度,一般值越大,人像变动越大。
Second Diffusion steps第二次进行Stable Diffusion的总步数。 第二次Diffusion主要进行人像周围区域的调整,使得图片更和谐。调节后会影响图片质量与出图速度,一般值越大图片质量越高,出图越慢。
Second Diffusion denoising strength第二次进行Stable Diffusion的重绘比例。调节后会影响图片的重绘比例与出图速度,一般值越大,人像周围变动越大。
Crop Face Preprocess是否对人像裁剪后再处理。推荐开启,假设输入的是大图,会对人像区域先做裁剪后再进行人像调整,调整结果更精细。
Apply Face Fusion Before是否进行第一次人脸融合。调节后会影响是否进行第一次人脸融合,会影响人像的相似度。
Apply Face Fusion After是否进行第二次人脸融合。调节后会影响是否进行第二次人脸融合,会影响人像的相似度。 如果感觉人像发虚则取消该次融合。
Apply color shift first是否进行第一次DIffusion后的色彩校正。调节后会影响图片的人像自然程度。
Apply color shift last是否进行第二次DIffusion后的色彩校正。调节后会影响图片的人像自然程度。
Background Restore是否进行背景的重建。开启后可以对人像区域外背景进行重建,在使用动漫化模型时,可以让整个图片更和谐。

4、单人预测

选择完user id与模版后,点击start generation即可开始预测。初次预测需要下载一些modelscope的模型,耐心等待一下即可。

等待一段时间后,我们就可以获得预测结果了。

5、多人预测

a、Num of Faceid设置

多人预测需要首先设置Num of Faceid,将其设置为需要设置的人数,如画面上有两个人则设置为2:

b、选择User ID

首先是替换多个人像的情况,User ID与图片上人像从左到右对应,如下图所示:
在这里插入图片描述
然后是替换多个人像中单个人像的情况,User ID同样与图片上人像从左到右对应,但需要跳过的人像则使用none即可:

在这里插入图片描述

训练加速与预测加速

训练加速参考:
https://github.com/aigc-apps/sd-webui-EasyPhoto/wiki/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3%E2%80%90%E8%AE%AD%E7%BB%83%E5%8A%A0%E9%80%9F

预测加速参考:
https://github.com/aigc-apps/sd-webui-EasyPhoto/wiki/%E8%BF%9B%E9%98%B6%E6%96%87%E6%A1%A3%E2%80%90%E6%8E%A8%E7%90%86%E5%8A%A0%E9%80%9F

常见问题汇总

常见问题汇总参考:
https://github.com/aigc-apps/sd-webui-EasyPhoto/wiki/FAQ

这篇关于AIGC专栏5——EasyPhoto AI写真照片生成器 sd-webui插件介绍、安装与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695780

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数