黃法秀,張世杰,吳志紅,陳 虎,孫家煒
(1.四川大學視覺合成圖形圖像技術國防重點學科實驗室,四川 成都 610065;2.四川川大智勝軟件股份有限公司,四川 成都 610045)
隨著計算機技術的發展和應用,人臉識別技術以其具有的非強制性、非接觸性、并發性等優勢得到了越來越廣泛的應用[1],如門禁管理系統、考勤管理系統、刷臉支付、火車站人證驗證系統等。在網絡結構設計和大規模的人臉數據集的基礎上基于深度學習的人臉識別取得了很大提高[2]。大部分基于深度學習[3]的計算機視覺研究需要大量的數據,對深度學習強大的表特征能力,大規模的數據可以有效防止過擬合,因此更多的數據對大多數計算機視覺研究都有幫助。
但多數情況是沒有辦法得到足夠的數據或者采集數據成本過高,所以數據擴充是提高計算機視覺系統表現經常使用的一種技巧。針對訓練樣本不足的問題,可以通過數據增廣來提升人臉識別的性能,目前有很多研究致力于這個方向。例如,文獻[1]對訓練樣本添加了隨機噪聲來增廣訓練數據;張坤等人[2]用多姿態生成人臉圖像和戴眼鏡人臉圖像來增廣數據;文獻[4]利用人臉的鏡像圖進行數據增廣;文獻[5]將原始訓練樣本做“鏡像”和“對稱臉”變換并將產生的虛擬樣本與原始訓練樣本進行融合來增加訓練樣本數,并在幾個公開數據集上都降低了錯誤識別率。
在不改變圖像類別的情況下,通過數據增廣提升數據集中的相關數據,增加數據量,豐富圖像的訓練集,能防止網絡學習到不相關的特征,更好地學到與數據有關的特征,顯著提升整體的性能,提高模型的泛化能力。自然圖像數據增廣方式有多種,從幾何的角度看,常用的方式有:水平翻轉,一定程度的位移、旋轉、剪切等;從像素的變換角度來看,常用的方式有:改變圖像色差、顏色抖動、扭曲圖像特征、增加圖像噪聲(高斯噪聲、椒鹽噪聲)。還可以將多種操作進行組合。
在具有均勻光照、正面姿態、中性表情和標準圖像分辨率的受控圖像采集條件(如身份證人臉圖像)下,人臉識別系統可以達到極高的識別精度[6],在實際應用中,往往是對不太理想環境下無約束條件下采集的圖像進行識別,使得識別性能降低。在訓練樣本中可能并不完全包含不太理想環境下的測試樣本,或者包含的測試樣本中某種樣本的數據較少,使模型無法充分學習到這類樣本的特征。因此,增加這類樣本有助于提升模型性能。文中從像素變換的角度,通過圖像濾波、亮度調節、調整圖像大小和腐蝕操作將圖像數據進行增廣模擬測試數據集中某類樣本進行研究。
平滑濾波[7]是使低頻增強的空間域濾波技術,它的其中一類目的是模糊,空間域濾波采用簡單評價方法進行,就是鄰近像元點的平均亮度值。平滑效果取決于鄰域的大小,鄰域越大平滑的效果越好,但鄰域過大,平滑會使邊緣信息損失更大,從而使輸出的圖像變得模糊,但這恰好能模擬測試數據集中模糊圖像。
1.1.1 均值濾波
均值濾波本身對去噪存在固有缺陷,不能很好地保護圖像細節,在圖像去噪聲的同時也會破壞圖像的細節部分,從而使圖像變得模糊。均值濾波是最簡單的一種濾波操作,輸出圖像的每個像素是核窗口內輸入圖像對應像素的平均值,是方框濾波的一種。其基本理論是,一個像素點的灰度值由其鄰域內像素值的平均值代替[8]。即對待處理的當前像素點(x,y),選擇一個模板,該模板由其近鄰的若干像素組成,模板系數都為1,求模板中所有像素的均值,再把該均值賦予當前像素點(x,y),作為處理后圖像在該點上的灰度g(x,y),即
(1)
其中,m為該模板中包含當前像素在內的像素總個數。
圖1展示了假設模板為3×3時,計算當前像素值的直觀表示,中間為中心像素,周圍8個像素,計算這9個像素的平均值,替代中心像素值。

圖1 均值濾波計算方式
當圖像細節與濾波器模板近似相同時,圖像中的一些細節受到的影響比較大,文中選取了與數據集中人臉圖像眼睛高度值大小一致的模板為3*3(簡稱B3)隨機選擇每個對象的5張圖像進行數據增廣,不足5張的全部增廣。還選取了大致可以覆蓋數據集中人臉圖像眼睛、鼻子和嘴巴大小的5*5模板(簡稱B5),這會使圖像整體更加模糊,在人臉圖像與背景圖像灰度接近時,即目標灰度與相鄰像素的灰度接近時,還會產生模糊的混合效應。
通過梯度的統計特征,利用表示變化速度快慢像素點的平方差和表示變化大小的像素差的絕對值來衡量模糊程度,求兩者的平均值表示梯度值,梯度值越高,像素點變化很突然,畫面的邊緣信息越豐富,圖像越清晰;梯度值越低,像素點的過渡非常平滑,沒有急劇的變化,圖像越模糊。選擇梯度值大于20的較為清晰的圖像進行均值濾波操作來增廣數據,這樣操作會保留原始數據集中的模糊樣本,而且會增加更多的模糊樣本,這類增廣數據記為ifbv20B5方式。
1.1.2 高斯低通濾波
高斯濾波[7]是一種線性平滑濾波,是用高斯函數作為濾波函數的濾波操作,對整幅圖像進行加權平均的過程,其基本理論是用一個模板掃描圖像中的每一個像素,用模板確定的鄰域內像素的加權平均值去替代模板中心像素點的值來模糊一張圖像。高斯濾波器是一類根據高斯函數的形狀來選擇權值的線性平滑濾波器,高斯濾波器的模板系數,則隨著距離模板中心的增大而減小。對圖像處理來說,常用二維零均值離散高斯函數做平滑濾波器。二維高斯函數公式如下:
(2)
高斯濾波器相比于均值濾波器對圖像的模糊程度較小。為了增加圖像的多樣性,選擇較小σ,生成的模板的中心系數較大,周圍的系數較小,對圖像的平滑效果較小的高斯模糊。
從全局和局部的角度來看,光照失真類型包括全局光照失真和局部光照失真[9]。全局光照失真指圖像整體過亮或者過暗,局部失真指在拍攝過程中光源不在被拍攝者的正前方。在文中原始數據集中光照局部失真樣本相對整體數據集來說數量太少,并且實際場景中由于光源位置或者白天透過窗戶的陽光所影響這類失真強度更大,原始數據中這類圖像局部失真強度不夠,模型無法充分學習到此類特征,這類圖像會降低識別精度,因此通過加強這類失真來增廣數據。
采用圖像變換中的點操作(point operators)進行圖像亮度和對比度的調整[7],根據輸入像素值計算相應的輸出像素值。點操作公式如下:
g(x)=a*f(x)+b
(3)
對比度的調節是輸入像素值乘上一個常數a,被稱為增益,亮度值加上一個常數b,被稱為偏置,用來控制圖像的亮度。
原始數據中亮度過亮和過暗的圖像相對較少,通過測試集正樣本中高于閾值的樣本的平均亮度確定一個大致適宜識別的亮度范圍(90-150),根據平均亮度選擇了參數a和b對圖像整體亮度進行調亮(C120B30)和調暗(C130B-100)來增廣數據,原始圖像亮度不同,進行調整之后也會生成不同亮度的過亮或過暗的圖像。為了補充相對較少的光照局部失真樣本,對圖像的二分之一部分(MyylC130B20)和五分之二部分(yylC130B20)進行亮度調亮和對比度增強來模擬偏向一側的光源影響的失真。在亮度和對比度調整的臨界區域進行均值濾波,來防止亮度突變對識別的影響。
通過攝像設備采集的圖像,發現存在畫質如油畫般的圖像,有正常畫質被腐蝕質感,通過測試發現這類圖像會明顯降低識別精度,腐蝕會去除圖像的某些部分,于是文中通過對圖像進行形態學操作—腐蝕增廣試圖提高識別精度。
腐蝕[7]是根據指定形狀和尺寸的結構元素—核與圖像或圖像的一部分進行卷積,求局部最小值的操作,計算核覆蓋區域像素點的最小值,并把這個最小值賦給參考點指定的像素,使圖像中的高亮區域降低,效果圖會比原圖有更小的高亮區域。腐蝕的數學表達式如下:
(4)
增加核的尺寸會消除更大的部件,減小核的尺寸會把小于核的圖像細節從圖像中去除。為了模擬這類樣本,核的大小不能過大,否則會將很多細節部分去除,因此選擇核的大小為3*3(E3方式),這樣會保留人臉特征,同時又能模擬出這類樣本的腐蝕感。
模擬測試樣本中既模糊又亮度過暗的圖像,將高斯低通濾波方式和調暗方式進行組合(G6C130B-100)。為了模擬測試樣本中局部光照失真這類圖像中較模糊的圖像,將yylC130B20增廣方式和B5增廣方式組合成一種新的增廣方式yylC130B20B5。
文中使用了文獻[10]提出的一種輕量級的CNN框架。該卷積神經網絡人臉模型會為了更好地擬合大量訓練數據體積不斷增大,并且能學習在具有噪聲標簽的大規模人臉數據上進行緊湊嵌入,該網絡模型用提出的Max-Feature-Map(MFM)操作將NIN(network in network)和一個小的卷積核大小集成到網絡中。構建的9層輕量級的卷積神經網絡Light CNN-9,包含5個卷積層,4個NIN層、Max-Feature-Map層和4個maxpooling層。該網絡模型在公開數據集LFW上有較好的準確率。
大規模數據能提高基于深度學習人臉識別準確率,因此盡量將可獲取的圖像作為原始訓練數據,大致分為兩類,第一類是公開的人臉數據集,第二類是人無意識狀態下的人臉圖像。
原始數據第一類的幾個公開數據集[11-17]:FERET人臉數據庫是由PERET項目所創建的一種大型面部圖像數據庫,每幅圖像中只有一個人臉,是獨立算法開發人員收集的。圖像是在不同表情、光照、姿態和年齡的半控制環境中采集的,數據庫包括1 564組圖像,共14 126張圖像,是人臉識別領域應用最廣泛的人臉數據庫之一;CMU Multi-PIE人臉數據庫由美國卡耐基梅隆大學建立,采集了337位志愿者在不同姿態、光照和表情下的75 000多張面部圖像,其中姿態和光照變化是嚴格控制的,是人臉識別領域的一個重要測試集合;CAS-PEAL中科院公布的大規模中國人臉數據集,共包含1 040個對象的99 450張圖像,所有圖像包括姿態變化、表情變化、飾物變化、光照變化、距離變化、時間跨度變化等7種變化模式。以東方人為主的人臉圖像數據集,有助于模型學習到東方人的共性特征;ORL數據庫由英國劍橋大學AT&T實驗室創建,采集了40個對象共400張圖像,每個對象的10張圖像是在不同時間、不同光照強度、面部表情和面部裝飾情況下采集的;WebFace數據集是爬取的圖像集,最終得到了10 575人的494 414人臉圖像的數據集。Extended Yale B人臉數據庫是耶魯大學建立的人臉識別數據庫,包含28個人,在9種不同姿勢和64種不同的拍攝參數下,總共16 128張人臉圖像;FRGC包含466個人的8 014張人臉圖像。這些未經控制的圖像顯示了模糊、表情、光照和時間方面的變化。這些圖像共計約70萬張。
需要訓練的數據除了要求一定數量的圖像,還要求圖像具有多樣性。從某場合采集的無意識狀態下的人臉圖像,這類圖像具有多樣性,能體現人臉識別技術相對于其他生物識別技術非強制性這一優勢,這類圖像對實際識別或認證更有意義。這類圖像姿態、表情多樣,包含某個公開場合人臉圖像6 622張、某公司534個對象的一張正面中性表情和多張無意識圖像19 159張、車輛經過道閘桿時采集的司機人臉圖像304 824張和某火車站認證現場采集的現場照片及其對應的身份證照片1 341 521張。
上述原始數據集約167萬張記作S,超過85%的圖像清晰度較高,整體亮度適宜,用這些圖像去測試人臉識別算法,大部分的人臉識別算法識別精度都較高,但實際人臉識別算法應用環境可能不理想,會采集到模糊和對比度低的圖像,從而影響識別精度。為了更大可能地囊括實際應用環境下的圖像,并增加測試樣本中數據量較少的樣本,對原始數據以第1部分介紹的方式進行了數據增廣。
文中著重研究識別算法對人無意識狀態下采集的人臉圖像的識別性能,選擇的四個測試集(Test1-Test4)是從不同地方拍攝的視頻上截取的人臉圖像組成。Test1是利用幾個廠家的圖像采集設備采集的約8萬張圖像,包括一部分模糊圖像和白天透過窗戶的陽光所影響光照局部失真圖像和某一個廠家設備采集的具有腐蝕感的圖像;Test2(約2萬張)和Test4(約23 000張)兩個測試集包括了每個對象身份證件圖像,Test2是包含人各種姿態和表情的圖像;Test4是采集的每個對象正面無遮擋表情中性圖像;Test3共3 000張,是在無窗室內多方位燈光亮度比較均勻的環境下采集的,包含亮度整體過亮過暗和模糊的圖像。
原始數據集共約167萬張圖像,以上述增廣方式對每個對象的前5張圖像進行數據增廣,不足5張的全部增廣,9種增廣方式每種方式共增廣7萬多張,剩下1種方式是進行模糊度的判斷,共增廣5萬多張圖像。圖2展示了測試樣本示例、原始訓練樣本以及相應的增廣圖像。

圖2 測試樣本示例、原始訓練樣本及相應的增廣圖像
文中采用了深度學習框架pytorch進行模型的訓練和測試,運行環境是Ubuntu16.04,硬件平臺使用了GPU加速訓練,GPU計算卡型號是NVIDIA Tesla P100*4。用原始數據訓練網絡Light CNN-9超過50個epoch得到模型CNN-9-S。
用模板分別為3*3和5*5均值濾波方式增廣的數據加入原始數據S訓練的模型為CNN-9-B3和CNN-9-B5,加入模糊判斷后進行均值濾波數據訓練的模型為CNN-9-ifbv20B5。表1展示了使用原始數據和加入均值濾波方式增廣數據訓練的模型在上述四個測試集上,在FAR(false accept rate)分別等于1%,0.1%下的準確率。
表1表明,B3增廣方式提示識別性能沒有太大提升,B5對Test2和Test3有所提升,這是源于這兩個測試集中存在一部分模糊對象,增廣的數據增加了測試集中的模糊樣本,并且一大部分測試數據模糊程度與模板為5*5的均值濾波模糊程度相當,所以B5相對于B3,提升效果更好。
ifbv20B5這類增廣方式對四個測試集的識別性能都有提高,這樣操作會保留原始數據集中的模糊樣本,而且會增加更多的模糊樣本。這樣做與上述隨機選擇每個對象的5張圖像擴展的區別在于,隨機選擇的5張圖像可能包括測試樣本中的模糊圖像,若再對它進行均值濾波操作,圖像更加模糊,這類樣本與測試樣本并不一致,對模型性能并不會起到促進作用,但ifbv20B5增廣方式會避免這種現象,僅僅對較清晰的圖像進行操作,因此對各個數據集都有很好的效果。

表1 濾波增廣方式結果
原始數據加上對圖像整體調亮(C120B30)和調暗(C130B-100)增廣的數據訓練的模型為CNN-9-C120B30和CNN-9-C130B-100,還有對MyylC130B20和yylC130B20這兩類增廣方式數據加原始數據訓練的模型CNN-9-MyylC130B20和CNN-9-yylC130B20。表2展示了這四個模型分別在四個測試集上,在FAR分別等于1%,0.1%下的準確率。
表2表明,這四種增廣方式主要是對Test3有所提高,這是由于Test3樣本包括過亮和過暗的測試樣本。Test1包括局部光照失真,所以yylC130B20這種增廣方式對Test1的識別精度有所提高。

表2 亮度調節增廣方式結果
訓練原始數據加E3方式擴展的數據得到模型為CNN-9-E3。表3展示了CNN-9-E3模型在每個測試集上在FAR分別等于1%,0.1%下的準確率。
通過表3可以看出,包含這類樣本的Test1性能有所提升,對其他幾個數據集來說,增廣的數據可能屬于不相關的數據,所以性能都沒有得到提升。
用G6C130B-100和yylC130B20B5方式增廣的數據加入原始數據S訓練的模型為CNN-9-G6C130B-100和CNN-9-yylC130B20B5。表4展示了這兩個模型在每個測試集上在FAR分別等于1%,0.1%下的準確率。
通過表4可以看出,G6C130B-100增廣方式與B5增廣方式相對應,由于兩個測試集中存在一部分模糊對象,增廣操作增加了測試集中的模糊樣本,因此在這兩個測試集上識別性能得到了提升,同時因為Test3樣本包括亮度過暗的測試樣本,所以在Test3上的識別性能相比其他增廣方式有較大提升。yylC130B20B5增廣方式的結果與yylC130B20方式主要是在Test1上有略微提升,雖然Test2和Test3中有模糊的圖像,但局部光照失真圖像少甚至沒有,這種增廣方式可能增加了無關數據,因此性能并不理想。

表3 腐蝕方式結果

表4 混合方式結果
通過3種傳統圖像處理方法共10種增廣方式進行數據增廣,將增廣數據與原始數據組成新的訓練數據集,通過公開人臉識別算法驗證每種增廣方式在不同的測試集上的識別效果。實驗結果表明,從不同方面和同方面的不同程度進行數據增廣,程度不同,提升效果也不同,這種方式能在一定程度上增加訓練樣本的多樣性。在此過程中需要注意的是,增廣數據要與測試集數據一致,確保不增加不相關的數據。在數據增廣方面,仍需進一步探究來提高算法性能。