FaceChain-FACT:开源10秒写真生成,复用海量LoRa风格,基模友好型写真应用

news2024/11/16 7:50:06

github开源地址:https://github.com/modelscope/facechain/tree/main/facechain_adapter 

魔搭创空间应用体验:魔搭社区

一、效果演示

        FaceChain FACT的代码和模型目前已经在github和modelscope创空间上同步开源。FaceChain FACT具有简单的交互式界面设计,只需一张人物形象图片和简短的操作,即可实现无限风格写真和固定模板写真的生成。同时,FaceChain FACT还支持包括指定人物姿态、自定义风格LoRA模型、以及多人模板写真等进阶功能,具体示例如下:

a.)无限风格写真:

选择风格,上传人物形象,即可生成对应风格写真。操作界面:

生成结果:

b.)指定人物姿态:

在无限风格写真基础上,在高级选项中上传姿态参考图片。操作界面:

生成结果:

c.)指定风格LoRA:

在无限风格写真基础上,在高级选项中上传自定义风格LoRA模型并调整提示词和风格权重。操作界面:

生成结果:

d.)固定模板写真:

上传模板和人物形象,确定重绘人脸编号,即可生成对应写真。操作界面:

生成结果:

e.)多人模板写真:

在固定模板写真基础上,根据人脸编号处理多人模板不同人脸。操作界面:

生成结果:

f.)鲁棒性写真样例:

        相比原版FaceChain,FaceChain FACT的人像生成体验也有了质的飞跃。1.)在生成速度方面,FaceChain FACT成功摆脱了冗长繁琐的训练阶段,将定制人像的生成时间由5分钟大幅缩短到10s左右,为用户带来无比流畅的使用体验。2.) 在生成效果方面,FaceChain FACT进一步提升了人脸ID保持的细腻程度,使其兼具真实的人像效果以及高质量的写真质感。同时,FaceChain FACT对FaceChain海量的精美风格以及姿态控制等功能具有丝滑的兼容能力,对于输入人脸图像光照不理想、表情夸张等情况也能准确从质量欠佳的图像中解耦出人物ID信息,保证生成写真图片具有高超的艺术表现力。

1.)输入光照异常样例:

2.)输入表情夸张样例:

二、原理介绍

        AI写真的能力来源于以Stable Diffusion为代表的文生图大模型及其微调技术。由于大模型具有强大的泛化能力,因此可以通过在单一类型的数据和任务中进行微调的方式,在保持模型整体的文本跟随和图像生成能力的基础上,实现下游任务。基于训练和免训练的AI写真的技术基础就来自于对文生图模型进行不同的微调任务。目前市面上的AI写真大多采用“训练+生成”的两阶段模式,此时的微调任务为“生成固定人物ID的写真图片”,对应的训练数据为多张该人物ID的形象图片。该模式的效果与训练数据的规模成正相关,因此往往需要庞大的形象数据支撑以及一定的训练时间,这也增加了用户的使用成本。

        不同于上述模式,免训练的AI写真将微调任务调整为“生成指定人物ID的写真图片”,即将人物ID形象图片(人脸图片)作为额外的输入,输出具有与输入形象具有相同ID特征的写真图片。该模式可以将线下训练与线上推理彻底分离,用户使用时直接基于微调后的模型进行写真生成,仅需一张图片,无需大量数据和训练等待时间,10秒钟即可生成专属AI写真。免训练AI写真的微调任务的基础算法是基于适配器(adapter)模块实现的,其基本结构如下图所示。人脸图片经过固定权重的图像编码器(image encoder)以及低参数量的特征投影层得到对齐后的特征,而后通过对固定权重的Stable Diffusion中的U-Net模块添加与文本条件类似的注意力机制模块实现对模型的微调。此时人脸信息作为独立分支的条件平行于文本信息一起送入模型中进行推理,故而可以使生成图片具有ID保持能力。

        基于face adapter的基础算法尽管可以实现免训练AI写真,但仍需进行一定的调整以进一步优化其效果。市面上的免训练写真工具往往存在以下几点问题:写真图像质量差、写真文本跟随能力和风格保持能力不佳、写真人脸可控性和丰富度差、算法对ControlNet和风格Lora的兼容性不好等。针对上述问题,FaceChain将其归结于已有的用于免训练AI写真的微调任务耦合了过多人物ID以外的信息,并提出了解耦训练的人脸适配器算法(FaceChain Face Adapter with deCoupled Training,FaceChain FACT)以解决上述问题。通过在百万级别的写真数据上对Stable Diffusion模型进行微调,FaceChain FACT可以实现高质量的指定人物ID的写真图片生成。FaceChain FACT的整个框架如下图所示。

FaceChain FACT的解耦训练分为两个部分:从图像解耦人脸,以及从人脸解耦ID。已有方法往往将写真图像去噪作为微调任务,从而导致模型无法将注意力准确定位到人脸区域,从而导致Stable Diffusion的原有文生图功能受到影响。FaceChain FACT借鉴换脸算法的串行处理以及区域控制的优势,从结构和训练策略两方面实现从图像中解耦人脸的微调方法。在结构上,不同于已有方法使用并行的交叉注意力机制处理人脸和文本信息,FaceChain FACT采用串行处理的方法作为独立的adapter层插入原始Stable Diffusion的block中,从而将人脸适配作为类似换脸处理的独立步骤作用于去噪过程中,避免了彼此之间的干扰。在训练策略上,FaceChain FACT在原始的MSE损失函数的基础上引入人脸适配增量正则(Face Adapting Incremental Regularization,FAIR)损失函数,控制adapter层人脸适配步骤的特征增量集中于人脸区域。在推理过程中,用户可以通过调整face adapter的权重灵活调节生成效果,在保持Stable Diffusion原有文生图功能的同时,平衡人脸的保真度与泛化性。FAIR损失函数的具体形式如下所示:

此外,针对写真人脸可控性和丰富度差的问题,FaceChain FACT提出从人脸解耦ID的训练方法,使得写真过程仅控制人物ID而非整个人脸。首先,为了更针对性提取人脸的ID信息并保持部分关键人脸细节,并且更好适应Stable Diffusion的结构,FaceChain FACT采用在大量人脸数据上预训练的基于Transformer架构的人脸特征提取器,抽取其倒数第二层的全部token,后续连接简单的注意力查询模型进行特征投影,从而使得提取的ID特征兼顾上述三点要求。另外,在训练过程中,FaceChain FACT使用Classifier Free Guidance(CFG)的方法,对相同ID对不同人脸写真图片进行随机打乱和舍弃,从而使得模型的输入人脸图片和用于去噪的目标图片可能具有同ID的不同人脸,以进一步避免模型过拟合于人脸的非ID信息。

三、拓展&共建

  • 全身写真
  • SDXL基模
  • 破秒加速
  • 多样风格
  • 人物视频

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1711539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux网络编程:应用层协议|HTTP

前言: 我们知道OSI模型上层分为应用层、会话层和表示层,我们接下来要讲的是主流的应用层协议HTTP,为什么需要这个协议呢,因为在应用层由于操作系统的不同、开发人员使用的语言类型不同,当我们在传输结构化数据时&…

Oracle dblink 发现Network 等待事件的分析 enq: KO - fast object checkpoint

所有的sql 通过dblink 查询全部等待中, 同一个SQL 20多个session 在跑,等待事件network,可能怀疑是不是网络断开了,导致没有返回 执行sql 如下: BEGIN Xdblink ; END; 去到dblink 所在的db,发现20多个sql在…

Unity SetParent第二个参数worldPositionStays的意义

初学Unity的小知识: 改变对象的父级有三种调用方式,如下: transMe.SetParent(transParent,true); transMe.SetParent(transParent,false); transMe.parent transParent;具体有什么区别呢,这里写一个测试例子来详细说明&#xff…

ROS2 Topics和Services

本文主要介绍ROS的Topics概念,如何创建Publisher和Subscriber,通过Topic在ROS程序间通信;介绍ROS的Services概念,如何创建Client和Server并建立通信。 更多内容,访问专栏目录获取实时更新。 ROS Topics Topics可以被视…

SQL数据库多层嵌套 json转sql建表语句,SQL数据库里数组里对象数据怎么创建

1. uniapp sqlite 一个数组包含对象嵌套对象通过主外键方式插入数据库: // 假设有一个对象数组,对象中包含嵌套对象 const objectsArray [{parentObject: {id: 1,name: Parent 1,// 其他父对象属性},childObject: {id: 11,parentId: 1,name: Child 1 o…

TOPSIS综合评价

TOPSIS法(Technique for Order Preference by Similarity to an Ideal Solution)是一种常用的综合评价方法,该方法根据有限个评价对象与理想化目标的接近程度进行排序,是在现有的对象中进行相对优劣的评价。 TOPSIS法的原理是通过…

Github 2024-05-29 C开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-29统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目10C++项目3PHP项目1PHP:流行的Web开发脚本语言 创建周期:4710 天开发语言:C, PHP协议类型:OtherStar数量:37340 个Fork数量:7657 次…

SpringBoot 微服务中怎么获取用户信息 token

SpringBoot 微服务中怎么获取用户信息 token 当我们写了一个A接口,这个接口需要调用B接口,但是B接口需要包含请求头内容,比如需要用户信息、用户id等内容,由于不在同一个线程中,使用ThreadLocal去获取数据是无法获取的…

[java基础揉碎]文件IO流

目录 文件 什么是文件 文件流​编辑 常用的文件操作 创建文件方式一 创建文件方式二 创建文件方式三 tip:为什么new file 了还有执行createNewFile?new File的时候其实是在内存中创建了文件对象, 还没有在磁盘中, 当执行createNewFile的时候才是往磁盘中写入​编辑 …

申请的商标名称相同或近似,如何解决!

最近遇到一些首次申请注册商标的主体,基本想的名称都是两个字或或者两个字加通用词,还有用的行业描述词或缺乏显著特征词,这样去申请注册商标,普推知产老杨分析这样去直接申请注册大概率驳回。 两个字基本上注册的差不多了&#…

推券客CMS淘宝优惠券网站源码

推券客CMS淘宝优惠券网站源码是一个以PHPMySQL进行开发的PHP淘宝客优惠券网站。支持电脑站、手机站以及微信公众号查券。支持多级代理返利和阿里妈妈最新的渠道管理等功能。 五大优势 一、全开源 推券客cms网站程序数据库完全开源,目前市场上基本都是以下2种淘宝客系统 第一…

Redis:redis基础

Redis Remote Dictionary Service即远程字典服务 一个基于内存的key-value结构数据库,在开发中常常作为缓存存储不经常被改变的数据 基于内存存储,读写性能高 在企业中应用广泛 Redis介绍 用C语言开发的开源高性能键值对数据库,可以达到10w的qps,可以存储丰富的value类型…

从alpine构建预装vcpkg的docker image用于gitea actions CI

动机 想要构建一个基于vcpkg的交叉编译容器平台用于cpp项目的CI(自动集成),此处仅提供最基础的image,amd64的机子上构建完成后大小为533兆(着实不小😓),各位看官可以在此基础上自行…

Gradle的学习

1.1 Gradle的优势 一款最新的,功能最强大的构建工具,用它逼格更高 使用Groovy或Kotlin代替XML,使用程序代替传统的XML配置,项目构建更灵活 丰富的第三方插件,让你随心所欲使用 完善Android,Java开发技术体系 1.2 …

Filebeat进阶指南:核心架构与功能组件的深度剖析

🐇明明跟你说过:个人主页 🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是ELK 2、FileBeat在ELK中的角色 二、Fil…

树莓派4B 学习笔记1:TF卡系统盘烧录_初次启动_远程端连接配置

今日开始学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) TF卡系统盘烧录_初次启动_远程端连接配置 目录 格式化SD卡: 烧录系统Win32DiskImager: Raspberry Pi Imager镜像烧写: 树莓派官网资料…

教育装备之先导小型五轴加工中心

随着制造业的快速发展和技术的不断进步,对高端技术人才的需求日益增长。五轴联动技术作为解决异性复杂零件高效优质加工问题的重要手段,受到了广泛关注。因此,培养掌握五轴联动技术的专业人才显得尤为重要。 先导小型五轴加工中心提供了真实的…

「数据结构」队列

目录 队列的基本概念 队列的实现 头文件queue.h 实现函数接口 1.初始化和销毁 2.出队列和入队列 3.获取队头元素和队尾元素 4.队列长度判空 后记 前言 欢迎大家来到小鸥的博客~ 个人主页:海盗猫鸥 本篇专题:数据结构 多谢大家的支持啦&#xff…

对比表征学习(一)Contrastive Representation Learning

对比表征学习(二)Sentence Embedding 主要参考翁莉莲的Blog,本文主要聚焦于对比损失函数 对比表示学习(Contrastive Representation Learning)可以用来优化嵌入空间,使相似的数据靠近,不相似的数…

玩转STM32-通用同步/异步收发器USART(详细-慢工出细活)

CPU与外围设备之间的信息交换或计算机与计算机之间的信息交换称为通信。基 本的通信方式有两种,即并行通信和串行通信。文章目录 一、串行通信基础1.1 串行通信的方式1.2 串行通信的数据传输形式1.3 波特率 二、STM32的USART的结构特征(了解)…