双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

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签