双11专栏 | 基于可微渲染模型的妆容解析技术-程序员宅基地

技术标签: 算法  python  网络  编程语言  大数据  

fa68658421c63f9d1d52f54cb53761f5.gif

2021年,我们推出了基于妆容解析技术的美妆AR自动配色服务,从而大幅度提升了美妆AR素材生产效率,加速了AR虚拟试妆的商品规模化覆盖。此外,基于妆容解析技术,我们推出了“口红搜”,用户可以通过淘宝拍照上传达人图像,在淘宝中实现同材质、同色号的口红精细化召回。

背景

近年来,以AI技术和端侧渲染技术为加持的AR虚拟试妆,迅速成长为线上美妆购物的一种全新体验模式,并受到越来越多的消费者好评。AR虚拟试妆技术使得用户可以在足不出户的情况下体验美妆产品的上妆效果,体验到跟实体店一致甚至更加便捷的试妆效果。同时,随着AR试妆业务的兴起,用户的需求也逐渐多样化。一方面,用户希望尽可能多的线上美妆商品能够支持虚拟试妆的效果,从而能够尝试更多的妆效组合,进行更充分地购买决策。另一方面,用户不仅仅希望利用AR体验平台提供的部分妆容,同时也希望体验多种渠道的相似妆容,例如,用户在别的渠道看到一款达人使用的口红,希望找到相似色号的口红商品并能够体验该口红的实际上妆效果。对于第一种情况,要求平台不断提升AR虚拟试妆的商品覆盖率,加速AR虚拟试妆的规模化,从而可以尽可能地容许消费者体验平台上的所有美妆商品。对于第二种情况,则需要平台不仅具备在库商品的试妆功能,同时也要具备解析用户自定义妆容的能力,从而在平台商品中为用户匹配相似妆容的商品。

为了支撑更广泛的用户需求,2021年,我们基于妆容解析技术推出了面向商家的虚拟试妆自动配色服务,能够大幅度地提升商家AR素材生产的效率,从而能够加快AR美妆的规模化覆盖,为消费者提供更加完善的AR虚拟试妆体验。基于妆容解析技术我们推出了口红搜,用户可以通过上传图像的方式精确搜索淘宝同色号口红,实现口红商品的精准召回。本文将简要介绍我们的妆容解析技术,主要分为三个部分,一是妆容解析技术具体分析及面临的技术挑战,二是我们的技术方案,第三部分是具体的应用场景及未来在AR虚拟试妆方面的演进方向。

问题分析及挑战

  问题分析

74e27e92689ad85301c7a9726ac8b338.png

  • 快速提升AR试妆的商品覆盖率

素材的质量及生产效率是决定AR商品覆盖的前提。以口红类目为例,商家需要针对一款口红的每个色号配置对应的渲染参数,而同一商品往往包含大量的色号,同时,配置参数需要不断调整调优,才能保证渲染效果跟商品的实物效果一致。因此,降低美妆素材生产的成本,提升配置效率,同时保证配置的质量是AR虚拟试妆的核心环节,同时也是扩大美妆AR覆盖和提升消费者体验的重要前提。要实现美妆商品的自动配色,则需要研发一种基于商品图像自动提取妆容参数的能力,从而能够实现批量的AR商品配置,快速提升AR商品的覆盖率。

0319eb3dadda97b901fb46666ba801c9.png

  • 妆容解析及妆容检索

对于用户上传的妆容图像,平台需要具备基于带妆图像解析妆容参数的能力,从而能够与在库商品的妆容进行匹配,能够为用户召回相似的商品。对于用户上传的带妆图像,要实现手淘美妆商品的同色号、同材质精确检索,一个重要的前提是需要将用户上传的妆容图像和手淘美妆商品的商品图像对应的妆容特征统一映射到一个空间中。

基于以上两种需求,我们设计并实现了妆容解析系统,能够基于上妆图像实现妆容参数的自动解析,从而能够实现美妆AR的自动配色。同时,基于妆容解析系统,我们能够实现用户上传妆容图像与在库美妆商品的精准匹配,从而能够为用户推荐相似妆容的美妆商品。

  妆容解析技术挑战

fd57b3c790fb63f7c22e174b450eda02.png

商品图像比较复杂,同时经过了很多后期的处理

通过商品图进行美妆渲染参数的自动解析是一项极具挑战性的工作,主要体现在以下几点:

  • 美妆产品之间色差小,需要做到精确解析

例如,同一款口红中,不同色号间的色差一般很小,因此需要在试妆时准确的体现出每个色号具体的颜色和材质,同时要体现出不同色号之间的差别。因此,模型需要保持解析参数的精准度。

  • 美妆参数对外部环境比较敏感,包含光照、图像分辨率等等

图像的外部环境因素会对最终色号造成很大的影响,特别是光照、分辨率等等。不同商品其拍摄环境相对比较自由,因此外部环境的差异往往会比较大。因此,模型需要对不同光照和其它外部环境的变化具有很好的鲁棒性。

  • 模特本身信息,如肤色、唇色、发色等对最终上色效果影响较大。

对于同款色号来说,不同的模特上妆后会有不同的表现,例如唇色本身对口红上妆后的颜色具有决定性的影响,因此模型需要能够处理美妆这种“千人千色”的特点。

技术框架

2626fd3323fc7dcf5b1d7c19269498dd.png

在淘系的商品中,不同的商品图可能包含不同层面的信息,对于口红类目的商品图,其一般包含三种不同类型的信息,可以通过综合利用三种信息提升参数解析的准确性。

  1. 模特图,即包含模特试色的结果;模特试色图是消费者线上购物进行比较和决策的首要信息,其包含了口红的实际上妆效果,因此模特试色图是我们进行妆容参数解析的主要信息来源。

  2. 带有口红膏体或口红色块的图像;部分商品会带有表示色号的色块图像,用来向消费者展示口红的整体颜色,但需要注意的是,色块的颜色只表示口红本身的颜色,口红本身膏体的颜色与实际试妆的颜色会有一定差别。

  3. 文本信息,商品图中通常会包含比较宽泛的色系和材质相关的描述信息;该信息可以作为一定的参考,综合提升妆容解析参数的精准度。

为了综合利用三种不同的信息,我们的妆容解析系统对于不同的信息来源采用了不同的解析技术。其中,

  1. 模特试色图包含了最直接同时也是相对最准确的色号参数信息,为了从试妆模特图中解析出准确的妆容参数,我们提出了一个基于CNN的妆容解析模型(后文简称Attribute-Net)来进行妆容参数的解析。

  2. 对于色块信息或膏体信息,我们通过训练的检测模型(YOLO)定位到色块信息,然后基于图像处理的方法进行色号的提取。

  3. 文本信息:我们通过一个OCR模型来进行商品文本图的识别和解析,筛选出色号及材质相关的信息。

对于后两种信息,我们可以利用色块图及文本信息得到相应的颜色和材质信息作为商家配色的初始配置,但这种配置方法并不能完全准确的得到妆容参数,特别是对于一些特殊妆效的商品并不能完全提取出对应的妆容参数。因此,要得到准确且完整的妆容参数,需要基于模特试色图,利用Attribute-Net来解析对应的渲染参数。下面我们将简要的介绍在Attribute-Net中我们使用的两种方案。

  方案1 :基于参数回归的妆容解析框架

f76391f058b6c8a4d4341149b4e00e10.png

在第一种方案中,我们直接直接使用一个基于CNN的回归框架来实现渲染参数的回归。其中

  1. 参数编码:为了保证更加稳定的训练结果,我们对渲染参数进行了编码,其中针对颜色相关的参数,在Lab颜色空间进行了基于直方图的量化编码;针对材质等离散属性,进行了one-hot编码。

  2. 网络结构:针对渲染参数不同的特点,我们利用不同的网络分支进行不同参数的回归。特别地,对于色彩相关的参数信息,我们主要在浅层网络中进行相关参数的回归。对于材质等离散属性,更多地依赖于语义信息,我们利用网络的深层特征进行分类。

  3. 损失函数:对于颜色等连续参数的回归,我们利用MSE进行每个颜色分量的损失度量,同时我们利用修改后的CIEDE距离作为颜色差异的整体度量。同时,在模型训练时加入Weight Normalization 及 weighted CE解决相似类别分类及类别不平衡问题。

  4. 训练数据:我们首先利用渲染引擎生成的数据进行模型的预训练,训练完毕后freeze部分网络层,采用一种渐进式的数据标注方法进行线上数据的过滤和标注,逐步增加训练样本,进行网络的微调。

通过针对性的网络设计,我们训练的模型能够很好地进行相关参数的解析,从而能够自动地利用商品图进行渲染参数的配置。但在实际的应用及对测试集的分析发现,当前的模型还存在一些问题。其中一个突出的问题是部分样本其整体的loss比较小,但最终配置参数渲染的效果离真实效果相差较大。在下节我们将分析产生这种问题的原因及相关的改进方案。

  方案2:基于可微渲染模型的妆容解析框架

582e3e61e0cb2c1390511640fd1890d9.png

如上节所述,部分样本其整体的loss相对比较小,但最终的渲染效果却差异比较明显。其根本原因还是渲染结果是由多个参数共同决定的,我们的最终目标是需要解析得到的参数渲染得到的图像与真实图像足够接近,单独去度量每个参数的损失并不能完全等价的表达渲染结果的误差。因此,如果我们能直接度量渲染结果与真实图像之间的误差,参数的解析准确率将得到进一步提升。但渲染引擎本身不可微,因此无法直接加入网络进行训练。要实现直接度量渲染图像与真实图像的误差,我们需要一个可微分的渲染引擎。

基于以上分析,我们设计并训练了一个妆容渲染模型(MakeupRender)来直接模拟渲染引擎的渲染效果,从而可以基于渲染参数直接度量渲染图像与真实图像的误差,从而更好地训练妆容解析网络。妆容渲染模型以带渲染图像和渲染参数作为网络的输入,经过一个Encoder-Decoder结构,最终输出渲染后的妆容图像。待妆容渲染模训练完毕后,我们将该网络的参数固定,加入到妆容解析模型中进行训练,针对妆容解析模型解析的参数,利用可微渲染模型进行渲染,与真实图像进行MSE计算作为渲染的loss,最终实现网络参数的更新。下面我们简要介绍一下MakeupRender的基本结构。

  1. 网络整体结构:为了实现模拟渲染引擎的效果,我们以渲染参数和待渲染图像作为输入,经过一个Encoder-Decoder结构的映射网络,输出最终的渲染图像。

  2. 参数映射:与StyleGAN类似,我们对输入的参数利用一个映射网络对渲染参数映射到隐空间中,最终和待渲染图像一起输入到网络中。

  3. 损失函数:我们利用 L1 loss来度量生成图像和渲染引擎渲染图像之间的误差,同时我们加入了Perceptual Loss和adversarial loss来进行网络的优化。

通过方案2的优化,妆容解析的准确率相比方案一有了明显的提升,核心原因还是方案二引入了妆容渲染模型,能够更好地度量渲染图像与真实图像的差异,从而得到更精确的参数。

业务应用

有了妆容解析模型,我们可以进行很多场景的应用,目前比较典型的应用有以下几个场景:

  AR美妆参数配置

d1d8a1c2bb81423c11558bd849c36c9d.png

通过妆容解析模型,在AR虚拟试妆场景,我们可以基于商品图自动进行渲染参数的解析,从而实现美妆AR参数的批量自动化配置,极大地降低了商家配置的工作量,同时提升了配置的准确度。通过线上数据的测试,我们的系统能够达到80%以上的配置准确率。对于自动配置不是完全正确的商品,通过以自动配置参数为基础配置进行调整,也能够很好地提升配置效率,减少人工调整的次数。目前,我们已经在口红、染发等类目提供了自动配置的服务,帮助商家更快更好地进行美妆AR参数的配置。(上图每一组结果中左侧图像为商品图,右侧图像为我们解析的参数渲染得到的上妆图)

  口红搜

a4ef4609c7ce96e607b8c8cd7d0e69ed.png

传统的商品搜索大多基于商品粒度(Item),但对于美妆类商品,以口红为例,用户希望实现同色号口红的搜索,例如明星或达人同款口红。要实现这种同色号口红的召回,则必须构建基于SKU粒度的精细化召回。目前部分平台提供了基于色系或材质的过滤和筛选,但色系及材质属性一般来源于商品本身的附加信息,其信息一般来自于商品附加信息,其准确性一般较低。此外,不同商家对于色号及色系的定义并不完全一致,因此,基于商品标签的信息难以进行精确的检索。

基于妆容解析系统,我们可以实现美妆商品的精细化检索。对于库中的所有的口红商品,我们利用妆容解析系统进行其妆容参数的解析,从而将所有商家的商品统一到同一空间中,因此可以利用该空间中的特征及相关参数进行准确的同色号商品召回。

总结及展望

我们将持续优化和打磨AR虚拟试妆技术,不断提升用户体验,优化色彩及材质还原效果,为消费者提供更加真实的试妆效果。基于妆容解析系统中积累的可微渲染模型,我们将积极探索基于可微渲染的美妆渲染技术,提升妆容渲染的贴合感和真实感。同时,基于3D的美妆渲染技术也是一个可以提升渲染效果的技术方向,特别是对于高光、材质的处理有着独特的优势。

在应用层面,基于当前的妆容解析技术,我们可以结合用户妆容分析其妆容偏好,结合人脸属性特征和商品流行趋势,为用户提供基于妆容解析技术的AI妆容搭配间,为用户提供个性化的妆容搭配和美妆商品推荐服务。

参考文献

  1. 淘系技术. 先试后买!解析购物新体验背后的移动AI+AR技术.https://mp.weixin.qq.com/s/RQ7RO8iTqWyA5SWHQBd5Gg. 2021.1.

  2. Karras, Tero, et al. "Analyzing and improving the image quality of stylegan." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.

  1. Johnson, Justin, Alexandre Alahi, and Li Fei-Fei. "Perceptual losses for real-time style transfer and super-resolution." European conference on computer vision. Springer, Cham, 2016.

  2. YOLOv5. https://models.roboflow.com/object-detection/yolov5

  1. Salimans, Tim, and Durk P. Kingma. "Weight normalization: A simple reparameterization to accelerate training of deep neural networks." Advances in neural information processing systems 29 (2016): 901-909.

双11技术文章特辑

小编根据不同技术方向和内容主题,对“双11”的相关技术文章进行分类(内容如下),不定期推送,敬请期待。

移动技术:淘宝长辈模式、预渲染模式、淘宝小部件

技术质量:智能测试

音视频:淘宝3D直播间、淘宝直播GRTN

算法:知识图谱、端上推荐系统

后端:XQUIC的大规模应用

前端:稳定性建设

‍△ 点击卡片回看双11嘉宾解读美妆新技术‍

✿  拓展阅读

23ad23d9d73f5b40568c4247f3d3cd3e.png

c645b4feb9143415382c109c3255ae89.png

作者|文培

编辑|橙子君

出品|阿里巴巴新零售淘系技术

7d7665629577232d98e70ad79f9cbbb8.png

03395c01413d6242f78e97efcffb918b.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Taobaojishu/article/details/121391461

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签