盧添燁,劉興德,刁建超
(1.吉林化工學院 信息與控制工程學院,吉林吉林,132022;2.吉林化工學院 機電工程學院,吉林吉林,132022)
在進入常態化疫情防控的新階段,正確佩戴口罩作為切斷飛沫傳播的一重大舉措顯得尤為重要。然而諸如飛機,高鐵,商超等安檢處人臉識別往往需要摘下口罩采集完整人臉圖像,這無疑會帶來交叉感染的風險。因此口罩遮蔽的人臉檢測和識別能有效提高防疫安全并且保護居民的生命健康。這一任務不僅需要檢測人臉目標,還要針對局部人臉完成識別,這需要算法對小目標利用細節特征的能力又更高的要求。
目前專門用于口罩遮蔽的局部人臉識別算法較少。主流的檢測算法有R-CNN,SSD,YOLO,MTCNN 等。早年主要是傳統目標檢測算法如SVM 使用滑動窗口對整張圖像進行窮舉掃描,這類方法會帶來冗余的窗口和大量的數據。爭對這一問題,R-CNN[2~3]依靠圖像邊緣輪廓等信息篩選候選框,相較于窮舉的滑動窗口的方法,可以保證在更少的窗口的前提下保持更高的準確率,不過對于較為復雜的圖像,可能會框選大量互相重疊包含的數據,每個候選框都需要進行CNN 特征提取并使用分類器分來,這回帶來不小的計算量和緩慢的檢測速度。針對候選框的選取導致的大計算量這一問題,Fast R-CNN 使用一個特征提取網絡優化了候選框的選取工作,是的算法穩定性和檢測速度都有提升。然而檢測速度仍然停留在數十秒的檢測算法無法滿足實時的要求,YOLO[4]類使用回歸思想,大大加速了檢測速度的同時因為其7*7 網絡回歸的設定很難做到精準定位。最后考慮到實際項目的還需要硬件支持,所以本文選擇MTCNN 作為任務的檢測模塊,MTCNN[5]是一種三網絡級聯的檢測算法,兼顧檢測速度的同時有更好的準確率。
早期傳統的人臉識別通過建立面部的幾何特征的灰度模型來進行人臉識別。Kelly[7]的博士論文被認為是最早的人臉識別研究工作,通過邊緣和輪廓檢測測量面部標志的歐式距離,驗證機器學習完成人臉識別的可能性,但是還達不到實用的門檻。之后傳統機器學習方法例如主成分分析PCA,支持向量機SVM 開始流行,通過降維,二分類等的方法完成人臉識別。但是由于人臉數據集和算力的限制,容易出現過擬合問題。GPU 的誕生給了人工智能新的活力,基于大算力和深網絡的深度卷積網絡成了更好的選擇。FaceNet[8]提出一種基于三元組損失的無對齊人臉訓練方法,面部特征丟失較多,容易關注局部而不是全局。GroupFace[9]提出人臉的組感知表征,通過在網絡中學習人臉的隱藏組表征,實現了更高精度的人臉識別。不同于深度卷積網絡,transformer[10]獨特的注意力機制和全局理解能力帶來了新的變革。本文旨在將在深度學習領域具有里程碑意義的transformer 加以優化改進用于戴口罩遮蔽的人臉識別。
如圖1 所示,待識別用戶與識別系統交互完成圖像采集不可避免的會帶來與冗雜的無用數據影響識別效果,因此需要對采集到的圖像進行預處理,使用人臉檢測將人臉從圖像中剝離出來。本文使用多任務卷積神經網絡(MTCNN)算法完成檢測工作,將檢測到的人臉圖像進行人臉的對齊,直方圖均衡化,歸一化等數據增強方法以減小姿勢光照帶來的誤差,提高系統的魯棒性,最后使用transformer 完成特征提取和人臉識別,得到輸出結果。

圖1 人臉識別工作流程
人臉識別環境的多樣性,燈光遮擋,不同姿勢會帶來極大的挑戰,因此人臉識別前的檢測尤為重要,本文選擇MTCNN 作為人臉檢測算法,使用一個深度級聯的結構,分三個特制的深度卷積神經網絡從粗糙到細致的方法來預測臉部整體和特征點坐標。
1.2.1 MTCNN 的網絡結構
多任務卷積神經網絡(MTCNN)采用三個級聯的輕量級網絡,分別完成快速篩選,精細過濾,最終輸出。P-Net其基本的構造是一個不涉及全連接層的三層卷積網絡。圖片在輸入之前需要按照一定比例進行尺度變換,這種變換稱為圖像金字塔旨在解決目標多尺度問題。圖像金字塔生成后的數據,經過三層卷積核不同的卷積層輸入到一個人臉分類器中進行一個簡單的模板比對,最終將所有可能存在人臉的候選框輸出入R-Net 層。R-Net 是一個四層神經網絡,不同于第一層的P-Net 末尾的分類器,為了達到精細篩選的目的,R-Net 使用了一個全連接層。R-net 篩除大部分錯誤并且進行極大值抑制(NMS)優化在多個重疊的候選框中選取得分最高的一個。O-Net 與R-Net 相比結構類似的同時多了一個卷積層也帶來了更多的人臉特征。O-Net 會做出更為精確的回歸和置信度篩選,并輸出人臉的五個特征點和最終的候選框。
1.2.2 MTCNN 的工作流程
首先將輸入圖片進行特定尺度的縮放,形成一個被稱為圖像金字塔的數據集,以適應檢測不同大小的人臉。將圖像金字塔輸入P-Net 得到相對原圖的人臉候選框,將眾多候選框從輸入圖像中截取出來傳入R-Net 中,R-Net 會對各個候選框中是否有人臉做出評分并對候選框做出一定的修正,再將修正后的候選框于原圖截取圖片,最后傳入MTCHH 中最精細的O-Net,完成最后的評分和修正,得到最終的人臉候選框,實現人臉檢測。
1.3.1 Vision transformer
Dosovitskiy 等[11]首次將應用于NLP 領域的 Transformer 模型引入機器視覺,提出了 ViT(Vision Transformer),一種完全基于自注意力機制的網絡模型。
Transformer 首次是由谷歌于2017 年[10]提出的,該模型被提出旨在解決自然語言處理問題,并給該領域帶來極大震動,成為里程碑式的模型。隨后,Transformer 被創造性的應用于機器視覺領域,也給機器視覺帶來的新的變革。2018 年的Image Transformer[12]首先將transformer 跨領域的引入機器視覺,在此之后,出現眾多基于transformer的科研成果。例如,2020 年5 月Carion[13]等構建的DETR將transformer 投入目標檢測的領域中。2020 年10 月Dosovitskiy[14]等人將構建Vision Transformer,這是一種完全基于自注意力機制的圖像分類方案。

圖2 MTCNN 網絡結構

圖3 MTCNN 工作流程
Transformer 得以被廣泛開發使用的主要原因有以下三點:
(1) 學習長距離依賴能力強。卷積神經網絡(CNN)是通過不斷地堆疊卷積池化層來完成對輸入從局部信息到全局信息的特征提取,這種計算機制可能會帶來模型臃腫,計算量大幅上升,梯度消失問題,甚至使整個網絡無法訓練收斂。相較之下,Transformer 因為其附帶的依賴特性,利用注意力機制來捕獲全局上下文信息,減少無用特征對模型的干擾。
(2) 多模態融合能力強。CNN 使用卷積核來獲取圖像信息,但對于其他模態的融合效果一般(如聲音、文字、 時間等)。而 Transformer 的輸入不需要保持二維圖像,但由于Transformer的輸入輸出不要求保持為二維圖形,所以通常都可以通過直接對圖像進行運算得到初始嵌入矢量,而其他模態的信號轉化為矢量也可以通過直接在輸入輸出端實現融合。
(3) 模型更具可解釋性。在 Transformer 的多頭注意力網絡中,每個Head 都獨立使用自注意力機制,這使得模型具有在不同的任務和不同的表達子空間中學習相關的特征的能力。
1.3.2 Multi-Head Attention 多頭注意力機制
自注意力機制(Self-Attention Mechanism)[14]受到生物視覺原理啟發,增加了對特定區域著重觀察的機制,可以快速提取數據特征,獲取輸入圖像內部特征與其整體特征的相關性。對于視覺領域中,自注意力旨在計算輸入圖片特征相互之間的注意力權重,從而生成一個包含每個特征都關于其他的特征信息的特征圖。相較于傳統循環神經網絡在輸入數據時嚴格先后順序的掣肘,Self-Attention Mechanism使用并行加速運算的同時擁有全局視野。
多頭注意力機制(Multi-head Self-Attention)相較自注意力機制是在參數量總體不變的情況下,將查詢、鍵、值三個(qi,ki,vi)參數進行多次拆分,參數通過三個共享的可訓練變換矩陣(Wq,Wk,Wv),得到對應的(qi,ki,vi),之后按照Head 個數均分成h 份為即為每個Headi對應 的(Qi,Ki,Vi), 按 照 公 式(1) 得Attention(Qi,Ki,Vi),再將得到得結果進行concat 拼接和可訓練得變換矩陣Wo進行融合,至此完成了公式(2)(3)的工作。每組拆分參數映射到高維空間的不同子空間中計算注意力權重,從而關注輸入的不同部分。經過并行多次計算,最后合并所有子空間中的注意力信息,公式如(3)所示。
1.3.3 Vision transformer 模型
本文模型基于Vit 模型框架,修改了MLP Head 以更適用口罩遮蔽的人臉識別,使用DropPath 代替原文的Dropout,MLP Head 使用全連接層,GELU 激活函數,DropPath 組成。模型主要由以下三個模塊組成:
(1)Linear Projection of Flattened Patches (Embedding 層)
(2)Transformer Encoder
(3)MLP Head(最終用于分類的層結構)
以Vit-B/16 為例,輸入“224*224*3”的圖片經過embedding 層變成196 個patches,每個patches 格式為16*16*3,再通過線性投射層即全連接層得到“196*768”數據。插入一個“class”token ,與原token 拼接起來變成“197*768”的一維數據,到此完成圖片的預處理工作。將數據分為12 份“197*64”以便完成自注意力工作,拼接通過Norm 和MLP 得到輸出依然為“197*768”,因此這個被稱為的Encoder 的操作可以反復堆疊N 次,這個堆疊的過程被稱為Transformer Encoder。最后通過由Linear,Gelu,Dropot 組成的MLP Head 層完成分類。
實驗環境配置如下:Intel 處理器R7-5800H,Nvidia GeForce RTX 3060 顯卡,16G 內存。實驗采用python 語言,深度學習框架為Ptorch。
本文的實驗基于Wang[15]等人提出的口罩遮蔽人臉的公開數據集。該工作提出了三種類型的口罩遮擋人臉數據集,包括口罩遮蔽人臉檢測數據集(MFDD),真實口罩遮蔽人臉識別數據集(RMFRD)和模擬口罩遮蔽人臉識別數據集(SMFRD)。本文采用的RMFRD 是目前世界上最大的真是口罩遮擋的人臉數據集,其包含525 人的5000 張帶口罩人臉,9 萬張正常人臉。對該數據集的部分圖片使用多任務級聯卷積神經網絡(MTCNN)完成人臉對齊工作,之后使用直方圖均衡化,歸一化等數據增強方法以減小姿勢光照帶來的誤差,提高模型的魯棒性,完成數據集的構建。

圖4 vit 模型結構
如圖5 所示,從上往下以此為vit 三個模型(Huge/ Large/ Base) 準 確 率 曲 線, 隨 著 表1 中layers 即 是Encoder 塊個數的增加,收斂速度和準確率也逐漸增加。Hidden Size 為通過Embedding 層之后每一個token 的長度,MLP size 為Encoder 中MLP Block 全連接的節點個數,Heads 代表Multi-Head Attention 的多頭個數。隨著數據的增加和網絡層數的加深,最終的口罩遮蔽人臉識別準確率逐漸提高。這也證明本文提出的模型結構的合理性,在增加網絡深度和數據的情況下,能夠提升更加復雜場景下的口罩遮蔽人臉識別準確率精度,圖6 為識別結果樣例。

圖5 實驗結果

表1 模型參數

圖6 識別結果樣例
本文提出一種基于ViT 框架與卷積神經網絡相結合的口罩遮蔽局部人臉識別模型。模型使用MTCNN 完成人臉檢測為接下來的識別打好基礎,依靠transformer 網絡對長距離序列的特征提取能力,減少了無用特征對模型的干擾,利用增強后的特征信息進行目標識別,改善了遮擋目標的識別效果,有效提升了模型性能。實驗表明,本文實現的算法具備較強的魯棒性和較高的識別準確度。