Deep Learning Face Representation by Joint Identification-Verification
- 人脸识别的关键挑战是开发有效的特征表示,以减少个体内的差异,同时扩大个体间的差异。
- 人脸识别任务通过将从不同身份提取的DeepID2分开来增加个体之间差异,而人脸验证任务通过将从同一身份提取的DeepID2拉到一起来减少个体中差异
- 在具有挑战性的LFW数据集上,人脸验证精度达到99.15%。
人脸验证
同一身份的面孔在不同的姿势、照明、表情、年龄和遮挡下看起来可能会大不相同。 在扩大人与人之间差异的同时减少人与人之间的差异是人脸识别研究的永恒主题。
传统人脸识别研究方法:LDA、贝叶斯人脸和统一子空间
LDA通过使用两个线性子空间来近似人与人之间的面部变化,并找到投影方向以最大化它们之间的比率。
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。
LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
有两类数据 分别为红色和蓝色,这些数据特征是二维的,将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。
必要的数学基础知识
- 假设数据符合高斯分布(理论基础)。
- 瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)
- 瑞利商是指这样的函数 R ( A , x ) = x H A x x H x R(A,x)=\frac{x^HAx}{x^Hx} R(A,x)=xHxxHAx,其中x为非零向量,而A为n×n的Hermitan矩阵。所谓的Hermitan矩阵就是满足共轭转置矩阵和自己相等的矩阵,即 A H = A A^H=A AH=A。如果我们的矩阵A是实矩阵,则满足 A T = A A^T=A AT=A的矩阵即为Hermitan矩阵。
- 瑞利商有一个非常重要的性质,即它的最大值等于矩阵A最大的特征值,而最小值等于矩阵A的最小的特征值,有 λ m i n ≤ x H A x x H x ≤ λ m a x \lambda{_{min}}\le\frac{x^HAx}{x^Hx}\le{\lambda_{max}} λmin≤xHxxHAx≤λmax。当向量x是标准正交基时,即满足 x H x {x^Hx} xHx=1时,瑞利商退化为: R ( A , x ) = x H A x R(A,x)=x^HAx R(A,x)=xHAx,这个形式在PCA中有出现。
- 广义瑞利商是指这样的函数 R ( A , B , x ) = x H A x x H B x R(A,B,x)=\frac{x^HAx}{x^HBx} R(A,B,x)=xHBxxHAx,其中x为非零向量,而A,B均为n×n的Hermitan矩阵。B为正定矩阵。
- 通过将其通过标准化就可以转化为瑞利商的格式。我们令 x = B − 1 2 x ′ x=B^{\frac{−1}{2}}x′ x=B2−1x′,则分母转化为: x H B x = x ′ H ( B − 1 2 ) H B B − 1 2 x ′ = x ′ H B − 1 2 B B − 1 2 x ′ = x ′ H x ′ x^HBx=x′^H(B^{\frac{−1}{2}})^HBB^{\frac{−1}{2}}x′=x′^HB^{\frac{−1}{2}}BB^{\frac{−1}{2}}x′=x′^Hx′ xHBx=x′H(B2−1)HBB2−1x′=x′HB2−1BB2−1x′=x′Hx′,而分子转化为: x H A x = x ′ H B − 1 2 A B − 1 2 x ′ x^HAx=x′^HB^{\frac{−1}{2}}AB^{\frac{−1}{2}}x′ xHAx=x′HB2−1AB2−1x′。
- 此时我们的R(A,B,x)转化为 R ( A , B , x ′ ) = x ′ H B − 1 2 A B − 1 2 x ′ x ′ H x ′ R(A,B,x′)=\frac{x′^HB^{\frac{−1}{2}}AB^{\frac{−1}{2}}x′}{x′^Hx′} R(A,B,x′)=x′Hx′x′HB2−1AB2−1x′。
- 瑞利商的性质,我们可以很快的知道,R(A,B,x′)的最大值为矩阵 B − 1 2 A B − 1 2 B^{\frac{−1}{2}}AB^{\frac{−1}{2}} B2−1AB2−1的最大特征值,或者说矩阵 B − 1 A B^{-1}A B−1A的最大特征值,而最小值为矩阵 B − 1 A B^{-1}A B−1A的最小特征值。
LDA算法流程
输入:数据集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( ( x m , y m ) ) D={(x_1,y_1),(x_2,y_2),...,((x_m,y_m))} D=(x1,y1),(x2,y2),...,((xm,ym)),其中任意样本 x i x_i xi为n维向量, y i ∈ { C 1 , C 2 , . . . , C k } yi∈\{C_1,C_2,...,C_k\} yi∈{C1,C2,...,Ck},降维到的维度d。
输出:降维后的样本集 D ′ D′ D′
- 计算类内散度矩阵Sw
- 计算类间散度矩阵Sb
- 计算矩阵 S w − 1 S b S^{−1}_wS_b Sw−1Sb
- 计算 S w − 1 S b S^{−1}_wS_b Sw−1Sb的最大的d个特征值和对应的d个特征向量 ( w 1 , w 2 , . . . w d ) (w_1,w_2,...w_d) (w1,w2,...wd),得到投影矩阵W
- 对样本集中的每一个样本特征 x i x_i xi,转化为新的样本 z i = W T x i z_i=W^Tx_i zi=WTxi
- 得到输出样本集 D ′ = ( z 1 , y 1 ) , ( z 2 , y 2 ) , . . . , ( ( z m , y m ) ) D′={(z_1,y_1),(z_2,y_2),...,((z_m,y_m))} D′=(z1,y1),(z2,y2),...,((zm,ym))
LDA除了可以用于降维以外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。
二类LDA原理
- 假设我们的数据集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( ( x m , y m ) ) D={(x_1,y_1),(x_2,y_2),...,((x_m,y_m))} D=(x1,y1),(x2,y2),...,((xm,ym)),其中任意样本 x i x_i xi为n维向量, y i ∈ { 0 , 1 } y_i∈\{0,1\} yi∈{0,1}。我们定义 N j ( j = 0 , 1 ) N_j(j=0,1) Nj(j=0,1)为第j类样本的个数, X j ( j = 0 , 1 ) X_j(j=0,1) Xj(j=0,1)为第j类样本的集合,而 μ j ( j = 0 , 1 ) μ_j(j=0,1) μj(j=0,1)为第j类样本的均值向量,定义 Σ j ( j = 0 , 1 ) Σ_j(j=0,1) Σj(j=0,1)为第j类样本的协方差矩阵(严格说是缺少分母部分的协方差矩阵)。
- μ j μ_j μj的表达式为: μ j = 1 N j ∑ x ∈ X j x , ( j = ( 0 , 1 ) ) μ_j=\frac{1}{N_j}\sum_{x\in{X_j}}x,(j=(0,1)) μj=Nj1∑x∈Xjx,(j=(0,1)).
- Σ j Σ_j Σj的表达式为: Σ j = ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T , ( j = 0 , 1 ) Σ_j=∑_{x∈Xj}(x−μ_j)(x−μ_j)^T,(j=0,1) Σj=∑x∈Xj(x−μj)(x−μj)T,(j=0,1).
- 由于是两类数据,因此只需要将数据投影到一条直线上即可。假设投影直线是向量w,则对任意一个样本 x i x_i xi,它在直线w的投影为 w T x i w^Tx_i wTxi,对于两个类别的中心点 μ 0 , μ 1 μ_0,μ_1 μ0,μ1,在直线w的投影为 w T μ 0 w^Tμ_0 wTμ0和 w T μ 1 w^Tμ_1 wTμ1。由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是最大化 ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 ||w^Tμ_0−w^Tμ_1||^2_2 ∣∣wTμ0−wTμ1∣∣22,同时希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差 w T Σ 0 w w^TΣ_0w wTΣ0w和 w T Σ 1 w w^TΣ_1w wTΣ1w尽可能的小。综上所述,我们的优化目标为: a r g m a x ⏟ w J ( w ) = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( Σ 0 + Σ 1 ) w \underbrace{argmax}_{w}J(w)=\frac{||w^Tμ_0−w^Tμ_1||^2_2}{w^TΣ_0w+w^TΣ_1w}=\frac{w^T(μ_0-μ_1)(μ_0-μ_1)^Tw}{w^T(Σ_0+Σ_1)w} w argmaxJ(w)=wTΣ0w+wTΣ1w∣∣wTμ0−wTμ1∣∣22=wT(Σ0+Σ1)wwT(μ0−μ1)(μ0−μ1)Tw.
- 定义类内散度矩阵 S w = Σ 0 + Σ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T S_w=Σ_0+Σ_1=\sum_{x\in{X_0}}(x-μ_0)(x-μ_0)^T+\sum_{x\in{X_1}}(x-μ_1)(x-μ_1)^T Sw=Σ0+Σ1=∑x∈X0(x−μ0)(x−μ0)T+∑x∈X1(x−μ1)(x−μ1)T.
- 定义类间散度矩阵 S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(μ_0-μ_1)(μ_0-μ_1)^T Sb=(μ0−μ1)(μ0−μ1)T。
- 优化目标重写为: a r g m a x ⏟ w J ( w ) = w T S b w w T S w w \underbrace{argmax}_{w}J(w)=\frac{w^TS_bw}{w^TS_ww} w argmaxJ(w)=wTSwwwTSbw.
度量学习将面映射到某些特征表示,使得具有相同身份的面彼此靠近,而具有不同身份的面彼此分开。
- 在数学中,一个度量(或距离函数)是一个定义集合中元素之间距离的函数。一个具有度量的集合被称为度量空间。度量学习也叫作相似度学习
- 距离测度学习的目的即为了衡量样本之间的相近程度,而这也正是模式识别的核心问题之一。大量的机器学习方法,比如K近邻、支持向量机、径向基函数网络等分类方法以及K-means聚类方法,还有一些基于图的方法,其性能好坏都主要由样本之间的相似度量方法的选择决定。
- 目标是识别人脸,那么就需要构建一个距离函数去强化合适的特征(如发色,脸型等);而如果我们的目标是识别姿势,那么就需要构建一个捕获姿势相似度的距离函数。
- 为了处理各种各样的特征相似度,可以在特定的任务通过选择合适的特征并手动构建距离函数。然而这种方法会需要很大的人工投入,也可能对数据的改变非常不鲁棒。
- 度量学习作为一个理想的替代,可以根据不同的任务来自主学习出针对某个特定任务的度量距离函数。
- 度量学习通常的目标是使同类样本之间的距离尽可能缩小,不同类样本之间的距离尽可能放大。
这些模型在很大程度上受到其线性性质或浅层结构的限制,而个体间和个体内的变化是复杂的、高度非线性的,并且在高维图像空间中可以观察到。 (引出人脸识别技术与深度学习的结合)
同时使用两个监控信号(即人脸识别和验证信号)来学习这些特征
识别是将输入图像分类为大量标识类,而验证是将一对图像分类为是否属于同一标识(即二进制分类)
为了从不同的角度对人脸进行特征化,从不同的人脸区域和分辨率中提取互补的DeepID2特征,经过PCA降维后拼接形成最终的特征表示。
将联合解决分类和验证任务的思想应用于一般对象识别,重点是提高固定对象类的分类精度,而不是隐特征表示。
Identification-verification guided deep feature learning
deep ConvNets中的卷积和池操作是专门设计用于分层提取视觉特征的,从局部低级特征到全局高级特征
包含四个卷积层,前三层后面是最大池。
为了学习不同数量的高级特征,我们不需要在更高的卷积层中共享整个特征映射的权重 。有一个地方除外,深度神经网络的第三卷积层中,每2×2个局部区域中的神经元权重是局部共享的。 在第四个卷积层,更恰当地称为局部连接层,神经元之间的权重完全不共享。
ConvNet在特征提取级联的最后一层提取一个160维的DeepID2向量。要学习的DeepID2层完全连接到第三和第四卷积层。 由于第四个卷积层比第三个卷积层提取更多的全局特征,因此DeepID2层将多尺度特征作为输入,形成所谓的多尺度卷积网络 。
使用激活函数(ReLU)作为卷积层和deepID2层的神经元,对于大型训练数据集,ReLU比sigmoid单元具有更好的匹配能力 。
在两个supervisory signals下学习DeepID2功能
第一个是人脸识别信号,它将每个人脸图像分类为n个(例如,n=8192)不同身份中的一个。
识别是通过在DeepID2层之后加入一个n路softmax层来实现的,该层输出n个类的概率分布。训练网络使交叉熵损失最小化,称之为识别损失。
I d e n t ( f , t , θ i d ) = − ∑ i = 1 n − p i l o g p i ^ = − l o g p t ^ Ident(f,t,\theta_{id})=-\sum^n_{i=1}-p_ilog\hat{p_i}=-log\hat{p_t} Ident(f,t,θid)=−i=1∑n−pilogpi^=−logpt^
其中f是DeepID2向量,t是目标类, θ i d θ_{id} θid表示softmax层参数。 p i p_i pi是目标概率分布,其中除目标类别t的 p t p_t pt=1外,所有i的 p i p_i pi=0。 p i ^ \hat{p_i} pi^是预测概率分布。
为了同时正确分类所有类别,DeepID2层必须形成与身份相关的区别特征
第二个是人脸验证信号,它期望从相同身份的人脸中提取的DeepID2相似。
验证信号直接对DeepID2进行正则化,可以有效地减少个人内部的变化。
常用的约束包括L1/L2范数和余弦相似性。改论文中采用以下基于L2范数的损失函数,该范数最初由Hadsell等人提出用于降维的。
V e r i f ( f i , f j , y i j , θ v e ) = { 1 2 ∣ ∣ f i − f j ∣ ∣ 2 2 , y i j = 1 1 2 m a x ( 0 , m − ∣ ∣ f i − f j ∣ ∣ 2 ) 2 , y i j = − 1 Verif(f_i,f_j,y_{ij},\theta_{ve})=\begin{cases} \begin{aligned} \frac{1}{2}||f_i-f_j||_2^2 , y_{ij}=1\\ \frac{1}{2}max(0,m-||f_i-f_j||_2)^2 , y_{ij}=-1 \end{aligned} \end{cases} Verif(fi,fj,yij,θve)=⎩⎪⎨⎪⎧21∣∣fi−fj∣∣22,yij=121max(0,m−∣∣fi−fj∣∣2)2,yij=−1
其中 f i f_i fi和 f j f_j fj是从比较中的两个人脸图像中提取的DeepID2向量。 y i j y_{ij} yij=1表示 f i f_i fi和 f j f_j fj来自同一身份。 在这种情况下,使两个DeepID2向量之间的L2距离最小化。 y i j y_{ij} yij=-1表示不同身份,要求大于边距m的距离。 θ v e θ_{ve} θve={m}是验证损失函数中要学习的参数。
余弦相似性在其中的运用 V e r i f ( f i , f j , y i j , θ v e ) = 1 2 ( y i j − δ ( w d + b ) ) 2 Verif(f_i,f_j,y_{ij},\theta_{ve})=\frac{1}{2}(y_{ij}-\delta(wd+b))^2 Verif(fi,fj,yij,θve)=21(yij−δ(wd+b))2.
- 其中 d = f i ⋅ f j ∣ ∣ f i ∣ ∣ 2 ∣ ∣ f j ∣ ∣ 2 d=\frac{f_i·f_j}{||f_i||_2||f_j||_2} d=∣∣fi∣∣2∣∣fj∣∣2fi⋅fj 是DeepID2向量之间的余弦相似性, θ v e = { w , b } \theta_{ve}=\{w,b\} θve={w,b}是可学习的缩放和移位参数,σ是sigmoid函数, y i j y_{ij} yij是两个比较人脸图像是否属于同一身份的二值目标 。
目标是学习特征提取函数Conv(·)中的参数 θ c θ_c θc,而 θ i d θ_{id} θid和 θ v e θ_{ve} θve只是在训练期间传播识别和验证信号的参数。在测试阶段,仅使用θc进行特征提取。参数更新采用随机梯度下降法。
识别和验证梯度由超参数λ加权。
The DeepID2 learning algorithm.
- 输入:训练集 χ = { ( x i , l i ) } χ=\{(xi,li)\} χ={(xi,li)},初始化参数 θ c θ_c θc, θ i d θ_{id} θid和 θ v e θ_{ve} θve,超参数λ,学习率 η ( t ) η(t) η(t),t← 0
- 当结果不收敛时,没有达到阈值范围内
- T← t+1从χ中抽取两个训练样本 ( x i , l i ) (x_i,l_i) (xi,li)和 ( x j , l j ) (x_j,l_j) (xj,lj).
- 计算提取特征: f i = C o n v ( x i , θ c ) f_i=Conv(x_i,θ_c) fi=Conv(xi,θc)和$f_j=Conv(x_j,θ_c) $
- ▽ θ i d = ∂ I d e n t ( f i , l i , θ i d ) ∂ θ i d + ∂ I d e n t ( f j , l j , θ i d ) ∂ θ i d \triangledown\theta_{id}=\frac{\partial Ident(f_i,l_i,\theta_{id})}{\partial\theta_{id}}+\frac{\partial Ident(f_j,l_j,\theta_{id})}{\partial\theta_{id}} ▽θid=∂θid∂Ident(fi,li,θid)+∂θid∂Ident(fj,lj,θid);
- ▽ θ v e = λ ⋅ ∂ V e r i f ( f i , f j , y i j , θ v e ) ∂ θ v e \triangledown\theta_{ve}=\lambda·\frac{\partial Verif(f_i,f_j,y_{ij},\theta_{ve})}{\partial\theta_{ve}} ▽θve=λ⋅∂θve∂Verif(fi,fj,yij,θve);当 l i = l j l_i=l_j li=lj时有 y i j y_{ij} yij,否则有 y i j = − 1 y_{ij}=-1 yij=−1。
- ▽ f i = ∂ I d e n t ( f i , l i , θ i d ) ∂ f i + λ ⋅ ∂ V e r i f ( f i , f j , y i j , θ v e ) ∂ f i \triangledown{f_i}=\frac{\partial Ident(f_i,l_i,\theta_{id})}{\partial{f_i}}+\lambda·\frac{\partial Verif(f_i,f_j,y_{ij},\theta_{ve})}{\partial{f_i}} ▽fi=∂fi∂Ident(fi,li,θid)+λ⋅∂fi∂Verif(fi,fj,yij,θve)
- ▽ f j = ∂ I d e n t ( f j , l j , θ i d ) ∂ f j + λ ⋅ ∂ V e r i f ( f i , f j , y i j , θ v e ) ∂ f j \triangledown{f_j}=\frac{\partial Ident(f_j,l_j,\theta_{id})}{\partial{f_j}}+\lambda·\frac{\partial Verif(f_i,f_j,y_{ij},\theta_{ve})}{\partial{f_j}} ▽fj=∂fj∂Ident(fj,lj,θid)+λ⋅∂fj∂Verif(fi,fj,yij,θve)。
- ▽ θ c = ▽ f i ⋅ ∂ C o n v ( x i , θ c ) ∂ θ c + ▽ f j ⋅ ∂ C o n v ( x j , θ c ) ∂ θ c \triangledown\theta_{c}=\triangledown{f_i}·\frac{\partial Conv(x_i,\theta_{c})}{\partial\theta_{c}}+\triangledown{f_j}·\frac{\partial Conv(x_j,\theta_{c})}{\partial\theta_{c}} ▽θc=▽fi⋅∂θc∂Conv(xi,θc)+▽fj⋅∂θc∂Conv(xj,θc)。
- 更新 θ i d = θ i d − η ( t ) ⋅ θ i d \theta_{id}=\theta_{id}-η(t)·θ_{id} θid=θid−η(t)⋅θid, θ v e = θ v e − η ( t ) ⋅ θ v e 0 \theta_{ve}=\theta_{ve}-η(t)·θ_{ve0} θve=θve−η(t)⋅θve0, θ c = θ c − η ( t ) ⋅ θ c \theta_{c}=\theta_{c}-η(t)·θ_c θc=θc−η(t)⋅θc。
- 输出 θ c \theta_c θc.
Face Verification
首先使用SDM算法检测21个面部地标。
SDM(Supvised Descent Method)方法主要是应用在人脸对齐上。SDM本是一种求函数逼近的方法,可以用于最小二乘求解。
最小二乘问题中,用牛顿法求解是常用的办法,但用在求解计算机视觉的问题的时候,会遇到一些问题,
- Hessian矩阵最优在局部最优的时候才是正定的,其他地方可能就不是正定的了,这就意味着求解出来的梯度方向未必是下降的方向;
- 牛顿法要求目标函数是二次可微的,但实际中未必就一定能达到要求的了;
- Hessian矩阵会特大,如人脸对其有66个特征点,每个特征点有128维度,那么展成向量就能达到66x128,从而Hessian矩阵就能达到8448x8448,大维度的逆矩阵求解,是计算量特别大的(O(p3)次的操作和O(p2)的存储空间)。
- 因此避免掉Hessian矩阵的计算,Hessian不正定问题,大存储空间和计算量,寻找这样一种方法是上述论文要解决的问题。(引出了SDM算法)
Ix = R,I 是特征,x是映射矩阵,R是偏移量。SDM人脸对齐方法训练的目的就是得到映射矩阵x,步骤如下:
- 归一化样本,使样本的尺度统一;
- 计算均值人脸;
- 将均值人脸,作为估计人脸放在样本上,使均值中心和原始人脸形状中心对齐;
- 计算基于每一个均值人脸的标记点的特征,sift,surf或者hog,切记不要基于灰度值的相互特征;
- 将所有点的特征串在一起,形成样本特征,所有样本特征形成矩阵I;
- 计算估计人脸和真实人脸之间的偏移量,并形成矩阵R;
- 解线性方程Ix=R。
然后根据检测到的标志点,通过相似性变换对人脸图像进行全局对齐。
裁剪了400个面片,根据全局对齐的脸和面部标志的位置,这些面片在位置、比例、颜色通道和水平翻转方面都有所不同。
通过总共200个深度convnet提取400个DeepID2向量,每个深度convnet都经过训练以分别在每个人脸的一个特定面片及其水平唇形对应物上提取两个160维DeepID2向量。
为了减少大量DeepID2特征之间的冗余,使用前向-后向贪婪算法来选择少量有效且互补的DeepID2向量(在我们的实验中为25),这节省了测试期间的大部分特征提取时间。
所有选定的25个面片,从中提取了25个160维的DeepID2向量,并连接到4000维的DeepID2向量。通过PCA进一步压缩4000维向量以进行人脸验证。
学习了联合贝叶斯模型,用于基于提取的DeepID2的人脸验证。
- 联合贝叶斯已经成功地用于模拟两张脸是相同或不同的人的联合概率。将人脸的特征表示f建模为个人间和个人内变化的总和, f = μ + ε f=\mu+\varepsilon f=μ+ε。其中 μ \mu μ和 ε \varepsilon ε都是符合高斯分布的为前提的训练结果。
- 人脸验证通过对数似然比检验, l o g P ( f 1 , f 2 ∣ H i n t e r ) P ( f 1 , f 2 ∣ H i n t r a ) log\frac{P(f_1,f_2|H_{inter})}{P(f_1,f_2|H_{intra})} logP(f1,f2∣Hintra)P(f1,f2∣Hinter),其中分子和分母分别是给定个体间或个体内变异假设的两张人脸的联合概率。
Experiments
- 用CelebFaces+数据集进行训练,其中包含202599张从互联网上收集的10177个身份(名人)的人脸图像。
- 从CelebFaces+(称为CelebFaces+A)随机抽样的8192个身份的人脸图像中学习DeepID2特征,而1985个身份的剩余人脸图像(称为CelebFaces+B)用于以下特征选择和学习人脸验证模型(联合贝叶斯)。
- 在CelebFaces+A上学习DeepID2时,CelebFaces+B用作验证集,以确定学习速率、训练时间和超参数λ。
- CelebFaces+B被分离为1485个身份的训练集和500个身份的验证集,用于特征选择。
- 在整个CelebFaces+B数据上训练联合贝叶斯模型,并使用选定的DeepID2在LFW上进行测试。
Balancing the identification and verification signals
- 通过将λ从0变为+∞,我们研究了识别和验证信号在特征学习中的相互作用. λ=0时,验证信号消失,只有识别信号生效。当λ增加时,验证信号逐渐主导训练过程。在λ的另一端→ +∞, 只有验证信号仍然存在。
- V e r i f ( f i , f j , y i j , θ v e ) = { 1 2 ∣ ∣ f i − f j ∣ ∣ 2 2 , y i j = 1 1 2 m a x ( 0 , m − ∣ ∣ f i − f j ∣ ∣ 2 ) 2 , y i j = − 1 Verif(f_i,f_j,y_{ij},\theta_{ve})=\begin{cases} \begin{aligned} \frac{1}{2}||f_i-f_j||_2^2 , y_{ij}=1\\ \frac{1}{2}max(0,m-||f_i-f_j||_2)^2 , y_{ij}=-1 \end{aligned} \end{cases} Verif(fi,fj,yij,θve)=⎩⎪⎨⎪⎧21∣∣fi−fj∣∣22,yij=121max(0,m−∣∣fi−fj∣∣2)2,yij=−1中的L2范数验证损失用于训练。
- 通过改变加权参数λ来验证人脸的准确性。通过将学习的DeepID2分别与L2范数和联合贝叶斯模型进行比较,测试集上的人脸验证精度。无论是识别信号还是验证信号都不是学习特征的最佳信号。相反,有效的功能来自于两者的适当结合。
- 个人间和个人内方差是相应散射矩阵的特征值,相应的特征向量表示不同的变化模式。
- 使用λ=0,0.05和+∞学习的特征的前两个PCA维度, 分别地这些特征来自LFW中人脸图像数量最多的六个身份,并用不同的颜色进行标记。
- 当λ=0(左)时,尽管集群中心实际上是不同的,但由于个人内部的巨大差异,不同的集群混合在一起。
- 当λ增加到0.05(中间)时,个体内差异显著减少,集群变得可区分。
- 当λ进一步向无穷大方向增加时(右图),尽管个体内的变异进一步减少,但簇中心也开始塌陷,一些簇变得明显重叠(右图中的红色、蓝色和青色簇),使得很难再次区分。
Investigating the verification signals
- moderate intensity的验证信号主要起到减少人内变异的作用。为了进一步验证这一点,将所有样本对上的L2范数验证信号与仅约束正或负样本对(分别表示为L2+和L2-)的样本对进行比较。
- L2+只会减小相同标识的DeepID2之间的距离,而L2-只会增大不同标识的DeepID2之间的距离(如果它们小于边距)。
- 测试集上学习的DeepID2的人脸验证精度,分别通过L2范数和联合贝叶斯进行测量。
- 还与L1范数和余弦验证信号以及无验证信号(无)进行比较。所有比较的识别信号都相同(对8192个标识进行分类)。
- 使用L2+验证信号学习的DeepID2功能只比使用L2学习的功能稍差。相比之下,L2-验证信号对特征学习帮助不大,并且给出的结果几乎与未使用验证信号的结果相同。证明验证信号的作用主要是减少个人内部的差异。
- 每当除了识别信号之外添加验证信号时,面部验证精度通常提高。
- L2范数优于其他比较的验证指标。这可能是因为所有其他约束都比L2弱,并且在减少个人内部差异方面不太有效。例如,余弦相似性仅约束角度,而不约束幅值。
Final system and comparison with other methods
-
在学习联合贝叶斯之前,首先通过PCA将DeepID2特征投影到低维特征空间。PCA后,在整个CelebFaces+B数据上训练联合贝叶斯模型,并在LFW中的6000个给定人脸对上进行测试,其中将联合贝叶斯给出的对数似然比与在训练数据上优化的用于人脸验证的阈值进行比较。
-
从越来越多的面片中提取的DeepID2进行人脸验证的准确性。
-
进一步利用从大量补丁中提取的丰富的DeepID2功能池
-
将特征选择算法再重复六次,每次都从先前特征选择步骤未选择的面片中选择DeepID2。
-
分别学习七组选定特征的联合贝叶斯模型。通过进一步学习支持向量机,我们融合了每对比较人脸上的七个联合贝叶斯分数。
-
通过这种方式,实现了更高的99.15%人脸验证准确率。关于LFW的准确度和ROC与先前最先进方法的比较。
-
Conclusion
- 人脸识别和验证监督信号对深度特征表示的影响与构建人脸识别理想特征的两个方面一致,即增加人与人之间的差异和减少人与人之间的差异,两个监控信号的组合会产生比其中任何一个都好得多的特性。