王衛民 唐 洋 張 健 張軼秋
(江蘇科技大學計算機學院 鎮江 212003)
在過去的幾年中,CNN模型取得了巨大的突破。2012年,AlexNet[1]問世,提出了 RELU非線性函數和Dropout,并使用多GPU來加速,使CNN模型可以處理大數據量和區分復雜物體。2014年,VGG[2]通過降低filter的大小(VGG的filter大小為3*3)和加深網絡層(網絡層深度提高到了16、19層)來取得更好的效果。同年,GoogleNet[3]將層級提升到22層,并提出新的結構Inception,主要思路是用密集成分來近似最優的局部稀疏結構。隨著模型深度增加,SGD的優化變得更加困難,針對此問題,ResNet[4]將層級提到了 152 層,提出了用于學習殘差函數的Residual結構,在沒有增加參數和計算量的前提下提高了模型的訓練速度和訓練效果,并改善了退化的問題。為了達到更好的識別精度,本文將上述模型提取到的特征進行融合。并將融合后的特征應用到人臉識別中。
在 2004 年,Sanderson 和 Pailwal[5]總結了特征融合思想,他們根據信息融合發生在分類器(classi-fier)處理前后把信息融合劃分為先映射融合(pre-mapping fusion)和后映射融合(post-mapping fusion)。通常數據級融合(data level fusion)和特征級融合(feature level fusion)被稱之為先映射融合,如袁海聰[6]等把Gabor小波特征、局部二值圖特征和像素特征融合成最終特征進行人臉欺詐檢測。分值級融合(score level fusion)和決策級融合(decision level fusion)被稱之為后映射融合,如梁銳[7]等利用加權平均等特征融合算法進行深度視頻的自然語言描述。
深度學習的特征融合思想在卷積神經網絡中運用十分普遍[8,15]。空間特征融合算法[9]可以對多個卷積層輸出的特征進行融合,從而把多個卷積神經網絡模型連接在一起。融合函數定義為
其中:xa和xb表示圖片分別經過不同卷積神經網絡得到的特征。y表示融合后的特征。xa、xb和y∈RH×W×D,H、W和D分別表示特征向量的長度、寬度和通道數。
空間特征融合算法的幾種融合函數:
1)加性融合函數。
加性融合函數是對兩個特征向量對應位置元素的值進行相加,公式為

2)最大融合函數。
最大融合函數是將兩個特征向量對應位置元素最大的值作為融合后的值。

3)級聯融合函數。

級聯融合函數保留了兩個特征圖的結果,并將融合后的特征圖的通道數變為原始特征圖的兩倍。

其中 y∈RH×W×2D。
基于這些理論,本文對現有的多種CNN模型提取特征,并構建新的模型把提取的單特征融合并進行訓練,使多種CNN模型提取出的單特征融合,從而形成新的融合特征。
不同模型提取出的圖片特征具有互補性[10],因此,融合不同模型提取出的圖片特征可以提高對圖片的識別精度[19~20]。據此,本文提出兩種多CNN特征融合方法,包括算法1多CNN特征融合算法和算法2多CNN特征降維融合算法。本文采用的三種CNN模型VGG19、IceptionV3和 ResNet,在數據集(在6.1節介紹)上都迭代訓練1000次,訓練出網絡參數。
多CNN特征融合算法是把三種預訓練CNN模型在數據集上去除最后的分類層,提取出圖片的單特征向量,然后進行特征融合。VGG19、IceptionV3和ResNet提取出的特征向量分別記為FV∈R512、FI∈R2048和 FR∈R2048。融合函數選用 concatenate函數,因為concatenate函數能將單特征的全部信息保留并融合。接著用Dense層把融合特征降維成長度為128的特征向量,其過程見算法1。其中Dense層的參數針對不同問題構建具體神經網絡模型進行訓練。
算法1:多CNN特征融合過程
輸入:單張圖片image
輸出:融合特征fuse_feature
步驟:
用VGG19提取image特征記為FV∈R512
用IceptionV3提取image特征記為FI∈R2048
用ResNet提取image特征記為FR∈R2048
CF=concatenate(FV,FI,FR)∈R4608
fuse_feature=Dense(CF)∈R128
算法2在提取出單特征后,先用Dense層對三種不同特征進行降維處理,再用融合函數融合,最后用Dense層把融合特征降維成長度為128的特征向量,其過程見算法2。同樣,構建具體模型運用上述算法訓練出Dense層的參數。
算法2:多CNN特征降維融合過程
輸入:單張圖片image
輸出:融合特征fuse_feature
步驟:
用VGG19提取image特征記為FV∈R512
用IceptionV3提取image特征記為FI∈R2048
用ResNet提取image特征記為FR∈R2048
DFV=Dense(FV)∈R128
DFI=Dense(FI)∈ R128
DFR=Dense(FR)∈R128
CF=Concatenate(DFV,DFI,DFR)∈R384
fuse_feature=Dense(CF)∈R128
特征融合在人臉識別中也有廣泛應用[16~18],但大多基于人工提取的特征如LBP(局部二值圖)特征,HOG梯度方向直方圖特征和DCT(離散余弦變換)特征等再進行特征融合[11~12]。本文的兩種特征融合算法基于三種卷積神經網絡模型,自動提取圖片特征并應用于人臉識別中。
在特征融合算法使用過程中,需要用VGG19、InceptionV3和ResNet模型提取圖片的特征,這一環節耗時長,資源利用率低。本文利用上述模型線下提取單特征然后進行特征融合,此步驟對算法結果沒有影響,但是提高了特征的復用性,縮短了訓練時間,節約了計算資源,其過程見算法3。
算法3:線下特征提取過程
輸入:人臉數據集Images{Image1,Image2,Image3… Imagen}
輸出:FSV,FSI,FSR
初始化:創建特征文件 FSV,FSI,FSR
For each Image∈Images do
For each i∈Image do
face=detection(i)
//用Dlib庫中訓練好的人臉關鍵點檢測器從圖片中檢測出人臉
FSV=save(VGG19(face))
FSI=save(IceptionV3(face))
FSR=save(ResNet(face))
//用 VGG19、IceptionV3和ResNet提取 i特征向量記為FVi∈R512、FIi∈R2048和 FRi∈R2048并保存。
End for
End for
用Keras建模框架把多CNN特征融合方法建模并用數據集訓練。得到的融合特征用于人臉識別的對比。多CNN特征融合算法人臉識別模型如圖1所示。

圖1 多CNN特征融合算法人臉識別模型
相比于多CNN特征融合算法人臉識別模型,多CNN特征降維融合算法人臉識別模型層數增加,參數更多。最終由實驗得出的識別精度也更高,模型如圖2。

圖2 多CNN特征降維融合算法人臉識別模型
人臉識別模型的訓練過程是把線下提取好的三種特征作為輸入X1、X2和X3,把對應人名的詞典下標作為輸入Y,并設標簽L為1。再用算法1或算法2把多個特征向量融合;接著和Embedding層降維的輸入Y連接起來,然后用Dense層降維融合特征,最后用sigmoid激活函數得出最終結果P。用數據集通過迭代訓練從而把多特征融合模型中的參數訓練出來。
輸入兩張人臉圖像記為image1、image2,用特征融合模型預測后,提取多CNN特征融合算法結構中最后一層Dense層輸出作為融合特征,函數記為get_feature;dist為計算兩個特征在歐式空間上的距離記為D(精確到小數點后三位);由閾值λ(在第5節介紹)判斷出預測值。若兩張人臉圖片為同一人則記為1,否則為0。過程見算法4。
算法4:人臉識別過程
輸入:測試人臉圖片image1,測試人臉圖片image2
輸出:0或1
步驟:
Face1=detection(image1)
Face2=detection(image2)
F1=get_feature(Face1)
F2=get_feature(Face2)
D=dist(F1,F2)
If D <λ then
return 1
Else
return 0
end if
人臉識別模型訓練完成后,隨機從測試數據集中抽取兩張人臉圖像進行預測,得兩張人臉圖片融合特征的歐式距離記為x,真實值為y(相同人的人臉圖片真實值記為1,不同的記為0)。重復此過程n次,則測試數據結果可表示為

滿足:
1)xi∈[0,1](1≤i≤n)
2)yi=0 or 1(1≤i≤n)
則閾值λ的求取過程可形式化為以下問題:

在閾值算法計算中,精度P初始值為1000,abs函數是用來計算絕對值(歐式空間距離),過程見算法5。
算法5:閾值計算
輸入:(X,Y),P
輸出:λ
初始化:sum1=P,sum2=0,z=0
For each(xi,yi)∈(X,Y)do
xi=xi×P
yi=yi×P
end for
//把每一個歐氏距離xi,和真實值yi都乘以精度P,使得xi∈
[0,1000],yi=0 or 1000。
For each i∈[0,1000]do
For each(xi,yi)∈(X,Y)do
If xi>i:
z=1000
Else:
z=0
T=abs(z-yi)
sum2=sum2+T
end if
end for
if sum2<sum1then
sum1=sum2
λ=i
end if
end for
//i從0開始遍歷到1000,求出定義1函數F(λ)的最小值,同時也求出閾值λ
本文實驗采用LFW(Labeled Faces in the Wild)數據庫來評估本文算法的性能。硬件配置為:Intel(R)Core(TM)i7-7700HQ CPU@2.80GHz,16.00GB內存,1050顯卡。
LFW數據庫用于研究非受限情形下的人臉識別問題。圖像大小為250×250像素,其中有5749人,共計13233張圖片。本文的實驗節選其中部分數據:1496人,共4108張圖像。具體圖片如圖3所示。

圖3 LFW人臉圖像數據
人臉存放在文件夾Images中代表訓練集,其中:
Images中包含多個文件夾 Image1,Image2,Image3…Imagen。
imagei代表:第i個人的人名,其中:
imagei中包含文件imagei1,imagei2,…imageim;
imageij代表第i個人的第j張圖。
從全部數據4108張圖片中取出3108張作為訓練數據進行訓練;1000張作為測試數據。
模型訓練完成后,各現有的神經網絡模型及本文的兩種融合特征神經網絡模型(迭代訓練1000次)在測試數據集上測試1000次。各模型識別精度比較如表1所示。可以看出,本文的兩種融合特征神經網絡模型在識別精度上有一定的提升。

表1 不同模型識別精度比較
本文還對比了訓練的迭代次數,實驗結果如圖4。多CNN特征降維融合模型在精度上略好于多CNN特征融合模型,而隨著迭代次數的提高,兩個模型的測試精度都有提升。

圖4 模型迭代次數識別精度圖
本文的模型都用訓練集迭代1000次。由表2可以看出本文的兩種模型識別精度都高于傳統的特征融合算法,見文獻[13~14]。

表2 與現有特征融合算法比較
本文在現有的多個CNN模型基礎上,進行特征融合并設閾值來提高人臉識別精度。以上技術的運用使得本文算法具有較強的泛化能力和優異的性能。本文的主要貢獻是用現有的多種CNN模型提取特征,融合出更具有鑒別性的特征,閾值的設置使人臉識別精度進一步提高。其在數據集上的測試結果也證明了本文方法的有效性。在下一步的工作中我們將融合特征運用于視頻中人臉的識別,期望取得較好的表現。