代码改变世界

真人AI写真的制作方法-文生图换脸

2023-08-03 07:46  萤火架构  阅读(1290)  评论(3编辑  收藏  举报

AI写真最近火起来了,特别是某款现象级相机(据说是妙鸭相机)的出现,只需要上传自己的照片,就能生成漂亮的写真照,这一产品再次带火了AI绘画。今天我就来分享一个使用Stable Diffusion WebUI制作真人AI写真的方法,不用训练,快速出图。具体就是使用Stable Diffusion的文生图能力和roop插件的换脸能力。

注意本文只是分享AI写真的制作技术,没有引导或教唆大家去恶搞别人,对于看了此文而去实施的换脸行为,本人概不负责。

安装插件

这里介绍两种安装方法,一是直接通过插件扩展器安装,二是手动上传安装。

安装成功后会在 Stable Diffusion WebUI 的“文生图”和“图生图”中看到这个插件的区块:

方法一

适合网络访问各种资源比较畅通的同学。

启动Stable Diffusion WebUI,操作流程如下图所示:

  1. 依次点击进入“扩展插件”->“从网址安装”;
  2. 在“git仓库网址”中输入:https://github.com/s0md3v/sd-webui-roop;
  3. 点击“安装”按钮;
  4. 等待出现“Use Installed tab to restart”的提示;
  5. 进入“已安装”页签,点击“应用并重启用户界面”。

注意,如果出现重启后页面超过5分钟还加载不出来的情况,去看下控制台或者终端日志。可能是因为下载插件所需模型的速度太慢了,如果下载需要的时间过长,我们可以直接中断下载,然后手动上传这些文件。具体如何操作,请看方法二。

方法二

适合访问 Github 和 HuggingFace 受限的用户。

运行此插件需要安装如下这些文件:

下载文件

有两种方法获取这些文件:

  • 自己手动从 Github 和 HuggingFace 下载这些文件;
  • 下载我已经整理好的压缩包。

关/注/公/众\号:萤火遛AI(yinghuo6ai),发送消息:换脸,即可获取压缩包下载地址。

部署文件

把下载下来的文件放到服务器的各个位置。

sd-webui-roop 放到 stable diffusion webui 的插件目录,具体位置是:stable-diffusion-webui/extensions/,如下图所示:

models 放到 stable diffusion 的根目录,我已经做好了目录结构,覆盖粘贴即可,如下图所示:

ifnude 和 insightface 稍微有点麻烦,需要放到用户根目录下,并且文件夹需要改成以英文的点开头。

以ifnude为例,

  • Windows下是:C:\Users\{你的登录用户名}\.ifnude
  • Linux下是 /root/.ifnude

对于 Linux 系统,将 ifnude 和 insightface 上传到 root 目录后,用下边的命令可以快速完成改名。

mv /root/ifnude /root/.ifnude
mv /root/insightface /root/.insightface

 

所有的文件都放置好以后,重启Stable Diffusion WebUI。

AutoDL用户快速操作指南:

通过文件管理器上传或者通过公网网盘下载文件到 autodl-tmp 目录,然后依次执行下边的命令:

unzip -o /root/autodl-tmp/roop-4-sd-webui.zip -d /root/

rm -Rf /root/__MACOSX

mv /root/sd-webui-roop /root/stable-diffusion-webui/extensions/sd-webui-roop

mv /root/models/* /root/stable-diffusion-webui/models

rm -Rf /root/models

mv /root/insightface /root/.insightface

mv /root/ifnude /root/.ifnude

通过 JupyterLab 重启 Stable Diffusion WebUI。

文生图换脸

我这里先用“文生图”生成一个30岁中国男人的照片,下面的参数只是给大家一个参考,只要能生成一张人像的图片就行了。不过如果你是个SD新手,就完全按照图片中的来吧,先搞出来再自定义。

具体生图参数如下:

大模型:realisticVisionV20(文章最后有下载地址)

提示词:ultra quality, masterpiece, best quality, 8k, UHD, a man, chinese, standing front of a desk, 30 years old, thin face,long hair, little smile, (looking at viewer), upper bpdy,solo, portrait photo, with a bookshelf behind, sense of technology,wide shot
反向提示词: EasyNegative, bad hands, bad fingers, glasses, worst quality, low quality, normal quality, skin spots, acnes, age spot, ugly, deformed

这里我用了“高分辨率修复”,让SD把图片放大1倍,看起来更清晰。另外还固定了“图像生成种子”,你如果想要不同的人物形象,记得把这个改成-1,也就是每次使用不同的种子。

下面是roop插件的设置,roop插件在下图所示的位置,点击右侧的箭头按钮展开设置页面。

这个插件我们只需要上传一张要替换的脸(我这里找了一个真正的大神照片),然后点击“启用”按钮就行了。

另外我把“Restore Face”也标了一下,这个是设置用什么技术修脸的,直接替换完的脸可能不太协调,用这个技术修一下,默认的是 CodeFormer,大家也可以用GFPGAN 对比下。

最后点击生成,等待出图(我感觉做到了形神兼备):

需要注意 roop 并不参与 Stable Diffusion 本身的生图流程,它是在Stable Diffusion出图完毕后,再去替换图片中的人脸的。

如果roop中有多张人脸,我们还可以选择要替换哪张脸,具体是修改下边这个参数,大家可以自己试试。

前边我提到AI写真这件事,使用文生图怎么做呢?

很简单,只需要一次生成多张照片,把生成种子设置为-1。为了让人物的姿势更加多样,我们还可以调整下关键词,比如我这里去掉了一些限制:

ultra quality, masterpiece, best quality, 8k, UHD, a man, chinese, front of a desk, 30 years old, thin face,long hair, little smile,solo, portrait photo, with a bookshelf behind, sense of technology,wide shot

看看我这里的出图效果:

图生图换脸

如果在图生图中换脸,需要将重绘强度设置为0,也就是不使用Stable Diffusion WebUI的的任何重绘能力,只使用roop提供的换脸能力。

提示词都不要填:

图生图这里上传要被替换人脸的照片:

采样器这里换一下,否则会报错;重绘强度设置为0。

roop插件这里,启用并上传要替换的人脸照片:

 

如果只想对脸部的某个区域进行更换,我们也可以使用蒙版进行局部绘制,操作方法如下图所示:

切换到“局部绘制”,上传照片,把人脸的部分区域加上蒙版,其它参数不变,点击生成就行了。

视频换脸

本文提到的换脸插件是 roop 项目衍生出来的,roop本身就是一个能对图片和视频换脸的工具。考虑到视频换脸和Stable Diffusion WebUI关系不大,我就不专门介绍了,有兴趣的可以关/注/我/的/公/众\号:萤火遛AI,回复:换脸,里边有一个独立的roop包,我也写了简单的使用方法,大家可以试试。


以上就是本文的主要内容了,有兴趣的同学快去试试吧。

注意本文只是分享一种使用AI制作写真的方法,其中用到了AI换脸技术,并没有引导或教唆大家去恶搞别人,对于看了此文而去实施的换脸行为,本人不能也概不负责。