DeepMind&VGG提出人臉識別算法GhostVLAD,精度遠超IJB-B數據集state-of-the-art
- 2019 年 12 月 27 日
- 筆記
在人臉識別應用中,很多場景能夠獲取某一個體的多幅人臉圖像的集合(比如在監控視頻中),使用人臉圖像集來做識別,這個問題被稱為基於模板的人臉識別(template-based face recognition)。
對於多幅圖像,當然可以使用單幅人臉圖像的識別方法,綜合多幅圖像的識別結果確定最終的人臉識別結果,但更好的方式是直接基於人臉圖像集提取特徵,比較人臉圖像集的特徵相似性。
這涉及到如何聚合多幅人臉圖像的特徵向量成為一個特徵向量,使該特徵緊湊而又更具鑒別性的問題。
幾天前公布的一篇來自DeepMind和VGG組被ACCV2018接收的論文《GhostVLAD for set-based face recognition》,正是解決這樣的問題,文中提出的算法GhostVLAD在具有較高難度的大型真實場景人臉數據集IJB-B上的識別精度,遠超過目前的state-of-the-art結果!非常值得參考!
作者信息:
算法原理
作者的想法非常簡單,當聚合多個人臉圖像特徵時,現有的平均池化等方法沒能考慮到人臉圖像集中一些低質量的圖像(比如模糊人臉)的作用,這些圖像含有的信息對識別並沒有太大的貢獻,應該降低這些低質量圖像對最終聚合特徵的貢獻。
一種直接的處理方法是,在人臉圖像預處理階段將低質量圖像找出來,降低其貢獻權重,但作者認為,端到端自動訓練的方式讓網絡自身去優化識別並降低該部分樣本的權重更好。
作者發明的算法網絡結構如下:
多幅人臉圖像(每次圖像個數可不同)通過CNN網絡提取特徵並L2歸一化,然後被送入聚合模塊,GhostVLAD網絡模塊將多個人臉特徵聚合稱固定維數的特徵矩陣(與輸入圖像個數無關),再通過全連接層FC、BN層和L2歸一化為緊湊鑒別的特徵。
其中的關鍵網絡模塊GhostVLAD既實現特徵聚合,同時降低低質量圖像的權重,提高高質量圖像的聚合權重。
GhostVLAD是如何實現上述功效的呢?
說白了一句話,既然不要人為參與,那就要構建一種網絡結構,讓網絡自動學習對識別不重要的信息,並丟掉它。
作者是在NetVLAD上做出的算法改進,NetVLAD可以理解為一種可微分完全可訓練的VLAD編碼聚合方法,它的作用大致是自動計算特徵聚類中心,計算殘差,然後把殘差加權,構建聚合特徵矩陣,整個過程方便加入到神經網絡中。
在NetVLAD中,其聚合的特徵矩陣中的元素計算方法如下:
其中K是NetVLAD中手工設置的聚類中心個數,xi是第i個特徵向量,ck是可訓練的聚類中心,ak、bk是可訓練的參數控制着加權的權重。
由上述公式得知,NetVLAD中所有聚類中心ck都參與了聚合,GhostVLAD的改進則是增加聚類中心的個數到K+G,但是增加的聚類中心在構建聚合特徵矩陣的時候不參與貢獻權重。
如下圖所示:
紅色位置即標示出的Ghost 聚類中心,後續步驟中被去除,Ghost有「幻象」的意思,可能很多模糊的人臉的確看起來是「幻象」,這也是GhostVLAD名稱的由來。
這些多出來的不參與聚合特徵矩陣構建的Ghost聚類中心,就相當於給了神經網絡丟棄一部分信息使得網絡更具鑒別性的可能,而在原來的NetVLAD中是體現不出來的。
實驗結果
作者首先設計的實驗是比較網絡加上GhostVLAD層跟不加的精度,驗證其有效性,作者使用的訓練集是VGGFace2。實驗設置不再贅述,這裡直接給出結果。
在IJB-B數據集上的1:1人臉驗證結果比較如下圖,取得了大幅度的精度提升。
在IJB-B數據集上的1:N人臉識別結果比較如下圖,同樣取得了大幅度的精度提升。
然後作者將提出的算法GhostVLAD與目前的state-of-the-art比較。
如下圖中Table 3和Table 4,在IJB-A和IJB-B上比較驗證和識別結果,同樣所提算法精度也勝出不少,請注意作者使用的訓練集比其中很多state-of-the-art算法規模要小,但依然實現性能超越!
最後作者可視化了使用GhostVLAD後對輸入樣本權重的影響,發現對於那些低質量模糊人臉的確權重被降低了。
總結:
該文從一個簡單的直覺開始,構建了一種幫助神經網絡丟棄鑒別性不足的信息的有效方式,大幅改進了基於圖像集合的人臉識別方法,算法具有較高的實用價值,思想也很值得借鑒!
值得一提的是,該文中的GhostVLAD方法不僅僅適用於人臉識別,在圖像檢索、行人重識別等領域也同樣適用。
論文地址:
https://arxiv.org/abs/1810.09951
關於代碼:
可惜的是,該文目前並無開源代碼,但DeepMind和VGG組都是一向樂於分享代碼的,期待作者早日開源~