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

easyphoto 妙鸭相机

AIGC专栏7——EasyPhoto 人像训练与生成原理详解-CSDN博客如何训练一个高品质的人像Lora与应用高品质Lora的链路对于写真生成而言非常重要。由《LoRA: Low-Rank Adaptation of Large Language Models》 提出的一种基于低秩矩阵的对大参数模型进行少量参数微调训练的方法,广泛引用在各种大模型的下游使用中。目前对超过数十亿以上参数的具有强能力的大模型针对下游任务进行微调中会呈现出巨大开销。LoRA 建议冻结预训练模型的权重并在每个自注意力部分通过全连接的方式注入可训练层。https://blog.csdn.net/weixin_44791964/article/details/132922309

原作者的解释文档,说的非常详细,可以对着文档进行分析,分为两个阶段,一个是训练流程,一个是推理流程,整个过程还是很复杂的,这里面应该有很多可以优化的地方。在训练阶段,经过了图像预处理得到图像排序,再经过人像分割得到人像区域,使用lora训练,lora的结果通过img2img来验证;推理阶段,用用户上传的最正的图像作为参考图像,与模版图像的人脸融合图作为canny图,模板图与训练后产生的lora换脸,作为openpose图,在人脸融合图基础上进行多次lora和controlnet得到最终结果。

训练流程:

用户上传图片,会对图片进行预处理,再lora训练。

1.人像得分排序

人像排序包括:人脸特征向量,图像质量评分,人脸偏移角度。

人脸特征向量,利用retinaface检测脸,并对齐,使其成为标准脸,利用人脸特征提取模型curricularface提取特征量,先计算人像的平均特征,然后计算每一张图片和平均特征的相似程度,相似程度是0-1的相似度分数;图像质量评分;人脸偏移角度,计算双眼的旋转角度,眼睛连线相对于水平线的倾斜角,偏移角为0,得分为1,偏移角为90,得分为0-1,偏移角分数0-1,并选出最正的人像在推理时作为参考人像

人像排序:相似度分数与图像质量分数相乘,选出最高的topk个人像进行训练。

2.人像分割与修复

人脸分割,lora训练保留人像特征,因此只关注人脸区域即可,显著性分割取出背景,人脸检测选出人脸周围区域;GPEN进行人脸修复,并超分,ABPN人像美肤,产生了比较好的人像图。(lora的学习能力强,不仅能学到人像特征,还能学到模糊、噪声、不清晰等特征)

3.lora训练

kohya_ss的lora,同时训练text encoder和unet。lora模型融合,每100step保留一次lora权重,正常会训练800steps。使用一些模版图像进行img2img,保证出来的人像一定是正脸照。例如800steps,会产生800组验证结果和8个lora模型,使用验证结果与训练图片进行人脸特征向量提取,进行人脸相似度计算,然后选择其中最佳的几个lora模型进行融合,由于每组验证结果包含多张(4),会根据每组验证结果 被选中的比例 作为这个lora模型所占的比重。

推理流程:

1.初步重建

1.1 人脸融合 

reference photo是计算偏移角时选出的最正的人像,作为目标脸型进行人脸融合,人像重建是img2img完成,人脸融合算法用于提供一个比较好的基础图片,这样的结果就更像用户,在sd中提供canny。

1.2 人脸裁剪与放射变换

在完成训练后,可以获得一张与用户最为相似的图片,这张图片也是生成的,但是在训练的过程中会将所有的验证图片与训练图片进行人脸相似度比对。裁剪这个人像的图片并且进行放射变换,利用5个人脸关键点,将其贴到模版图像上,获得replaced image,这个图像会在下一步sd重建时使用,提供openpose。

1.3 stable diffusion重建 + 颜色转移

在1.1中完成人脸融合,下一步是使用lora重建,但是光用lora是不够的,还要结合controlnet,从推理图上人脸融合和放射变换似乎重合了,但是他们是提供不同的controlnet模式的。

使用1.1中的人脸融合图像的canny控制(防止人像崩坏)。

使用1.1中的人脸融合图像的颜色控制(使生成的颜色符合模版)。

使用1.2中replaced image的openpose+face openpose控制(使眼睛与轮廓更像本人)。

使用训练的lora。

使用mask对人脸区域进行重建。

2.边缘完善

2.1 人脸融合

再进行一次人脸融合以提升人脸的相似度。

2.2 stable diffusion重建

初步重建后可以获得一个不错的人像,但可能存在边缘上的问题,因此还设立了二次重建用于进行边缘完善,依然是lora+controlnet,但和初步重建不同,重建的是非人脸区域。

使用1.1中的人脸融合图像的tile控制(防止颜色过于失真)。

使用1.1中的canny控制(防止人脸崩坏)。

使用训练的lora。

使用mask对人像周围区域进行重建。

3.后处理

人像美肤和超分。

相关文章:

easyphoto 妙鸭相机

AIGC专栏7——EasyPhoto 人像训练与生成原理详解-CSDN博客如何训练一个高品质的人像Lora与应用高品质Lora的链路对于写真生成而言非常重要。由《LoRA: Low-Rank Adaptation of Large Language Models》 提出的一种基于低秩矩阵的对大参数模型进行少量参数微调训练的方法&#x…...

【Qt控件之QMdiArea】介绍及使用

描述 QMdiArea小部件提供了一个区域,用于显示MDI窗口。QMdiArea的功能类似于MDI窗口的窗口管理器。例如,它在自身上绘制和排列管理的窗口,可以按级联或平铺模式排列它们。通常,QMdiArea被用作QMainWindow的中心小部件&#xff0c…...

Linux网络编程-极简HTTPUDP服务器

HTTP服务器 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h>#define PORT 8080 #define BUFFER_SIZE 2048void handle_client(int client_socket) {char buffer[BUFFER_SIZE];recv(cl…...

虚拟化、容器与Docker基本介绍以及安装部署(Docker 基本管理)

目录 1 Docker 概述 1.1 Docker与虚拟机的区别 1.2 容器在内核中支持2种重要技术 1.3 Docker核心概念 2 安装 Docker 2 Docker 镜像操作 2.1 搜索镜像 2.2 获取镜像 2.3 镜像加速下载 2.4 查看镜像信息 2.4.1 查看下载的镜像文件信息 2.4.2 查看下载到本地的所有镜像…...

Spring Boot中捕获异常错误信息并将其保存到数据库中

Spring Boot中捕获异常错误信息并将其保存到数据库中: 1.创建数据库表&#xff1a; 首先&#xff0c;您需要创建一个用于存储异常信息的数据库表。可以使用SQL脚本或者使用Hibernate实体类来创建表。以下是一个用于存储异常信息的表的示例SQL&#xff1a; CREATE TABLE erro…...

CNN记录】pytorch中flatten函数

pytorch原型 torch.flatten(input, start_dim0, end_dim- 1) 作用&#xff1a;将连续的维度范围展平维张量&#xff0c;一般写再某个nn后用于对输出处理&#xff0c; 参数&#xff1a; start_dim&#xff1a;开始的维度 end_dim&#xff1a;终止的维度&#xff0c;-1为最后…...

科普长文--网络安全拟态防御技术概念及应用

网络安全拟态防御技术概念 什么是网络安全拟态防御? 网络安全拟态防御技术是一种基于生物拟态原理,利用动态异构冗余构造、拟态伪装机制、测不准效应等手段,实现网络空间的主动防御和内生安全的技术。它是由中国工程院院士邬江兴首创的,旨在应对网络空间中的各种未知威胁…...

框架篇

一、Spring中的单例Bean是线程安全的吗 二、AOP相关面试题 三、Spring中的事务 四、Spring中事务失效的场景有 五、Spring bean的生命周期 六、Spring的循环依赖 七、SpringMVC的执行流程 八、自动配置原理 九、Spring框架常见的注解 十、Mybatis的执行流程 十一、MyBatis延迟加…...

Spring MVC(中)

1、Spring MVC视图&#xff1a; SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户 SpringMVC视图的种类很多&#xff0c;默认有转发视图和重定向视图 当工程引入jstl的依赖&#xff0c;转发视图会自动转换为JstlView …...

10月19日,每日信息差

今天是2023年10月19日&#xff0c;以下是为您准备的17条信息差 第一、中国海洋石油遭南向资金净卖出2.38亿港元 第二、阅文集团侯晓楠&#xff1a;网文已经成为中国文化的一张全球名片。据了解&#xff0c;2022年以来&#xff0c;阅文已经在海外上线了自制的300多部动漫影视作…...

【VSCode】解决Open in browser无效

问题描述&#xff1a; 在VSCode中无论是点击右键&#xff0c;选择在默认浏览器中打开&#xff0c;还是按快捷键alt b都没有反应。 解决办法&#xff1a; 右击文件 --> 在文件资源管理器中显示 右击文件&#xff0c;选择属性 点击更改 选择用默认浏览器打开 最后 此时…...

测试饱和了? 大数据测试就业薪资和前景究竟怎么样?

随着不断有转行人员及毕业的大学生进入IT行业&#xff0c;在很多外界人眼里&#xff0c;这个行业的“缺口”已满&#xff0c;人员趋于饱和&#xff0c;但事实真的这样吗&#xff1f;还真没有。只是最基础的岗位需求在慢慢变少了&#xff0c;但行业中比较深的细分岗位&#xff0…...

DDR3笔记 频率配置

可参考 基于FPGA的DDR3设计&#xff08;2&#xff09;DDR3各时钟频率及带宽分析 - 知乎 (zhihu.com) DDR3的时钟频率配置要看两个手册&#xff1a; 1.DDR3器件的手册。 2.开发板芯片的手册 器件 器件名称&#xff1a;MT41J128M16JT-125:K tCK 1.25ns&#xff0c;就可以算出…...

数据结构与算法-(10)---列表(List)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

Node-Web模块的用法

题记 node.js中web模块的用法&#xff0c;以下是具体操作过程和代码。 Web服务器一般指网站服务器&#xff0c;是指驻留于因特网上某种类型计算机的程序&#xff0c;Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL&#xff0c;与客户端的…...

基于TCP的RPC服务

TCP服务器上的RPC&#xff0c;通过创建一个服务器进程监听传入的tcp连接&#xff0c;并允许用户 通过此TCP流执行RPC命令 -module(tr_server). -author("chen"). -behaviour(gen_server).%% API -export([start_link/1,start_link/0,get_count/0,stop/0 ]).-export(…...

docker报错问题解决:Error Invalid or corrupt jarfile app.jar

文章目录 1.问题描述2.问题分析3.问题解决 1.问题描述 此时处在 /home/ubuntu/app 目录下&#xff0c;并且在该目录下有一个 jenkins-0.0.1-SNAPSHOT.jar。 我在 /home/ubuntu/app 目录下执行了 docker 容器运行命令&#xff1a; # 映射 8859 端口 # 容器名为 jenkins-demo #…...

Day 09 python学习笔记

函数 装饰器 回顾内容&#xff1a; 函数可以作为参数进行传递函数可以作为返回值函数名称可以像变量一样进行赋值操作 装饰器&#xff1a;要求记住结论 引入&#xff1a; def play_dnf():print("你好啊&#xff0c;我是赛利亚&#xff0c;今天又是美好的一天")def p…...

力扣labuladong——一刷day02

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣876. 链表的中间结点二、力扣142. 环形链表 II三、力扣160. 相交链表四、力扣141. 环形链表 前言 一、力扣876. 链表的中间结点 /*** Definition for …...

【小白专用23.10.22 已验证】windows 11 安装PHP8.2 +Apache2.4

环境说明 windows:windows 11 x64apache: Apache/2.4.43php :php-8.2.11 一.php 1、PHP下载 PHP For Windows: Binaries and sources Releases 注意&#xff1a; 1.要下载Thread Safe&#xff0c;否则没有php8apache2_4.dll这个文件&#xff1b;如果使用Apache作为服务器…...

基于Java(Jsp+servelet+Javabean)+MySQL实现图书管理系统

图书管理系统 一、需求分析 1.1 功能描述 1.1.1“读者”功能 1&#xff09;图书的查询&#xff1a;图书的查询可以通过搜索图书 id、书名、作者名、出版社来实现,显示结果中需要包括书籍信息以及是否被借阅的情况&#xff1b; 2&#xff09;图书的借阅&#xff1a;借阅图书…...

告别局域网:实现NASCab云可云远程自由访问

文章目录 前言1. 检查NASCab本地端口2. Qindows安装Cpolar3. 配置NASCab远程地址4. 远程访问NASCab小结 5. 固定NASCab公网地址6. 固定地址访问NASCab 前言 在数字化生活日益普及的今天&#xff0c;拥有一个属于自己的私有云存储&#xff08;如NASCab云可云&#xff09;已成为…...

上门服务小程序会员系统框架设计

逻辑分析 会员注册与登录&#xff1a;用户需要能够通过小程序进行会员注册&#xff0c;提供必要信息如手机号码、密码等&#xff0c;注册成功后可登录系统。会员信息管理&#xff1a;包括会员基本信息&#xff08;姓名、联系方式等&#xff09;的修改、查看&#xff0c;同时可能…...

python爬虫:Ruia的详细使用(一个基于asyncio和aiohttp的异步爬虫框架)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Ruia概述1.1 Ruia介绍1.2 Ruia特点1.3 安装Ruia1.4 使用案例二、基本使用2.1 Request 请求2.2 Response - 响应2.3 Item - 数据提取2.4 Field 提取数据2.5 Spider - 爬虫类2.6 Middleware - 中间件三、高级功能3.1 …...

图像处理篇---face_recognition库实现人脸检测

以下是使用face_recognition库实现人脸检测的详细步骤、实例代码及解释&#xff1a; 一、环境准备 1. 安装依赖库 pip install face_recognition opencv-python # 核心库 pip install matplotlib # 用于显示图像&#xff08;可选&#xff09;2. 依赖说明 face_recognitio…...

c++ QicsTable使用实例

效果图&#xff1a; #include <QicsTable.h> #include <QicsDataModelDefault.h> #include <QVBoxLayout> Demo1::Demo1(QWidget *parent) : QWidget(parent) { ui.setupUi(this); const int numRows 10; const int numCols 5; // create th…...

echarts显示/隐藏标签的同时,始终显示饼图中间文字

显示标签的同时&#xff0c;始终显示饼图中间文字 let _data this.chartData.slice(1).map((item) > ({name: item.productName,value: Number(item.stock), })); this.chart.setOption({tooltip: {trigger: item,},graphic: { // 重点在这里&#xff08;显示饼图中间文字&…...

20250602在Ubuntu20.04.6下修改压缩包的日期和时间

rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 5月 23 10:23 Android13.0地面站.tgz* rootrootrootroot-X99-Turbo:~$ touch 1Android13.0地面站.tgz rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 6月…...

5.Promise,async,await概念(1)

Promise 是 JavaScript 原生提供的异步处理机制&#xff0c;而 async 和 await 是基于 Promise 的语法糖&#xff0c;由 JavaScript 语言和其运行时环境&#xff08;如浏览器、Node.js&#xff09;支持&#xff0c;用于更清晰地编写异步代码&#xff0c;从而避免回调地狱。 Pr…...

15个基于场景的 DevOps 面试问题及答案

第一部分:持续集成和部署 (CI/CD) 场景 1:构建中断 “您的 CI 流水线突然出现‘找不到依赖项’的错误。您会如何处理这个问题?” 回答:首先,我会检查是否有新的依赖项被添加到需求文件中,但这些依赖项并未包含在需求文件中。我还会验证构建服务器是否可以访问互联网来下…...