張 雪, 郭佳昕
(北京工業大學 軟件學院, 北京100124)
人臉識別系統目前被廣泛應用在監控場景中, 從監控視頻中快速并準確獲取人臉身份信息對于公安破案等具有重要意義[1-3]. 人臉圖像質量分析作為人臉識別過程中的關鍵一環, 不同場景選擇不同的圖像質量分析方法對識別的準確率有很大的影響, 特別是在監控場景下, 由于拍攝的人臉圖像含有大量被其他物體遮擋、模糊、頭部姿態不正以及無法判斷人臉等的低質量圖像, 若這些圖像進入識別系統會導致系統準確率下降, 嚴重影響識別效果[4,5]. 因此在監控場景中預先采用合理的圖像質量分析方法對提高人臉識別系統準確率有重要應用價值.
人臉圖像質量分析作為圖像質量分析的一部分,在保留傳統的圖像質量分析方法基礎上, 加入人臉特有的因素. 2009年, 國際標準化組織制定了關于人臉圖像質量的 ISO/IEC 標準, 對多種參數做出了規定[6]. 基于該標準國內外學者對于人臉圖像質量分析做了很多研究. 整體研究方法分為兩種: 基于深度學習的人臉圖像質量分析和基于多因素融合的人臉圖像質量分析.前者從大量數據中學習獲取人臉質量關注的特征并進行質量判斷. 在提取特征向量后對數據進行學習, 質量好的樣本離中心距離較近, 不好的樣本離中心距離盡量遠, 最后根據樣本到中心的距離, 得到質量分數. 該方法2015年開始出現, 隨后國外相繼出現了使用ResNet-50[7]、AlexNet[8]、GoogLeNet[9]等訓練人臉圖像質量模型. 近兩年出現的有SER-FIQ利用隨機嵌入魯棒性來估計人臉圖像質量[10]. 而這種方法普遍存在一個問題就是沒有針對具體的場景進行訓練, 雖然最終得到的質量模型在識別系統上有較好的魯棒性, 但若是使用在含有以大量低質量圖像為主導的視頻監控場景中, 模型效果并沒有較為突出的表現, 并且這樣訓練得到的模型無法適應特定場景, 一旦使用場景改變, 就需要重新訓練, 耗費大量的時間. 后者通過分析單個的質量因素,例如光照、清晰度、遮擋等, 對其分配權重進行加權融合, 最終得到一個質量分數, 該分數就是人臉圖像的質量分數. Nasrollahi等[11]分別對人臉角度、圖像亮度、銳度和分辨率逐一計算, 通過賦予這4個因素一定比例的權重, 得到圖像的質量分數, 進而對人臉圖像質量進行評價. Fourney等[12]為人臉提取了6個特征:人臉姿勢、亮度、銳度、人體皮膚的存在、分辨率,最終將這6個參數加權得到質量分數. 然而不同場景下指標的選取、權重的分配都會對質量分析結果產生影響.
鑒于上述研究缺陷和問題本文選取人臉角度(pitch、roll、yaw) 和圖像清晰度作為人臉圖像質量分析的兩個關鍵指標. 針對這兩個指標分別采用合適的方法訓練得到每個指標下的人臉圖像質量分數, 并設計基于聚類的人臉圖像質量分析算法, 對這兩個指標分配權重進行加權融合, 獲得人臉圖像質量分數的計算公式. 最后將所研究的人臉圖像質量分析技術應用人臉識別系統中, 證明該技術能夠有效過濾監控場景中的低質量圖像, 提高識別系統的準確率[13].
本文分析過程主要包含3大模塊: 人臉角度計算、圖像清晰度計算、基于聚類的人臉圖像質量分析系統. 最后得到人臉圖像質量分數. 算法流程圖如圖1.

圖1 算法流程
首先分別訓練人臉角度模型和圖像清晰度模型,得到對應的分數值, 之后設計基于聚類的人臉圖像質量分析算法, 并設計聚類系統, 在前端調節兩者的權重后可視化聚類結果, 計算聚類純度, 最終確定人臉圖像質量的計算公式.
(1) 概述: 人臉角度指的是根據一張二維的人臉圖像, 計算出這個人在實際三維空間中的面部朝向. 即輸入一張人臉圖片, 輸出表示方位的3個旋轉角度(pitch, yaw, roll), 其中, pitch表示俯仰角(關于x軸的旋轉角度), yaw表示偏航角(關于y軸的旋轉角度),roll表示翻滾角(關于z軸的旋轉角). 將一張二維圖像的特征映射到三維模型上效果如圖2所示[14,15].

圖2 人臉角度的三維效果圖
(2)本文使用方法: 由于人臉角度估計與頭部姿態估計的輸入輸出值相同, 本文中使用頭部姿態估計的經典方法, 利用先分類后回歸的思想, 使用CNN預測pitch、yaw、roll三個值. 如圖3所示. 使用ResNet作為主干網絡, 分別全連接3個fc層, 每個層單獨預測.首先對3個歐拉角分類, 將角度范圍從[-99, +99]以3為間隔劃分, 劃分成66個區間. 分類得到的結果做回歸, 即Softmax將其映射為概率值, 根據Softmax定義,此時所有的概率值和為1, 求出期望后, 網絡的輸出可以被映射到[0, 99]這個區間范圍內, 乘以3減去99,這個區間范圍就被映射到了[-99, +99]這個區間范圍[16,17]. 然后計算回歸的Loss, 使用MSE Loss與BCE Loss按照一定權重加權求和, 對最終的Loss梯度反向,就完成了整個過程, 每個歐拉角的Loss定義為:

圖3 人臉角度算法流程圖

其中, H 表示交叉熵函數, α表示權重系數, M SE 為平方誤差損失函數.
(3)模型訓練: 使用ALFW2000數據集, 包含2 000多張不同的頭部姿勢圖像, 訓練集和測試集按照7:3的比例劃分. 主要參數有:
1)學習率0.000 01;
2)一次訓練所取的樣本數即batch size為16;
3) epochs為20;
4)權重系數α 設置為1時, 損失最小.
(1)概述: 圖像清晰度和模糊度是相對的, 一張人臉圖像清晰度越高, 則模糊度越低. 反之如此. 因此使用圖像模糊度算法進行研究. 作為質量評價中的重要因素之一, 其方法主要分為兩種情況: 一種是有參考算法, 即根據已有的圖像, 來判斷當前圖像是否模糊; 另一種是無參考的算法, 判斷圖像是否模糊; 常見的圖像清晰度算法主要有: Brenner 梯度函數, 它是最簡單的梯度評價函數, 它的原理是計算相鄰兩個像素灰度差的平方; Tenengrad 梯度函數采用Sobel算子分別提取水平和垂直方向的梯度; Laplacian 梯度函數與Tenengrad梯度函數基本一致, 用Laplacian算子替代Sobel算子即可; SMD (灰度方差)函數當完全聚焦時, 圖像最清晰, 圖像中的高頻分量也最多, 故可將灰度變化作為聚焦評價的依據, 常用的很多, 但都是在最簡單的基礎上進行優化和變換.
(2)本文使用方法: 由于攝像頭下采集到的圖片參差不齊, 將人臉圖像的清晰度作為人臉識別其中一項關鍵的指標很有必要. 本文使用OpenCV結合拉普拉斯方差算法計算人臉的模糊度進而得到圖像清晰度分數. 拉普拉斯算子是各向同性微分算子, 主要用來測量圖像的二階導數, 突出圖片中強度快速變化的區域, 一個二維圖像函數的拉普拉斯變換是各向同性的二階導數[18]. 定義為:

其中, ?2表示拉普拉斯算子, f 表示空間標量函數, x和y表示圖像像素的兩個方向. 對圖片進行灰度處理后,將圖片中的某一通道用拉普拉斯掩模做卷積運算后計算方差[19]. 基于圖像模糊度進行訓練后, 得到每個圖像對應的分數值, 值越小圖像越清晰, 0表示非常清晰,1表示非常模糊.
本文設計了基于聚類的人臉圖像質量分析算法,該算法在傳統的人臉識別流程的基礎上加入圖像質量分析和聚類, 如圖4.

圖4 基于聚類的人臉圖像質量分析算法
為了方便可視化聚類結果, 開發了基于聚類的人臉圖像質量分析系統, 通過調節圖像清晰度 b lur和人臉角度的權重, 對人臉圖像聚類, 聚類的純度越高則當前閾值下的人臉識別準確率越高. 純度的計算公式如下:

其中, mi表示為同一人的組數, m表 示總組數, 本文m 固定為200. 純度可表示為聚類的準確率, 即人臉識別的準確率.
系統主要涉及兩大部分的功能:
1)簇內聚類. 該模塊的功能主要支持調節歐式距離, 計算各人臉圖像到簇心之間的距離, 使用K-means聚類算法將相似的人聚在一類, 并隨機可視化前200組聚類結果的人臉圖像. 在每一個組圖像下設置了判斷該組人臉圖像是否是同一人的選擇框, 如圖5所示. 選擇完成后即可計算出對應距離下的聚類純度.

圖5 簇內聚類結果
2)簇間聚類. 在進行完上述的簇內聚類后, 已經篩選出聚類純度較高的簇內距離, 接著調節簇間的閾值,此處引入人臉圖像質量的兩個因素, 圖像清晰度b lur和人臉角度. 通過調節這兩個的權重值, 將篩選后的結果隨機分為兩組對比, 觀察這兩組的純度, 純度較高的清晰度和角度閾值即為最終分配的權重. 圖6是簇間聚類結果.

圖6 簇間聚類結果
一個較為完整的人臉識別流程要經過以下幾個步驟: 人臉檢測、人臉對齊、提取特征、人臉識別. 本文在進行人臉檢測后, 先根據檢測到的人臉關鍵點進行人臉對齊校準(face alignment)操作, 校準之后的人臉roll就全部變成0, 因此在進行質量分析時, 暫時不考慮roll的分數和權重. 下面重點介紹人臉質量分數的計算流程:
步驟1. 運行完人臉角度模型, 得到人臉的俯仰角、偏轉角以及翻滾角, 將角度轉化為分數值如下:

其中, a、 b 為 參數. y awscore是人臉圖像y aw角轉化后對應的分數值, pitchscore是 人臉圖像 pitch角轉化后對應的分數值, a nglescore是人臉角度的分數值. 一張人臉角度最正的分數是 pitch 、r aw 、r oll全部為0, 此時基于人臉角度的圖片分析, 該圖像質量是高的.
步驟2. 運行清晰度模型并得到對應的blur分數值.
步驟3. 簇內聚類. 采用本文研究的基于聚類的人臉圖像質量分析技術, 對人臉識別結果聚類, 選擇合適的聚類距離, 觀察聚類效果.
步驟4. 簇間聚類. 調節前兩步得到的 a nglescore和blur權重閾值, 并計算聚類純度.
步驟5. 通過實驗分析確定權重分別為0.6和0.4,最終得到圖像質量分數q ualityscore. 計算公式如下:

其中, b lurscore是關于圖像清晰度的分數值, a nglescore是關于人臉角度的分數值.
由表1可見, 在融入基于聚類的人臉圖像質量分析算法后, 同一批數據集在簇內距離為0.45、0.5、0.6時調節 b lur 和a ngle的權重計算得出的聚類純度均在0.6和0.4時最高, 因此當為b lur 和a ngle分配權重分別為0.6和0.4時, 對識別準確率的影響最大.

表1 不同參數下人臉圖像的聚類純度
為驗證該研究技術的有效性, 本文使用某公司2021年2月到2021年5月之間采集到的監控視頻, 對視頻進行抽幀, 抽幀方法選取常用的幀差法, 即對相鄰兩幀作差分運算來獲得運動目標輪廓. 抽出的圖像在進行簡單的檢測和識別后, 最終包含有6 000 000張人臉圖像, 為了進行實驗對比, 得到更客觀準確的實驗結果, 本文將數據分為10個批次, 每個批次含有600 000張圖像, 其中訓練集470 000張, 測試集130 000張進行驗證.
對一批數據設置不同的閾值并對該閾值下的結果聚類可視化, 隨機展示200組聚類結果, 計算聚類純度.通過研究發現, 加入人臉圖像質量分析算法后, 圖像的純度相比沒有質量過濾的純度有很大的提高. 如表2.

表2 不同聚類距離下的人臉圖像質量分析結果
由表2可見, 在對一批數據測試后分別對比未加入人臉圖像質量分析算法和本文研究的基于聚類的人臉圖像質量分析算法的純度結果, 本文研究的技術使聚類純度平均提高了11.67%, 該方法在一批數據集上表現較好.
在10批數據上分別進行測試后, 采用基于聚類的人臉識別技術明顯優于未加入質量分析的情況, 聚類純度明顯提升, 因此本文得到的人臉圖像質量計算公式具有一定的適用性. 如圖7、圖8、圖9分別是10批簇內距離在0.45、0.5、0.6時加入和未加入圖像質量分析技術的結果.

圖7 簇內距離在0.45時質量分析前后對比

圖8 簇內距離在0.50時質量分析前后對比

圖9 簇內距離在0.60時質量分析前后對比
由于本文研究的人臉圖像質量分析技術的目的是提高人臉識別系統的準確率, 此處的人臉識別系統采用某公司的門禁系統. 在未加入人臉圖像質量分析前人臉識別Top10準確率79.56%, 采用本文技術, 目前識別準確率已經達到95.98%. 結果見表3.

表3 加入質量分析前后人臉識別準確率比較 (%)
將本批從監控場景下獲取到的數據集在基于AlexNet、GoogLeNet、CNN的人臉質量模型上測試后分別計算Top1和Top10, 雖然這些模型在公開數據集上有較好的表現, 但在監控場景中, 采用本文提出的人臉圖像質量計算公式應用在識別系統中得到的結果優于其他方法. 如圖10.

圖10 不同人臉圖像質量分析方法在識別系統的表現
本文研究了基于監控視頻下的人臉圖像質量分析技術, 該技術可有效過濾低質量圖像進入識別系統, 提高人臉識別準確率. 該研究技術對于監控下的人臉識別有很大意義. 目前人臉圖像質量分析的研究已經進入深度學習階段, 但在特定場景下深度學習的方法未必達到較好的效果, 相信日后會有更好的方法解決此問題.