本文为「Dev for Dev 专栏」系列内容,作者为声网视频组 AI 算法工程师 周世付。
人脸检测、人脸关键点检测,是计算机视觉的基础算法。许多酷炫应用背后,例如美颜、贴纸、人脸驱动 avatar,是依赖着人脸检测、人脸关键点检测的算法。
人脸检测的常规做法,是从图像中找到人脸的位置并采用矩形框的方式将人脸标示出来。由于人脸检测提供的信息比较粗糙,要想获取更精细、详细的人脸信息,比如,人脸的脸型、嘴巴、眼睛、鼻子的位置和几何形状,就需要进行人脸关键点检测。
人脸关键点检测,也称为人脸关键点定位或者人脸对齐,是在人脸检测获取到人脸在图像中具体位置的基础上,进一步定位人脸器官的位置。
这些人脸器官位置信息,是一些具有明确语议定义的离散点,因此称为人脸关键点。通常,人脸关键点定义在人脸的脸颊、嘴巴、眼睛、鼻子和眉毛区域,将人脸关键点连接起来,能够描绘人脸的几何特征。
人脸关键点的类型,可划分为 2D 关键点和 3D 关键点。2D 关键点,输出的是人脸关键点的 x、y 的坐标信息。常用的 2D 关键点数量 5 点、68 点、106 点,随着技术的发展及应用对人脸关键点提出更高要求,也出现了 280 点甚至是 1000 点的人脸关键点方案。
3D 关键点,则输出关键点的 x、y、z 的坐标信息。3D 关键点的检测,是采用 3DMM 模型,重建人脸的 3D mesh,再将 3D mesh 投射到 2D 的图像空间。由于 3D 关键点比 2D 关键点多了深度信息,在人脸姿态估计、3D 物体穿戴方面,优势较为明显。
利用人脸关键点,可以定位嘴巴、眼睛、鼻子、眉毛的位置,以及推断脸型、嘴巴、眼睛的几何形态和头部的姿态。在不同的表情、姿态、光照和遮挡条件下,准确、快速、稳定地定位人脸关键点,是一项极具挑战的任务。
人脸关键点检测的方法分为传统机器学习方法和深度学习方法。传统机器学习的方法,典开的代表包括 ASM(Active Shape Model)、AAM(Active Appearance Models)。
ASM 是由 Cootes 于 1995 年提出的经典人脸关键点检测算法,ASM 是一种基于点分布模型的算法,外形相似的物体的身体形状,可通过若干关键点的坐标依次串联形成的一个形状向量表示。ASM 算法需要人工标定的方法预先标定训练集,经过训练获得形状模型,再通过关键点的匹配实现特定物体的匹配。ASM 算法的优点是模型简单,架构清晰,对轮廓形状有较强的约束,但近似于穷举搜索的关键点定位方式,限制了其运算的效率。
AAM 是 ASM 的进阶版,在形状约束的基础上,加入整个脸部的纹理特征。传统机器学习的方法,检测的速度相对较快,但关键点检测的精度有限,难以满足应用的要求。
深度学习方法,在关键点检测的精度上,碾压传统机器学习方法。基于深度学习的人脸关键点检测方法,大致可分为两个流派:热力图方法和和直接回归方法。热力图方法,是每个关键点生成一个热力图,关键点处的值最大,离关键点越远,值越小。热力图方法,关键点检测的精度高,并可判断关键点是否被遮挡,对遮挡的鲁棒性较好。由于热力图大小通常是输入图像的 1/4,对内存的占用大。检测关键点的数量越多,内存占用越大,限制了热力图方法在端侧设备上的应用。直接回归方法,通过卷积神经模型预测关键点的坐标,内存占用小,关键点检测的精度较热力图方法差一些。由于直接回归方法内存占用小,检测速度快,在端侧设备上的应用前景广阔。
人脸关键点的应用领域十分广泛,主要应用方向可划分为 4 类:人脸姿态对齐、人脸美颜、人脸贴纸和 avatar 模型驱动。
人脸姿态对齐,在人脸识别领域,同一个 ID 的人脸在不同姿态下,人脸的相似度变化较大,人脸识别的精度不同。为了提高人脸识别的精度,需要将不同姿态的人脸,对齐到一个中立的姿态。这个对齐的操作,依赖人脸关键点提供的位置信息。人脸姿态对齐,对关键点的精度和数量,要求不高,通常只需要 5 个关键点,定位眼睛、鼻子和嘴巴。
美颜,作为当今社交 app 中不可或缺的基本功能,发个朋友圈、开个直播前,不需要花时间化个妆,只需打开美颜,即可瞬间提升个人的颜值,将自己最美的一面显现给朋友或观众。美颜的种类繁多,五花八门,大致可以分为大类:1) 美型,调整脸颊、眼睛的形状,即将圆脸调整为修长的瓜子脸,把眼睛调大,达到大眼、瘦脸的效果;2) 磨皮,目的是将脸部的皱纹、痘印、斑点去除,提升皮肤的平滑度和光泽度。脸部不同区域,对磨皮程度的需求不一样,例如眼睛区域需保持清晰通透,磨皮程度要低一些或不磨皮。3) 美妆,是将化妆品的效果,融合到用户的脸上,以视频或图像的方式,呈现给用户,从而可让用户无需到线下门店体验试妆效果,线上就能体验到化妆品在自己脸上的效果。美颜,对人脸关键点检测的精度和数量,要求很高。在关键点精度方面,对眼睛、嘴唇的定位精度尤为高;关键点数量方面,则是越多越好。
贴纸,是将电子的道具,如眼镜、帽子、假发、皇冠、项链、耳环等,“穿戴” 到用户的脸上或头部,为用户定制个性化的形象。手机相机、社交 app 提供了各种各样的道具,供用户选择。
贴纸,对人脸关键点的要求,没有美颜高,但高精度的人脸关键点,对贴纸的效果,是有帮助的。
人脸驱动 avatar,近年来元宇宙、虚拟人、卡通人物的概念层出不穷,其背后的技术本质是如何将自然图像中真实人脸的表情、姿态等信息,迁移到 avatar 模型,驱动 avatar 维妙维肖地 “模仿” 真人。人脸关键点,作为有效的人脸信息载体,可进一步提炼出符合 avatar 模型的语议信息,从而驱动 avatar。人脸驱动,对人脸关键的要求是最高的。人脸关键点的分布,除了定位脸颊、眉毛、眼睛、鼻子、嘴巴外,还要求定位面颊部位。另外,人脸关键点定位越精准,捕捉人脸的微表情越精细,avatar 才越生动。
人脸关键点检测算法,在实际应用过程中,面临着诸多的挑战,需要解决的问题,具体表现为:
1、在不同人脸姿态、光照条件、脸部被遮挡时,关键点定位要准确;
2、连续视频帧检测,帧间关键点的抖动,要在可控范围或被消除;
3、检测速度够快,可在端侧设备实时运行。
为了达到更准确的关键点定位,学术界通常采用基于热力图的方法,采用更大更深的模型,但其代价是模型对算力要求高,无法在端侧设备实时运行。其次,为了满足不同条件下,关键点定位准确,业界通常会自建大规模的训练集。
为了满足美颜、贴纸、avatar 驱动应用对人脸关键点的精度的要求,声网自建了大规模的人脸关键点数据集。人脸关键点的数据集建立过程中,充分考虑了以下几个因素:
1、在数据采集设备方面,覆盖了各种类型手机的前置/后置摄像头、不同类型的笔记本摄像头和 USB 摄像头。
2、不同光线条件下采集人脸图像,包括强光、暗光、背光等条件。
3、多个角度、姿态、变换远近拍摄人脸图像。
4、穿戴不同的遮挡物进行人脸图像拍摄,包括眼镜、口罩、帽子,以及手部遮挡嘴巴、脸颊、眼睛。
5、人工标注人脸关键点,并对标注精度进行二次人工审核,确保人工标注的关键点是准确的。
声网自研的人脸关键点算法,利用深度学习技术,设计了轻量级模型,满足移动端设备实时运行的要求,其具备如下几个特点:
1、支持 106 个关键点的检测,关键点覆盖了脸颊、嘴巴、鼻子、眼睛、眉毛区域,能够满足大多数应用对关键点的点数要求。
2、推理速度快,在移动端设备可实时。结合人脸检测和人脸关键点检测的推理,耗时控制在 10ms 以内,为其它实时应用提供富余的时间余量。
3、支持人脸姿态的欧拉角预测。
4、支持眼球跟踪。
5、支持关键点防抖功能,保证在视频中保持关键点既精准又稳定。
声网人脸关键点算法,为美颜、贴纸、avatar 等应用提供基础的技术能力,结合声网的 RTC 技术,可为开发者提供更加完备的解决方案。点击阅读即可进一步了解详情。