APP下载

基于人脸尺度约束的人像自动抠图方法

2022-01-28黄叶珏褚一平

计算机应用与软件 2022年1期
关键词:人脸关键点卷积

黄叶珏 潘 翔 褚一平

1(浙江经贸职业技术学院信息技术系 浙江 杭州 310018) 2(浙江工业大学计算机科学与技术学院 浙江 杭州 310023) 3(杭州海量信息技术有限公司 浙江 杭州 310012)

0 引 言

自然图像抠图[1]主要用于实现分离目标物体前景和背景,它是计算机图像处理的一个热点研究问题,也是许多图像特效处理的基础。自然图像抠图一般以彩色图像I作为输入,输出图像背景B和前景F,它假定图像I的每个像素i的值是由背景B和前景F线性组合而成,即Ii=(1-ai)Bi+aiFi,其中系数ai∈[0,1]。对于RGB三通道图像的每个像素,由于该公式存在3个已知变量和7个未知变量,所以需要用户通过交互的方式作草图或生成三分图(Trimap),即在图像中指定前景、背景、边界的未知区域来辅助完成求解。

随着自然图像抠图和图像语义理解研究取得的进展,针对简单背景或者特定目标类型的图像,研究人员提出了一些无需用户交互操作的自动抠图算法。针对简单背景图像,谭文双等[2]采用Grabcut算法[3]分割背景与前景,根据前景目标的边界产生三分图实现自动抠图并用于生成证件照。近十年来,图像语义分割[4]已经取得了非常大的进展,采用图像语义分割技术生成人像和汽车等特定类型的三分图实现自动抠图成为了现实。文献[5]首次提出了采用深度卷积网络结构学习生成人像半身照的三分图,并构建了抠图层达到人像自动抠图的目的。此后不少学者受到该方法启发,提出了一些类似的解决方案[6-7]。

在自然图像抠图中,提供准确的三分图是非常关键的,它直接影响抠图的效果。在人脸识别领域,采用人脸关键点对人脸进行校正可大幅提高识别的精度。受到该思想的启发,本文从提高三分图精度着手,提出一种根据人脸关键点估计人像尺度,通过规范化人像尺寸来控制生成比较准确的三分图,使得人像自动抠图算法精度不受人像在图像中占比大小不同的影响。针对自助拍摄证件照场景,如图1(a)和图1(c)所示,用户所拍摄的照片有大头照、半身照、全身照、有横拍、有竖拍等,人像在图像中的占比是不可控的,我们构建了一个包含19 118幅人像的训练测试数据集(其中500幅测试图像),用于训练和测试本文的模型。还提出一种多级微调的方式来训练模型,以降低模型的训练难度并获得更好的效果。图1中,(a)和(c)为手机自助拍摄的人像照片,人像在图像中的占比大小不一;(b)和(d)为人像自动抠图之后,裁剪成358×441尺寸的证件照。

图1 算法在自助证件照拍摄场景中的应用

1 相关工作

在深度卷积网络流行之前,自然图像抠图一般采用采样的方法[1,8-11]和基于传播的方法[11-13]。Cho等[14]最早利用卷积网络实现自然图像抠图,其设计了一个卷积网络用于重构闭合抠图[12]和KNN抠图[13]的抠图效果。文献[5]使用卷积网络自动生成人像的三分图,并构造一个抠图层实现人像自动抠图。Zhu等[6]设计一种轻量级的自动人像抠图卷积网络,可部署在移动设备上使用。Adobe公司的研究团队[15]首次提出了真正意义上通过卷积网络直接预测抠图中的Alpha图像。阿里巴巴的研究团队[7]在文献[5]和文献[15]的基础上,构造了一个可端到端训练的卷积网络来实现人像的自动抠图。

在训练数据集方面,最权威的是alphamatting.org的数据集[16],它只有27幅训练数据和8幅测试数据,这些数据数量太少无法用于训练深度卷积网络。为了训练深度网络,文献[5]建立了包含2 000幅图像的数据集,该数据集采用闭合抠图[12]和KNN抠图[13]来生成,它的缺点是与其他几个数据集相比,Alpha图像质量不是很高。Adobe公司的研究团队创建了493幅高质量的训练图像和50幅测试图像[15],通过与MS COCO数据集[17]和Pascal VOC数据集[18]合成产生49 300幅训练数据和1 000幅测试数据。该数据集的特点是质量高,但人像数据较少。阿里巴巴研究团队创建了包含35 513幅高质量人像的数据集[7],只是该数据集为私有还未公开。

2 人像自动抠图方法

在人脸识别领域,先人脸关键点校正再识别的方式已成为共识,受到该思想的启发,设计了一种通过人脸关键点估计人脸尺度,进而得到人体的尺度,通过约束人体尺度来训练人像三分图生成网络,使得该网络可以生成标准化的人像三分图,通过保证人像三分图生成的一致性来获得更好的抠图效果。

如图2所示,整个自动人像抠图流程由以下几个部分组成。第一部分为人脸检测网络和基于人脸关键点的图像变换模块,即图2中的第一行,原始的RGB三通道图像经过人脸检测器定位到人脸位置并获得左右眼瞳、鼻尖和左右嘴角五个人脸关键点坐标,根据人脸关键点使用图像变换矩阵把人像统一变换到标准的1 026×513的图像中,并记录变换矩阵的参数;第二部分为人像三分图生成网络,1 026×513的人像图像输入到该网络用于生成人像三分图;第三部分是抠图网络,人像的三分图与RGB三通道图像输入到该网络生成初始的Alpha图像,使用三分图的前景和背景区域重置该Alpha图像的前景和背景区域,并根据第一部分预先记录的图像变换矩阵参数恢复到原始图像尺寸,得到最终的Alpha图像。

图2 基于人脸尺度约束的人像自动抠图方法的前向推断流程

2.1 人脸关键点约束的三分图生成方法

本文的目的是通过人脸尺寸作为参考,控制人像三分图中未知区域的比例,使得三分图生成网络可以通过训练输出比较精确的人像三分图来避免在实际应用场景中人像在图像中因不同占比而影响抠图的精度。

利用人脸检测方法定位图像中人脸位置并获得左右眼瞳、鼻尖和左右嘴角五个位置的关键点坐标。两眼瞳距在人脸识别中是一个比较常用的表示人脸大小的参照值,但当人脸姿态变化很大时,人脸的宽度和高度会产生变化。当人脸左右转动的姿态角度变化时,两眼瞳距也随之变化;而上下抬头低头则影响人脸的高度。为了获得与人脸姿态变化相对稳定的参照值,我们采用式(1)来表示。

S=max(P,N)

(1)

式中:S为人脸尺度值;P为两眼瞳距;N为瞳距中心到鼻尖的距离。

一般情况下,训练所用的三分图是根据标注的Alpha图像来生成的。在Alpha图像中,需要把前景和背景交界部分转换成未知区域以生成三分图。先对Alpha图像做腐蚀和膨胀操作,再做逐像素相减操作可得到三分图。在此,使用人脸尺度值S控制腐蚀和膨胀算子的函数核大小,从而控制人像三分图中未知区域的占比。具体如式(2)所示。

(2)

受空间变换网络STN[19]的启发,文献[20]采用了类似的思想用于人脸标准化处理,根据人脸的两眼关键点通过相似变换矩阵把人脸标准化到128×128的图像上进行识别。与上述方法类似,以人脸鼻尖作为基准点,通过等比缩放、平移和裁剪变换公式把人像变换到标准的1 026×513的图像中。变换矩阵如下:

(3)

式中:a=48/S;b=γx-162;c=γy-255;(γx,γy)为原图像中鼻尖关键点的坐标。

为了获得精细的人像三分图,选择合适的卷积网络结构也是非常重要的。谷歌研究团队提出的Deeplabv3[21]图像语义分割框架有机结合了空域金字塔池化模块和编码解码结构,使得网络可以利用有效的多尺度上下文信息,获得准确的目标分割边界。基于上述优点,采用Deeplabv3网络结构来训练三分图生成网络。输入为RGB三通道人像图像数据,网络输出前景、背景和未知区域三类分割结果。具体来说,三分图生成网络的主干网络采用Resnet101结构[22],采用微调的方式进行训练,损失函数采用交叉熵损失函数。在微调训练时,首先根据2.1节的方法对创建的18 618幅训练图像数据生成三分图,再利用式(3)裁剪成标准的1 026×513的图像数据对,把在Pascal VOC上预训练的模型的最后一层改成输出3类并提高该层的学习率,整个网络以低学习率进行微调。

在三分图生成网络模型前向推断过程中,彩色人像图像根据式(3)变换成1 026×513的图像I输入到模型中,模型输出1 026×513的三分图T。图像I和三分图T进行连接操作生成四通道的图像Q,即图像Q的前三个通道分别是图像I的RGB数据,第四个通道为三分图T的数据。把图像Q缩放到320×320输入到后继的抠图网络中获得相应的Alpha图像,在整个过程中需记录图像变换参数,以便最后复原到原始分辨率。

2.2 人像抠图网络

人像抠图网络采用深度抠图网络结构[15],它是一个深度卷积编码解码网络,该编码网络有13个3×3卷积层和4个池化层;而解码网络有6个5×5卷积层和4个反池化层。与文献[7]的做法类似,也对该网络的每个卷积层之后增加一层批归一化层,以获得更稳定的训练效果。

训练人像抠图网络由两个阶段完成。第一阶段与文献[15]相同,使用Adobe研究团队提供的训练数据集,随机抠取320×320、480×480和640×640三种规格的图像块,并统一缩放到320×320尺寸进行训练,直至收敛。第二阶段采用自有人像数据进行微调,利用2.1节中训练好的人像三分图生成网络对自有的18 618幅训练图像进行前向推断生成1 026×513的三分图,连接生成图像Q并缩放到320×320,采用该数据集对第一阶段的模型进行低学习率的微调。

在前向推断过程中,四通道图像输入抠图网络之后可得到网络的输出结果,根据输入的三分图重置前景和背景区域的值,保留未知区域的推断结果得到Alpha图像,最后根据预先记录的图像变换参数把Alpha图像变换到与原始人像图像相对应的尺寸。

3 实 验

采用Pytorch来实现本文的算法,训练采用双路至强处理器、64 GB内存、4块Titian GPU显卡的服务器,训练完三分图生成网络和抠图网络两个模型大约需要2周时间。在Intel i5处理器和8 GB内存的计算机上,用CPU做前向推断处理一幅图像整个流程的总时间在4.5 s左右。

目前,手机自助证件照拍摄应用越来越广泛,在该应用场景中,用户手机所拍摄的照片类型有大头照、半身照、全身照、横拍、竖拍等各种不可控的情况。为了高效地处理这些不可控的照片类型,构建了一个包含19 118幅人像的训练测试数据集。数据集中大头照大约2 000幅、半身照片12 000幅、全身照片5 000幅;横拍照片大约占30%,竖拍照片占70%。测试集是从该数据集中随机选取500幅。该数据集大约由10位兼职人员通过专业图像处理软件进行手工抠图得到标注的图像。

为了估计算法的有效性,将本文算法与闭合抠图[12]、KNN抠图[13]、深度抠图网络[15]等算法进行了比较,考虑到这些抠图方法需要事先提供人像的三分图,采用Deeplabv3语义分割模型[21]对人像进行分割,为了客观公正地进行对比,Deeplabv3的主干网络也采用Resnet101网络结构。Deeplabv3的模型直接采用其他研究人员公开的预训练模型进行人像的语义分割,根据分割结果把标记为人像的像素置为255,其他像素设置为0,并采用式(2)生成人像三分图。由于在测试数据集中,人像在图像的占比大小不一,不同的腐蚀和膨胀函数核大小对结果有较大的影响,经测试发现函数核k=20为一个相对比较好的值,在整个实验中该经验值是唯一需要人工设置的参数。

结果的评价指标采用绝对误差和、均方误差、梯度和连接度四个指标。与文献[15]只评价未知区域部分不同,由于是由程序自动产生人像的三分图,我们对整幅图像进行统计,并用这四个指标对图像的像素数量做了归一化运算。通过计算每幅人像Alpha图像与标注的Alpha图像的四个指标值,并除以图像的像素数量,再对整个测试数据集取平均值即为表1中的最终结果。可以看出在人像占比不可控的环境中,本文的方法有比较明显的优势。

表1 不同算法在测试数据集上的指标数据

图3展示了四种不同方法得到的结果,其中:(a)为原始人像图像;(b)为Deeplabv3+CF的抠图结果;(c)为Deeplabv3+KNN的抠图结果;(d)为Deeplabv3+DIM的抠图结果;(e)为本文方法的抠图结果;(f)为标注的图像。从图1和图3中可以看到在真实应用场景中,用户拍摄的人像照片中人像占比大小不一,有全身照、半身照、大头照。Deeplabv3这个网络框架对人像形态、大小、光照、背景的表征能力很强,基本上都可以获得不错的处理效果。由于测试数据集中人像在图像中的占比不一致,导致使用固定大小核尺寸的形态学算子产生的三分图精度不是很高,所以图3(b)-图3(d)的总体效果比图3(e)要差一些,特别在抠图边界上的精度较低。

图3 实际应用场景中人像图像的抠图结果

训练数据集多样性严重影响深度学习模型的效果。由于在手机自助证件照应用场景中,全国用户的数量可达亿的级量,而这些用户大多数不懂图像知识,所以拍摄的照片会存在各种不可控的因素。由于成本的限制,构造大量的多样性数据是不可行的,这就造成了通用的算法无法对真实数据的多样性分布进行充分训练。而本文的算法增加了对人脸尺度的约束,相当于对数据的多样性分布增加了限制,这可能是本文算法取得较好结果的原因。

4 结 语

针对实际应用场景中人像占图像比例大小不可控的情况,本文提出一种基于人脸关键点计算人像尺度,控制生成较精确的人像三分图,并实现人像的自动抠图。实验表明,本文方法可以获得较高的人像抠图准确性。目前算法的模型还是比较大,处理时间也较长,下一步工作可以从模型优化角度展开研究以提高运算速度。

猜你喜欢

人脸关键点卷积
基于全卷积神经网络的猪背膘厚快速准确测定
论建筑工程管理关键点
基于图像处理与卷积神经网络的零件识别
水利水电工程施工质量控制的关键点
玻璃窗上的人脸
基于深度卷积网络与空洞卷积融合的人群计数
智力考场:有趣的图片测试
利用定义法破解关键点
“领家系”可爱脸VS“高冷系”美人脸
机械能守恒定律应用的关键点