随着人工智能技术的不断发展,各大美颜软件的妆容变得越来越“自然无痕迹”,大家可能会好奇这背后的技术原理是什么。因此,本期“技术的真相”将通过简易的AR口红试妆带大家走进虚拟试妆技术。
一、 项目简介
在刚刚过去的七夕选礼物的重要仪式中,大家有没有在挑选口红时感到茫然,就怕一不小心买成“直男”色号。其实,在许多电商平台都已经具备了试妆功能,点击按钮之后就能够尝试口红、睫毛、腮红、眉毛、眼影等多种美妆产品的试戴效果,实现足不出户就能选到心仪的美妆产品,而这种功能的背后就是虚拟试妆算法。
虚拟试妆算法是一种典型的计算机视觉与计算机图形学相结合的技术,它通过检测面部区域的关键点,在特定区域使用AR增强现实的渲染技术,最终可以实现模拟化妆效果,能够在电商、直播、短视频等平台具有广泛的应用。本文将从零开始搭建一个简单的AR口红试妆系统,帮助大家加深对于虚拟试妆技术的理解。
二、 技术实现
通常虚拟试妆算法主要包含检测上妆区域以及妆容渲染两个步骤,下面本文将分别介绍实现方案。
01 检测上妆区域
1. 人脸关键点检测
在上妆之前,我们需要知道在哪些位置进行上妆,因此,我们首先对于输入的图片进行人脸的关键点检测。
目前市面上有多家视觉厂商提供了人脸关键点检测的功能,本文选择使用了Face++人工智能开放平台提供的人脸关键点检测(https://www.faceplusplus.com.cn/sdk/face-landmarks/)。注册控制台账号,创建API Key,下载SDK开始实现。对于试妆来说关键点数量越多,最终的试妆效果越好,本文以介绍流程为主,因此使用的关键点数量较少,有兴趣的读者可以选择使用Face++提供的人脸稠密关键点。
(图:可视化人脸关键点)
2. 人脸关键点平滑
通常我们使用的AR试妆系统均为实时系统,因此,我们需要将视频流拆解成单帧图像输入到人脸关键点检测网络,这导致输出的视频中人脸关键点会有一定的抖动。其中一方面是因为预测的关键点与实际关键点位置有小幅度的偏差,导致视频中相邻帧之间预测点位差异超过了实际点位的差异。另一方面,视频中人眼观察的静止与图