FaceChain开源虚拟试衣功能,打造更便捷高效的试衣新体验
简介
虚拟试衣这个话题由来已久,电商行业兴起后,就有相关的研发讨论。由其所见即所得的属性,它可以进一步提升用户服装购买体验。它既可以为商家做商品展示服务,也可以为买家做上身体验服务,这让同时具备了 B 和 C 的两个用户属性。随着 AIGC 的兴起,虚拟试衣也取得了一定的突破,FaceChain 近期重点更新了虚拟试衣功能 & 效果图如下所示:
根据是否需要对衣服做变形生成来划分,虚拟试衣又可分为形变保 ID 与非形变保 ID。其中非形变保 ID(局部保 ID)部分已开源,可以在 FaceChain(https://github.com/modelscope/FaceChain)开源项目中体验到,另外形变保 ID 正在研发中,预计 11 月底开源初版。截止目前 FaceChain 已有 6.1K star,它旨在打造以人物为中心的 AIGC 工具箱,目前其人物写真功能在线体验形态与入口丰富。主要有如下:
a.)万相写真馆在线体验:
https://tongyi.aliyun.com/wanxiang/app/portrait-gallery
b.)魔搭人物写真在线体验:
https://www.modelscope.cn/studios/CVstudio/cv_human_portrait/summary
c.)魔搭写真智能agent在线体验:
https://www.modelscope.cn/studios/CVstudio/FaceChain_agent_studio/summary
除以上体验入口外,该项目也可作为插件在 sdwebui 中集成,另外也在同步拓展 comfyui 的插件中。在功能层面,目前已有人物写真、虚拟试衣、sad talker 等功能,另有更多应用在拓展中。
原理
虚拟试衣的基本模块为 sd、lora、controlnet、inpainting。除了相应基本模块外,还有一些特殊优化及超参设置,最后通过业务代码实现具象的功能。其详细架构图如下:
另外 sd、lora、controlnet、inpainting 等基础模块原理如下:
a.)sd相应原理:
sd 是在 2022 年 diffusion 的技术上进行了 latent 低维特征域的加噪去噪技术迁移,大大加速了 diffusion 技术的相应生态发展。相应原理如下:sd 是一个基于 latent 的扩散模型,常规的扩散模型是基于 pixel 的生成模型,而 latent diffusion 是基于 latent 的生成模型,它先采用一个 autoencoder 将图像压缩到 latent 空间,然后基于文本引导用扩散模型对 latent 进行加噪与去噪过程,最后送入 autoencoder 的 decoder 模块就可以得到生成的图像。sd 模型的基本功能是文生图功能,输入一段文本或一系列提示词,输出对应的图像。
sd 模型的主体结构如下图所示,主要包括以下三部分:
autoencoder:encoder 将图像压缩到 latent 空间,而 decoder 将 latent 解码为图像;
CLIP text encoder:提取输入文本的 text embeddings,通过 cross attention 的方式送入扩散模型的 UNet 中;
UNet:扩散模型的主题,用于实现文本引导下的 latent 生成。
▲ sd模型的基本结构示意图
b.)lora相应原理:
lora 是在 NLP 领域 LLM 大模型上提出的低秩权重矩阵 finetune 技术,此框架大大提升了大模型 finetune 的稳定性,目前其在 SD 上也有大规模的普及应用。相应原理如下:NLP 领域的一个重要范式是在通用域数据进行大规模预训练,然后在下游任务下 finetune。
前人研究表明,过参数化神经网络模型在训练后呈现低秩特性,因此原作者猜测,模型 finetune 过程中权重的变化同样具有低秩特性。因此 lora 通过将权重矩阵进行低秩分解间接训练神经网络的一些密集层,如下图所示。在 finetune 模型时固定原有参数,只训练低秩矩阵 A 与 B。
▲ lora 的低秩分解示意图
通过引入 lora 在特定风格或人物的文生图任务中对 sd 模型进行 finetune,可以有效学习对应的风格或人物信息。相比于全参数微调(full-finetune),lora 更适用于基于少量数据的微调,因此也更适用于在人物写真中学习风格和人物信息。
c.)controlnet相应原理:
controlnet 是一种通过添加额外条件来控制扩散模型的神经网络结构,在 sd 中基于 controlnet 增加条件输入,如边缘映射、分割映射、pose 关键点等信息,可以使生成的图像在上述信息上更接近输入图像,从而增强 sd 图像生成结果的可控性。controlent 定义一组输入条件作为神经网络的额外输入,并通过零初始化的 1*1 卷积(zero convolution)以及原网络模块的可训练副本将其与原始输入进行交互,并将输出结果与原网络输出结果相加。
由于两个 zero convolution 的初始化为 0,因此训练第一步的输出结果与不添加 controlnet 的输出结果一致。该方法可以使得神经网络在特定任务中进行高效 finetune 以提高其性能。在 sd 模型中,controlnet 控制 UNet 的每个层级,使用与 sd 相同的 12 个编码 block 以及一个 middle block,并在输出部分增加 12 个 skip-connections 以及一个 middle block 至 UNet,具体结构如下图所示。
▲ 应用于 sd 模型的 controlnet 结构示意图
d.)inpainting相应原理:
在 sd 中,图像 inpainting 功能是文生图功能的一个扩展:给定模板图像、重绘区域和输入文本,即可根据输入文本的引导生成重绘区域的内容。不同于文生图功能,图像 inpainting 的初始 latent 不是一个随机噪音,而是由模板图像经过 autoencoder 编码之后的 latent 添加高斯噪音得到,其中高斯噪音的比例通过 strength 参数进行控制。
而后对上述初始 latent 进行去噪,为了保证只修改重绘区域以内的内容,在去噪过程的每一步,都将 sd 预测的 noisylatent 在重绘区域外的部分用模板图像相同加噪程度的 noisy latent 替换。这样既能保证重绘区域以外的部分不发生变化,又可以在每一步去噪过程中实现重绘区域内外 latent 的交互,从而保证生成结果的整体自然性。
规划
目前 FaceChain 的整体规划主要有四个维度:a.)真人写真风格,b.)虚拟写真风格,c.)应用拓展,d.)生态拓展。正在进行 comfyui 插件的研发中。
更多阅读
#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
·
·
相关文章:

FaceChain开源虚拟试衣功能,打造更便捷高效的试衣新体验
简介 虚拟试衣这个话题由来已久,电商行业兴起后,就有相关的研发讨论。由其所见即所得的属性,它可以进一步提升用户服装购买体验。它既可以为商家做商品展示服务,也可以为买家做上身体验服务,这让同时具备了 B 和 C 的两…...
java的几种对象: PO,VO,DAO,BO,POJO
概述 对象释意使用备注PO(persistant object)持久对象可以看成是与数据库中的表相映射的Java对象,最简单的PO就是对应数据库中某个表中的一条记录。PO中应该不包含任何对数据库的操作VO(view object)表现层对象主要对…...

【使用Python编写游戏辅助工具】第三篇:鼠标连击器的实现
前言 这里是【使用Python编写游戏辅助工具】的第三篇:鼠标连击器的实现。本文主要介绍使用Python来实现鼠标连击功能。 鼠标连击是指在很短的时间内多次点击鼠标按钮,通常是鼠标左键。当触发鼠标连击时,鼠标按钮会迅速按下和释放多次…...

C++二分查找算法的应用:最小好进制
本文涉及的基础知识点 二分查找 题目 以字符串的形式给出 n , 以字符串的形式返回 n 的最小 好进制 。 如果 n 的 k(k>2) 进制数的所有数位全为1,则称 k(k>2) 是 n 的一个 好进制 。 示例 1: 输入:n “13” 输出:“3” …...

2022年12月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 列表L1中全是整数,小明想将其中所有奇数都增加1,偶数不变,于是编写了如下图所示的代…...

行业安卓主板-基于RK3568/3288/3588的AI视觉秤/云相框/点餐机/明厨亮灶行业解决方案(一)
AI视觉秤 单屏Al秤集成独立NPU,可达0.8Tops算力,令AI运算效率大幅提升,以实现生鲜商品快速准确识别,快速称重打印标签,降低生鲜门店运营成本,缓解高峰期称重排队拥堵的现象,提高称重效率&#…...
fo-dicom缺少DicomJpegLsLosslessCodec
VS2019,fo-dicom v4.0.8 using Dicom.Imaging.Codec; ... DicomJpegLsLosslessCodec //CS0103 当前上下文中不存在名称“DicomJpegLsLosslessCodec” 但官方文档的确存在该类的说明DicomJpegLsLosslessCodec 尝试:安装包fo-dicom.Codecs,注…...

跳跳狗小游戏
欢迎来到程序小院 跳跳狗 玩法:一直弹跳的狗狗,鼠标点击屏幕左右方向键进行弹跳,弹到不同物品会有不同的分数减扣,规定的时间3分钟内完成狗狗弹跳,快去跳跳狗吧^^。开始游戏https://www.ormcc.com/play/gameStart/198…...

CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境
CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境 文章目录 CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境一、前言二、资料收集三、Ubuntu18.04从安装到更换实时内核1、下载安装Ubuntu18.042、下载安装实时内核,解决编…...
shell_70.Linux调整谦让度
调整谦让度 1.nice 命令 (1)nice 命令允许在启动命令时设置其调度优先级。要想让命令以更低的优先级运行,只需用nice 命令的-n 选项指定新的优先级即可: $ nice -n 10 ./jobcontrol.sh > jobcontrol.out & [2] 16462 $ $ ps -p 16462 -o pid,…...

【jvm】虚拟机栈
目录 一、背景二、栈与堆三、声明周期四、作用五、特点(优点)六、可能出现的异常七、设置栈内存大小八、栈的存储单位九、栈运行原理十、栈帧的内部结构10.1 说明10.2 局部变量表10.3 操作数栈10.4 动态链接10.5 方法返回地址10.6 一些附加信息 十一、代…...
Flink SQL Over 聚合详解
Over 聚合定义(⽀持 Batch\Streaming):**特殊的滑动窗⼝聚合函数,拿 Over 聚合 与 窗⼝聚合 做对⽐。 窗⼝聚合:不在 group by 中的字段,不能直接在 select 中拿到 Over 聚合:能够保留原始字段…...

【鸿蒙软件开发】ArkUI之容器组件Counter(计数器组件)、Flex(弹性布局)
文章目录 前言一、Counter1.1 子组件1.2 接口1.3 属性1.4 事件 1.5 示例代码二、Flex弹性布局到底是什么意思? 2.1 权限列表2.2 子组件2.3 接口参数 2.4 示例代码示例代码1示例代码2 总结 前言 Counter容器组件:计数器组件,提供相应的增加或…...
PyTorch入门学习(十一):神经网络-线性层及其他层介绍
目录 一、简介 二、PyTorch 中的线性层 三、示例:使用线性层构建神经网络 四、常见的其他层 一、简介 神经网络是由多个层组成的,每一层都包含了一组权重和一个激活函数。每层的作用是将输入数据进行变换,从而最终生成输出。线性层是神经…...
农业水土环境与面源污染建模及对农业措施响应
目录 专题一 农业水土环境建模概述 专题二 ArcGIS入门 专题三 农业水土环境建模流程 专题四 DEM数据制备流程 专题五 土地利用数据制备流程 专题六 土壤数据制备流程 专题七 气象数据制备流程 专题八 农业措施数据制备流程 专题九 参数率定与结果验证 专题十 模型结…...

回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测(多指标、多图)
回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测(多指标、多图) 目录 回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测(多指标、多图)效果一览基本介绍程序设计参考资料 效果一览…...
扫地机器人遇瓶颈?科沃斯、石头科技“突围”
曾经,扫地机器人行业也曾有过高光时刻,而如今,扫地机器人已然告别高增长阶段,增速开始放缓。据中怡康零售推总数据显示,2023年上半年,中国扫地机器人市场规模为63.6亿元人民币,同比下滑了0.6%&a…...

基于SSM的防疫信息登记系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
VBA将字典按照item的值大小排序key
方法:利用数组交换位置 sub 字典排序() s 0 Dim arr(dic1.keys)将字典key和value存入一个数组中 For Each ke In dic1.keysarr(s) Array(ke, dic1(ke))s s 1 Next进行排序 For i LBound(arr) To UBound(arr) - 1For j i 1 To UBound(arr)If arr(i)(1) >…...

MySQL第四讲·如何正确设置主键?
你好,我是安然无虞。 文章目录 主键:如何正确设置主键?业务字段做主键自增字段做主键手动赋值字段做主键 主键总结 主键:如何正确设置主键? 前面我们在讲解存储的时候,有提到过主键,它可以唯一…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...