码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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.后处理

    人像美肤和超分。

  • 相关阅读:
    springCloud笔记(狂神)
    【代码仓库提交大文件,用Git LFS!】
    第67天:APP攻防-Frida反证书抓包&移动安全系统&资产提取&评估扫描
    Multisim 13-电子线路实验
    安科瑞变电站综合自动化系统在助力变电站实现综合自动化
    三表联查(怎么把表1中存在但表2表3不存在的姓名查找出来)
    【面试题】JSON.stringify()妙用,你真的知道吗?
    大厂永恒敲门砖——Android 系统启动流程详解
    spring-boot-maven-plugin
    C语言入门Day_19 初识函数
  • 原文地址:https://blog.csdn.net/u012193416/article/details/133856946
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号