当前位置: 首页 > news >正文

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

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 下载这些文件;
    • sd-webui-roop: https://github.com/s0md3v/sd-webui-roop
    • ifnude: https://huggingface.co/s0md3v/nudity-checker/tree/main
    • models: https://huggingface.co/henryruhs/roop/resolve/main/inswapper_128.onnx
    • insightface: https://huggingface.co/public-data/insightface/tree/main/models/buffalo_l
  • 下载我已经整理好的压缩包。

关/注/公/众\号:萤火遛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换脸技术,并没有引导或教唆大家去恶搞别人,对于看了此文而去实施的换脸行为,本人不能也概不负责。

相关文章:

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

AI写真最近火起来了,特别是某款现象级相机的出现,只需要上传自己的照片,就能生成漂亮的写真照,这一产品再次带火了AI绘画。今天我就来分享一个使用Stable Diffusion WebUI制作真人AI写真的方法,不用训练,快…...

vscode如何包含第三方库

方法1:使用C Extension 在include 的 rapidjson的头文件时,vscode会提示找不到的问题 悬停,点击黄色提示 Edit "includePath" setting Include Path,输入rapidjson的include路径 /Users/xxx/workspaces/rapidjson-1.1.…...

【Docker】Docker安装Consul

文章目录 1. 什么是Consul2. Docker安装启动Consul 点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情) 1. 什么是Consul Consul是HashiCorp公司推出的开源软件,提…...

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(20)-Fiddler精选插件扩展安装让你的Fiddler开挂到你怀疑人生

1.简介 Fiddler本身的功能其实也已经很强大了,但是Fiddler官方还有很多其他扩展插件功能,可以更好地辅助Fiddler去帮助用户去开发、测试和管理项目上的任务。Fiddler已有的功能已经够我们日常工作中使用了,为了更好的扩展Fiddler&#xff0c…...

计算机top命令

top 快捷键 1 核心参数 1 1 参考资料 [1]. https://blog.csdn.net/weixin_45465395/article/details/115728520 [2].https://www.cnblogs.com/liushui-sky/p/13224762.html...

DevExpress WPF Tree List组件,让数据可视化程度更高!(二)

DevExpress WPF Tree List组件是一个功能齐全、数据感知的TreeView-ListView混合体,可以把数据信息显示为REE、GRID或两者的组合,在数据绑定或非绑定模式下,具有完整的数据编辑支持。 在上文中(点击这里回顾DevExpress WPF Tree …...

lc1074.元素和为目标值的子矩阵数量

创建二维前缀和数组 两个for循环,外循环表示子矩阵的左上角(x1,y1),内循环表示子矩阵的右下角(x2,y2) 两个for循环遍历,计算子矩阵的元素总和 四个变量,暴力破解的时间复杂度为O(…...

elementUi el-radio神奇的:label与label不能设置默认值

问题:最近项目遇到一个奇葩的问题:红框中列表的单选按钮无法根据需求设置默认选中,但是同样是设置开启状态的单选框可以设置默认状态 原因:开始同样是和开启/关闭状态一样也把红框中列表的默认值设置为数字模式,但是由…...

git仓库清理

关于git仓库的清理,主要就是清理git仓库里面的大的二进制文件。网上查了很多教程,很多都是用:git filter-branch.清理仓库中的大文件。 我尝试着本地测试了一下,发现是真慢呀。 方法一、git filter-branch step1:查…...

从0到1开发go-tcp框架【3-读写协程分离、引入消息队列、进入连接管理器、引入连接属性】【基础篇完结】

从0到1开发go-tcp框架【3-读写协程分离、引入消息队列、进入连接管理器、引入连接属性】 1 读写协程分离[v0.7] 添加一个Reader和Writer之间通信的channel添加一个Writer goroutineReader由之前直接发送给客户端改为发送给通信channel启动Reader和Writer一起工作 zinx/znet/co…...

python-爬虫作业

# -*- coding:utf-8 -*-Author: 董咚咚 contact: 2648633809qq.com Time: 2023/7/31 17:02 version: 1.0import requests import reimport xlwt from bs4 import BeautifulSoupurl "https://www.dygod.net/html/gndy/dyzz/" hd {user-Agent:Mozilla/4.0 (Windows N…...

vue3+ts+pinia整合websocket

文章目录 一. 目标二. 前置环境三. websocket通用模板 一. 目标 先有实时数据需要展示. 由于设备量极大且要对设备参数实时记录展示.axios空轮询不太适合. 选择websocket长连接通讯. 使用pinia原因是pinia具备共享数据性质.可以作为消息队列缓存数据,降低渲染压力.同时方便多…...

【微信小程序】保存多张图片到本地相册

<template><view class"container"><u-swiper :list"list" circular radius0 indicator indicatorModedot height950rpx></u-swiper><view class"btn btn2" click"saveFun">保存到相册</view><…...

Python Numpy入门基础(二)数组操作

入门基础&#xff08;二&#xff09; NumPy是Python中一个重要的数学运算库&#xff0c;它提供了了一组多维数组对象和一组用于操作这些数组的函数。以下是一些NumPy的主要特点&#xff1a; 多维数组对象&#xff1a;NumPy的核心是ndarray对象&#xff0c;它是一个多维数组对…...

【LeetCode每日一题】——1572.矩阵对角线元素的和

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 简单 三【题目编号】 1572.矩阵对角线元素的和 四【题目描述】 给你一…...

牛客网Verilog刷题——VL55

牛客网Verilog刷题——VL55 题目答案 题目 请用Verilog实现4位约翰逊计数器&#xff08;扭环形计数器&#xff09;&#xff0c;计数器的循环状态如下&#xff1a;   电路的接口如下图所示&#xff1a; 输入输出描述&#xff1a; 信号类型输入/输出位宽描述clkwireInput1系统…...

python中数据可视化

1.掷一个D6和一个D10 50000次的结果 die.py from random import randintclass Die:def __init__(self, num_sides6):self.num_sides num_sidesdef roll(self):return randint(1, self.num_sides) die_visual.py from die import Die from plotly.graph_objs import Bar, L…...

DASCTF 2023 0X401七月暑期挑战赛web复现

目录 <1> Web (1) EzFlask(python原型链污染&flask-pin) (2) MyPicDisk(xpath注入&文件名注入) (3) ez_cms(pearcmd文件包含) (4) ez_py(django框架 session处pickle反序列化) <1> Web (1) EzFlask(python原型链污染&flask-pin) 进入题目 得到源…...

go编译文件

1.编译go文件 go build [go文件]2.执行文件编译文件 ./demo [demo为go文件名称]...

Flowable-子流程-调用活动

目录 定义图形标记XML内容界面操作使用示例子流程设计子流程的XML内容主流程设计主流程的XML内容 视频教程 定义 调用活动是在一个流程定义中调用另一个独立的流程定义&#xff0c;通常可以定义一些通用的流程作为 这种调用子流程&#xff0c;供其他多个流程定义复用。这种子流…...

java 并发

目录 什么是线程&#xff1f;什么是进程&#xff1f;为什么要有线程&#xff1f;有什么关系与区别&#xff1f;什么是守护线程&#xff1f;如何创建、启动 Java 线程&#xff1f;线程池参数详细解释Callable接口和Future类偏向锁 / 轻量级锁 / 重量级锁synchronized 和 java.ut…...

【MySQL】DDL和DML

4&#xff0c;DDL:操作数据库 我们先来学习DDL来操作数据库。而操作数据库主要就是对数据库的增删查操作。 4.1 查询 查询所有的数据库 SHOW DATABASES; 运行上面语句效果如下&#xff1a; 上述查询到的是的这些数据库是mysql安装好自带的数据库&#xff0c;我们以后不要操…...

使用python框架FastAPI

中文文档 Python ORM之SQLAlchemy Fastapi大型项目目录规划 SQL数据库操作 依赖项Depends 待看 和APIRouter from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmakerapp FastAPI()SQ…...

Vue实现leafletMap自定义绘制线段 并且删除指定的已绘制的点位

效果&#xff1a;点击表格可实现选中地图点位&#xff0c;删除按钮点击可删除对应点位并且重新绘制线段&#xff0c;点击确定按钮 保存已经绘制的点位信息传给父组件 并且该组件已实现回显 完整的组件代码如下 文件名称为&#xff1a; leafletMakePointYt <!--* Descripti…...

ChatGPT辅助写论文:提升效率与创造力的利器

写作是人类最重要的交流方式之一&#xff0c;也是学术研究中不可或缺的环节。然而&#xff0c;写作并不是一件容易的事情&#xff0c;尤其是对于科研人员来说&#xff0c;他们需要花费大量的时间和精力来撰写高质量的论文&#xff0c;并且面临着各种各样的挑战&#xff0c;如语…...

面试攻略,Java 基础面试 100 问(六)

JAVA 泛型 泛型提供了编译时类型安全检测机制&#xff0c;该机制允许程序员在编译时检测到非法的类型。泛型的本 质是参数化类型&#xff0c;也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法&#xff0c; 能够对整型数组、字符串数组甚至其他任何类型的…...

图解系列 DNS查找过程和DNS缓存

DNS 充当地址簿。它将人类可读的域名 (google.com) 转换为机器可读的 IP 地址 (142.251.46.238)。 开局一张图 来自&#xff1a;https://xiaolishen.medium.com/the-dns-lookup-journey-240e9a5d345c 寻址流程 查询浏览器缓存&#xff1a;当你输入一个域名后&#xff0c;浏览…...

《吐血整理》高级系列教程-吃透Fiddler抓包教程(21)-如何使用Fiddler生成Jmeter脚本-上篇

1.简介 我们知道Jmeter本身可以录制脚本&#xff0c;也可以通过BadBoy&#xff0c;BlazeMeter等工具进行录制&#xff0c;其实Fiddler也可以录制Jmter脚本&#xff08;而且有些页面&#xff0c;由于安全设置等原因&#xff0c;使用Jmeter直接无法打开录制时&#xff0c;这时就…...

vim中出现复制不对齐-乱码问题

不对齐解决&#xff1a; 使用纯文本模式粘贴&#xff1a;在进入 Vim 编辑器后&#xff0c;先按下 :set paste 进入插入模式&#xff0c;然后再进行粘贴操作。这样可以确保粘贴的文本以纯文本格式插入&#xff0c;而不会触发自动缩进或其他格式化操作 中文乱码问题&#xff1a;…...

华为OD机考真题--单词接龙--带答案

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; 题目描述&#xff1a; 单词接龙的规则是&#xff1a; 用于接龙的单词首字母必须要前一个单词的尾字母…...