王奧迪
(四川大學視覺合成圖形圖像技術國防重點學科實驗室,成都610065)
近年來,深度學習技術被廣泛地應用在人臉識別中,大大加速了人臉識別的發展。深度學習技術以數據為驅動,因此一些大規模的公開人臉數據庫也應運而生,極大地推進了人臉識別技術的研究。除了大規模的數據集,神經網絡結構本身包括目標函數的設計也是解決人臉識別問題的主要途徑。目前最新的方法中最具代表的網絡結構有VGG[1]、GoogLeNet[2]和ResNet[3]等。
盡管目前的人臉識別技術已經取得了顯著的發展,甚至在一些公開庫上已經超越了人眼識別的準確率。但是在解決跨姿態人臉識別問題上效果仍然不理想。文獻[4]中提到,現有的基于深度學習的人臉識別方法,在跨姿態(正臉與側臉匹配)的識別任務上的準確率,相比于正臉間的識別任務的平均降低了10%左右,而人眼的識別準確率僅僅降低了2%左右。文獻[5]提供了ResNet-18 模型在CFP[4]數據集上預測錯誤的樣本對案例。圖1 展示的是真實標簽同屬于一個人但被模型預測為不是一個人的樣本對,圖2 展示的是真實標簽不是一個人但被模型預測為是一個人的樣本對。可以看到,盡管ResNet-18 作為一個表征能力很強的模型,在跨姿態條件下的人臉識別任務中仍存在較大的誤差。導致這一現象的主要原因之一是目前用來訓練人臉模型的數據集中姿態變化較少或者不均衡。

圖1 預測錯誤的負樣本對

圖2 預測錯誤的正樣本對
本文提出一種基于度量學習的方法Cross-Pose Pair Loss(下文稱之為CPP Loss)。該方法能夠有效地利用訓練集中有限的姿態變化,主要目標是擴大跨姿態條件下的類內距離和類間距離的差距,有效地提升了基準模型在跨姿態條件下的人臉識別準確率。
本文用來訓練人臉模型的數據集使用VGGFace2[6],VGGFace2 是一個公開的大規模的人臉數據集,包含9131 個類別,331 萬張人臉圖片,每個人平均有362.2張圖片。數據集分為訓練集和測試集,其中訓練集包含8631 類,測試集包含500 類。該數據集是從谷歌上搜集的,覆蓋了姿態、年齡、光照、種族和職業的變化。本文之所以使用該數據集作為訓練集,也是因為該數據集包含了一定的姿態變化,盡管整個數據集上的姿態變化并不均衡。主要體現在每個人的姿態變化不同以及整個數據集上接近正臉的圖片的數量遠遠大于姿態比較大的圖片的數量。本文所有實驗中用到的訓練集是VGGFace2 的子集,包含8625 個人,300 多萬張圖片。


假設{f,nf}是VGGFace2 訓練集上的來自同一個人的一組跨姿態的樣本對,其中f 為接近正臉的圖片,nf 為非正臉圖片。定義CPP Loss 如公式(3),其中i,j表示樣本的類別,B 表示一次送入網絡的一批樣本的類別集合,表示兩個樣本間的相似度(實驗中使用余弦距離),表示CPP Loss 正如所有的度量學習的方法,旨在減小樣本的類間相似度和擴大樣本的類內相似度。換句話說,即擴大樣本的類間相似度與類內相似度的差距。而CPP Loss 主要針對的是跨姿態條件下的類內相似度和類間相似度。對于一個類別i 的樣本對{fi,nfi},它們之間的相似度即為跨姿態條件下的類內距離,然后分別以fi和nfi作為錨,在樣本集合B 中挖掘最大的跨姿態條件下的類間相似度。如公式(3)所示,CPP Loss 的優化目標就是最小化類間相似度和類內相似度間的差值。其中m 為一個間隔參數,旨在保證類間相似度比類內相似度至少差m。

本文的實驗代碼均在PyTorch 下完成,訓練集和測試集的所有圖片都通過MTCNN[8]檢測的5 個特征點位置做簡單的平面內的二維對齊,并裁剪為統一的尺寸112×96。訓練基準模型時參考文獻[7]的設置,其中,間隔參數m 的值固定為5,尺度參數S 的初始值設為30。本文的CPP Loss 方法是基于基準模型繼續訓練學習。CPP Loss 方法中,網絡以跨姿態的樣本對作為輸入。所以首先需要在訓練集VGGFace2 上組織跨姿態樣本對。具體做法是,將訓練集中每個人的圖片按偏航角(yaw)分為接近正臉(小于5°)和非正臉(大于45°)圖片。訓練時采取線上組織樣本對的方式,首先隨機采樣一組不同的類別集合,然后針對每個類別,分別在其接近正臉和非正臉圖片組中個隨機采樣一張圖片組成跨姿態樣本對。
表1 和表2 為實驗結果對比表,測試集為Multi-PIE[9]的子集,包含249 個人和3029 張圖片。測試協議為1:1 身份認證。測試時,將測試集中的正臉圖片作為注冊庫(gallery),而查詢庫(probe)按偏航角分為三組,分別為小姿態(±15°和±30°)、較大姿態(±45°和±60°)和大姿態(±75°和±90°)。表1 中與基準模型對比的模型是在基準模型上只使用CPP Loss 繼續訓練學習得出的模型。可以看到,CPP Loss 方法在“正臉-較大姿態”和“正臉-大姿態”兩組姿態跨度條件下均對基準模型的準確率有所提升。而間隔參數在一定的數值范圍內,與模型的準確率成正比關系,具體分析可以參考文獻[7]。表2 中與基準模型對比的模型是在基準模型上使用CPP Loss 結合AM-Softmax 繼續訓練學習得出的模型。可以看到,CPP Loss 結合AM-Softmax 的方法可以給基準模型在測試集上的準確率帶來更大的提升,并且在三組姿態跨度條件下都有所提升。

表1 CPP Loss 不同間隔參數下的實驗結果對比

表2 CPP Loss 結合AM-Softmax 不同間隔參數下的實驗結果對比
綜合上述的實驗結果對比分析可以得出,本文提出的CPP Loss 方法,通過在跨姿態樣本對上的度量學習,可以進一步提升基準模型在跨姿態條件下的人臉識別準確率。雖然訓練數據集上的姿態變化不大并且存在不均衡現象,但是組織跨姿態樣本對的方式可以更加有效地利用訓練集中的姿態變化。值得一提的是,如果使用CPP Loss 結合AM-Softmax 的方法,可以給基準模型的準確率帶來更大的提升,同時保證不損失其在小姿態跨度條件下的準確率。可以解釋為CPP Loss 擴大跨姿態樣本間的類內距離和類間距離的差距的同時,加上AM-Softmax 的約束可以保證模型在訓練樣本上的判別能力。并且相比于基準模型,在該階段的訓練過程中,AM-Softmax 會更加地專注于較大姿態的樣本的學習。因為基準模型的訓練集中較大姿態的樣本占整體的樣本數量的比例較小。
針對跨姿態人臉識別問題,本文提出的CPP Loss,通過組織跨姿態樣本對的方式,有效地利用數據集中的姿態變化,使用度量學習的方法提升了基準模型在跨姿態條件下的人臉識別準確率。為解決跨姿態人臉識別問題提供了一個可行性方法。