基于多尺度卷积神经网络的人脸润饰检测算法①

2019-10-18 06:41王晓峰胡姣姣张德鹏
计算机系统应用 2019年10期
关键词:人脸尺度卷积

张 萌,王晓峰,胡姣姣,张德鹏

(西安理工大学 理学院,西安 710054)

随着Photoshop等图像润饰工具的广泛使用,越来越多的图像编辑软件被用于图像润饰.如图1,每对图像的左边为原始图像,右边为对应的润饰图像,从图1可以看出图像润饰可改变图像的原始内容并且篡改痕迹肉眼难以辨认.部分恶意篡改图像如被大量地用于科学研究和法庭证据等,无疑将会对政治和社会稳定产生严重的影响,因此数字图像取证技术的研究显得尤为重要.

1 相关工作

图像润饰通常改变了图像的颜色、纹理、亮度,常见操作包括对图像进行局部模糊[1]等,目前的润饰检测算法主要有传统算法和深度学习两类,下文将分别对两类算法进行介绍.

1.1 传统人脸润饰检测算法

传统的人脸润饰检测算法主要依赖于人工设计判别特征,最后建立特征分类模型实现润饰图像分类.2011年,Ananya等人[2]首次将润饰图像作为篡改图像来检测,提出用期望最大化算法(Expectation-Maximization,EM)实现图像分类,但该算法只能将篡改图像种类的范围缩小,无法彻底区分润饰图像与复制粘贴图像.2011年,李晓飞等人[3]提出了基于双拉普拉斯变换的润饰图像盲检测技术,该方法使用KD-Tree和分层聚类法来匹配图像块,应用7-tap拉普拉斯滤波器消除误匹配,最终实现润饰图像的局部润饰检测.该算法对于未压缩的和高分辨率的压缩图像有效,但是对于不同色调和饱和度的图像有误检,对低质量的压缩图像误检较多.2011年,Farid等人[4]引入一个定量的润饰图像度量标准,通过建模估计图像的几何和光度变化,用8个统计量将图像按润饰程度分为5级,其中几何修正量化为4个统计量,即待测对象面部和身体的运动幅度的平均值和标准差,光度修正也量化为4个统计量,包括局部平滑/锐化滤波器在空间边界的均值和标准差,和结构相似性指标度量(Structural Similarity Index Metric,SSIM)的均值和标准差.该度量标准能定量的判断图像的润饰程度,缺点是需要原始图像作参考.2013年,Shah等人[5]使用人类感知来检测润饰图像,首先采用PCA技术对待测图像进行人脸识别,然后将待测图像与其润饰图像做对比,最后通过人类的感知确定待测图像是否润饰图像.

1.2 基于深度学习的人脸润饰检测算法

2006年,加拿大多伦多大学教授Hinton在顶尖学术刊物《科学》上发表了一篇文章[6],开启了深度学习在学术界和工业界的浪潮.近几年随着深度学习在图像分类[7-11]、目标检测[12]、图像语义分割[13]等领域取得的一系列突破性的研究成果,研究者们开始将深度学习应用于图像取证领域.2015年,Kang等人[14]提出了一种基于卷积神经网络的中值滤波检测方法,通过添加滤波器层来改进传统的CNN模型,添加的滤波层可以抑制由于图像边缘和纹理的存在引起的干扰,使得中值滤波留下的迹线可以成功暴露,这是深度学习应用在取证领域的第一个研究成果,在此之后,卷积神经网络陆续应用在其他取证领域,例如图像重拍摄检测[15],相机源识别[16],图像隐写分析[17],图像拼接及复制粘贴篡改检测[18]等.随着深度学习在图像取证领域的广泛应用,研究者们也开始将深度学习用于人脸润饰检测.在2016年,Bharati等人[19]设计了第一个ND-IIITD人脸润饰数据库,首次提出用监督的深度玻尔兹曼机(Supervised Deep Boltzmann Machine,SDBM)来提取特征,支持向量机来对原始图像和润饰图像分类,检测精度比传统人脸润饰检测算法高38.3%.2017年,Bharati等人[20]又提出了一种新的半监督自动编码器来提取特征,并用支持向量机分类,但这两个算法的特征提取和图像分类都是分步进行的,不是端到端的润饰图像检测算法.

1.3 本文工作

由上文可知,传统人脸润饰检测算法手动设计特征复杂且识别率低,现有深度学习算法无法实现端到端的润饰图像检测,为了解决以上问题,本文提出了多尺度卷积神经网络模型(Multi Scale-Convolutional Neural Network,MS-CNN),不同于传统的CNN,本文提出的MSCNN有3个优点:增加基于方向梯度直方图(Histograms of Oriented Gradient,HOG)特征的人脸提取预处理,从待测图像中提取人脸部分作为网络的唯一输入;在首次池化操作后加入局部归一化层(Local Response Normali-zation,LRN),加速网络收敛;由于传统CNN中使用的单层单卷积核难以捕获人脸润饰图像与原始图像间微小的类间差别,因此提出了多尺度卷积层,将不同尺寸的1×1,3×3和5 ×5的卷积核进行了级联,以提高检测精度.

本文算法在人脸润饰数据集LFW和ND-IIITD进行了测试,实验结果表明提出的算法与4种网络结构和最新人脸润饰检测算法相比,检测精度均有大幅提升.

2 基于HOG特征的人脸提取预处理

2005年Dalal提出了基于HOG特征 的行人检测算法,近几年该算法被越来越多的应用于人脸检测和人脸识别领域.考虑到人脸润饰检测的目标区域为图像中的人脸部分,因此在预处理层利用基于HOG特征的人脸提取算法从待测图像中提取出人脸部分,算法步骤如下:

Step 1.对图像I(x,y)进行平方根的伽马压缩得到I(x,y)gamma,实验中压缩参数gamma取0.5;

Step 2.结合象限信息求像素点(x,y)处的梯度幅值G(x,y)和梯度方向θ (x,y):其中,Gx(x,y)与Gy(x,y)分别为像素点 (x,y)水平和垂直方向的梯度分量,求出梯度方向后将梯度方向θ(x,y)∈[0°,180°]划分为 9 个区间.

图2 提出的多尺度卷积神经网络(MS-CNN)模型

Step 3.将图像划分为 8 ×8不重叠的单元格,检测窗口在图像上滑动的步长和块在检测窗口滑动的步长均为8个像素,检测窗口大小设置为1 2 8×64,块大小为16×16.每个单元格中像素点 (x,y)的梯度方向 θ(x,y)按区间段投票,计算区间段i及其相邻区间段的梯度投票vi(i=0,···,8).

其中 α为权重,为了简化计算复杂度,实验中取权重α=0.5[21].这样每个单元格生成一个9维的特征每个块由四个单元格组成,因此每个块生成一个36维的特征向量再对特征向量Vblock归一化得到V,图像内所有块的特征向量V组合得到最终特征向量VHOG,最后将VHOG送入支持向量机来提取图像中的人脸部分.

3 多尺度卷积神经网络结构设计

多尺度卷积神经网络(MS-CNN)模型包括3部分:数据输入、特征提取和分类,图2为MS-CNN的结构图.数据输入层分批次将图像送进特征提取部分,每个批次可处理40张图像;特征提取部分共6个卷积层,每个卷积层都有一个xavier核,使输入输出的数据服从式(4)的均匀分布.同时为了防止网络过拟合,MS-CNN中添加了3个池化层,常见的池化操作包括最大池化、平均池化和重叠池化,本文选用最大池化来对图像做下采样;分类部分包括全链接层、Dropout层和Softmax层.下文将详细描述MS-CNN网络结构的设计.

其中,nj和nj+1分别表示输入、输出该卷积层的样本个数.[21]

3.1 MS-CNN网络超参数

MS-CNN首先将输入的彩色图像的大小统一调整为1 2 8×128,数据输入层的batch_size取40,即MSCNN每个批次处理40张图像,直到处理完图像库中的所有图像,特征提取和分类部分的超参数见表1.

表1 MS-CNN的超参数

3.2 特征提取

特征提取部分是MS-CNN的核心,包括LRN层、多尺度卷积层和单尺度卷积单元三部分,下文详细介绍了每个部分.

3.2.1 局部归一化(LRN)层

一张1 2 8×128的图像首先进入数据输入层,从数据输入层输出后进入第一个卷积层,该层设有96个11×11的大尺寸卷积核ki1j,连接输入的第i(i=1,···,40)个图像与本层的第j(j=1,···,96)个卷积核,卷积生成96个大小为 5 9×59的特征图x1j(j=1,···,96),在卷积层后紧跟一个最大池化层,对特征图x1j做下采样.第一个卷积与池化操作的公式如下:

其中,b1j表示第一层卷积的偏置,ReLU(·)为激活函数,batch_size表示MS-CNN每个批次处理图像的个数,本文中取batch_size=40;为池化层输出的特征图,和 分别表示池化层的权重和偏置,down(·)为最大池化操作.

LRN仿造生物学上活跃的神经元对相邻神经元的侧抑制现象[8],对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,因此在池化层后添加LRN层有助于网络的快速收敛.该层对输入的96个特征图分别按像素做归一化处理,输出归一化后的特征图1,···,96):

其中,xqpool表示池化层输出的第q(q=1,···,N)个特征图,N=96为特征图总数,n,k,α和 β 为参数,在本文中分别取n=5,k=2,α=10−4,β=0.75.

3.2.2 多尺度卷积层

计算机视觉领域的图像分类问题类间差别较大,多为不同类别的分类问题,例如猫狗分类、汽车卡车分类等.而图像取证的类间差别微小,传统的卷积神经网络难以区分,例如文献[14]中为了放大中值滤波取证的类间差别,增加了中值滤波残差层作为预处理,同样文献[15]在预处理层利用拉普拉斯滤波器来放大重拍摄图像与原始图像间的类间差别.而润饰图像取证属于图像取证中的一类,润饰图像与原始图像间的差异也很小,多为图像局部的亮度、纹理、饱和度等,因此传统单尺度的卷积层难以捕获这种微小的类间差别,因此本文提出多尺度卷积层,该层级联了3种大小分别为1 ×1,3×3和5×5的xavier卷积核各64个,分别对LRN层输出的特征图xLjRN做卷积,多尺度卷积操作表示为:

其中,ki1j×1为1 ×1卷积核,连接LRN层的第j个输出特征图xLjRN与多尺度卷积层的第i个输出特征图fi1×1,b1i×1为偏置,nLRN为LRN层输出特征图的个数,nLRN=96,ReLU(·)为激活函数,fi3×3与fi5×5同理.

为了使特征图fi1×1、fi3×3与fi5×5大小相同,针对3种不同尺寸的卷积核分别设定填充参数pad:pad1×1=0,pad3×3=1,pad5×5=2.最后由Concat(·)将特征图fi1×1、fi3×3与fi5×5连接,得到最终由多尺度卷积层输出的特征图该操作表示为:

3.2.3 单尺度卷积单元

多个多尺度卷积层堆叠会产生大量的参数,降低网络训练效率,因此本文没有采取对多尺度卷积层进行简单的堆叠,而是在它之后添加了两个单尺度卷积单元unit1和unit2.每个单尺度卷积单元都有两个卷积层,一个最大池化层,每个卷积层后都有一个ReLU(·)激活函数来加速网络收敛.unit1和unit2的结构类似但卷积核的个数不同,卷积核个数分别为128和256,unit1和unit2的具体结构和详细参数见3.1节.

3.3 分类

分类层分3部分:2个全连接层、Dropout层和Softmax层.全连接层将特征提取部分得到的所有二维特征图转化为全连接的一维特征向量;Dropout层[9]以概率p=0.5随机的将部分隐藏神经元的输出清零,避免网络过拟合;最后由Softmax分类器将多个神经元的输出映射到 (0 ,1)区间内,实现润饰图像与原始图像的分类.

4 实验

4.1 实验环境

本文实验采用的深度学习平台为Caffe[22],电脑硬件环境的内存为8 GB,CPU为Intel(R)Core(TM)i7,GPU为GTX 1050 Ti,操作系统为64位Ubuntu 16.04.

4.2 实验数据

带标签的人脸(Labeled Faces in the Wild,LFW)数据集:LFW是一个用于研究无约束的人脸识别的数据库,包含了13 233张人脸图像,图像大小均为 2 50×250.我们从LFW中随机选取1000人脸图像,利用Meitu软件中的润饰功能,即:人像美容中的智能美容,对1000张人脸进行润饰,这2000张图像组成LFW润饰数据集,该数据集的部分示例图见图3,每对示例图的左边为原始图像,右边为对应的润饰图像.

图3 LFW润饰数据集的示例

ND-IIITD 人脸润饰数据集:ND-IIITD 是 Bharati[19]提出的第一个人脸润饰数据集,图像大小均为1200×1600,示例见图4,图4(a)(b)中的第一行为原始图像,第二行为对应的润饰图像.该数据库对325个对象进行照片采集,每个对象采集8张照片,因此该数据集共有2600张原始图像,并利用PortraitPro Studio Max软件对每个对象中的7张照片进行人脸润饰操作,该润饰操作对男性女性分别预设了7种不同的润饰操作组合,这些润饰操作都不同程度的改变了面部特征,包括:皮肤的纹理,眼睛、鼻子或嘴唇的形状,眼睛的颜色等等.

图4 ND-IIITD人脸润饰数据集的示例

实验中人脸润饰数据集LFW与ND-IIITD的训练集及测试集数量见表2.

表2 训练样本和测试样本数量

4.3 实验参数设置

到目前为止,深度学习平台Caffe总共提供了6种优化算法,本实验中选取的优化算法为随机梯度下降算法(Stochastic Gradient Descent,SGD).

在模型训练中,基础学习率(base_lr)为0.001,在训练过程中对基础学习率进行调整,学习率调整策略(lr-policy)为“inv”,学习率调整策略“inv”的系数 gamma和power分别为0.0001和0.75.上一次梯度更新的权重(momentum)为0.9,基础网络权值衰减项(weight_decay)为0.0005,用来防止网络过拟合.每训练1000次在屏幕上打印一次训练详情,方便观察检测精度和损失值随迭代次数的变化结果,最大迭代次数(maxiter)为100 000次,为了节省训练时间,运行模式(slover_mode)选GPU.

4.4 性能评估

4.4.1 方法有效性验证

为了验证本文提出的MS-CNN网络结构的有效性,分别在人脸润饰数据集LFW和ND-IIITD上进行测试,实验结果见表3和图5.

表3 MS-CNN在不同迭代次数下的检测精度和损失值

从表3和图5可以看出,检测精度随着迭代次数的增加先快速增长然后趋于平稳,且LFW数据集的检测精度略优于ND-IIITD数据集,原因是ND-IIITD数据集的润饰操作更精细,图像分辨率更高,因此润饰图像与原始图像的像素间差异较小,使得ND-IIITD数据集比LFW数据集较难检测,故检测精度略低.

损失值代表实际值与模型估计值之间的误差,损失值越小说明模型拟合的越好.图5(b)为本文构建的模型在不同数据集上的训练损失值变化情况,随着迭代次数的增加,两个数据集上的损失值均逐渐递减并趋于稳定,说明本文提出的模型拟合的较好.

4.4.2 性能比较

近几年用于图像分类的卷积神经网络层出不穷,其中LeNet[7]与AlexNet[8]是比较经典的卷积神经网络结构,Mlpconv网络是Yan等人[10]提出的一种增强的非线性网络结构,ResNet[11]是一种全新的网络结构,即深度残差网络.为了检验文本提出网络模型的性能,我们在相同的数据集上,对迭代次数为10万次的网络模型进行测试,每个模型测试10次取平均值,实验结果见表4.

图5 MS-CNN在人脸润饰数据集LFW和ND-IIITD上的检测性能

表4 不同网络结构的检测精度

从表4可以得出,在LFW人脸润饰数据集上,本文算法的检测精度高于LeNet网络10.1%,高于AlexNet网络5.3%,高于Mlpconv网络8.9%,高于 ResNet-50网络1.9%;在ND-IIITD人脸润饰数据集上,本文算法的检测精度高于LeNet网络9.9%,高于AlexNet网络39.1%,高于Mlpconv网络7.1%,高于 ResNet-50网络2.5%.

模型大小反应了网络结构在训练过程中参数量的大小,模型越大神经网络需要学习的参数越多,层之间传输的数据流越大,更消耗计算资源.ResNet-50的网络层数最深参数量最大,因此模型最大,而本文算法在保证检测精度较高的情况下参数量较小,节约了计算资源.

综上,本文提出的算法与以上4种网络结构相比检测精度较高、模型较小,因此性能较好.

除此之外,本文还与人脸润饰检测领域的最新算法文献[4]和文献[19]进行对比,文献[4]属于传统手动设计特征的算法,作者将图像的几何、光度变化和感知失真作为判别特征,利用支持向量实现分类;文献[19]属于深度学习类的算法,作者利用有监督的深度玻尔兹曼机来提取图像特征,支持向量实现分类.本文算法、文献[4]和文献[19]在ND-IIITD人脸润饰数据集上的实验结果见表5.

表5 检测精度对比

由表5可知本文算法的检测精度分别比文献[4]和文献[19]高44.1%和5.8%,并且文献[4]和文献[19]都将特征提取和图像分类分步进行,而本文提出的MSCNN实现了端到端的人脸润饰图像检测.

5 结论

由于人脸润饰检测的类间差别远小于计算机视觉,传统CNN的检测精度不高,针对该问题,本文提出了一种多尺度卷积神经网络模型MS-CNN用于人脸润饰检测,该算法不仅避免了手动设计提取特征的复杂,而且实现了端到端人脸润饰检测.在图像预处理阶段,本文算法利用基于HOG特征的人脸提取算法提取待测图像的人脸部分;通过添加局部归一化层来加速模型收敛;提出多尺度卷积层使模型能学习到更丰富的纹理特征.实验结果表明,与现有的算法相比,MSCNN具有较高的检测精度.

今后的工作主要围绕增强MS-CNN对人脸润饰检测的通用性进行,进一步优化网络结构并提高检测精度.

猜你喜欢
人脸尺度卷积
基于全卷积神经网络的猪背膘厚快速准确测定
环境史衰败论叙事的正误及其评判尺度
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
有特点的人脸
一种并行不对称空洞卷积模块①
一起学画人脸
玻璃窗上的人脸
宇宙的尺度
9