【CVPR2018】實時旋轉魯棒人臉檢測演算法

【CVPR2018】實時旋轉魯棒人臉檢測演算法

來自專欄 深度學習大講堂

編者按:蘇軾在《題西林壁》中曾寫道:「橫看成嶺側成峰,遠近高低各不同。」這兩句詩闡釋了視角的變化對於視覺任務的影響。

而在人臉識別領域,由於真實場景的複雜多變,受人體姿態和取景角度的影響,採集到的人臉圖像,時常會存在平面內旋轉角度不確定等問題,這為人臉檢測以及基於人臉的視覺任務帶來了極大的挑戰。

本文中,將為大家介紹中科院計算所VIPL組的CVPR2018新作:如何利用級聯矯正網路,來實現實時、旋轉自適應的人臉檢測。

大講堂特別提供相關論文及demo的下載鏈接。

另,深度學習大講堂即將推出Valse2018系列報告,敬請關注!

本文將介紹我們的一篇實時旋轉不變人臉檢測的工作。

本論文下載鏈接:

arxiv.org/pdf/1804.0603.

演算法的demo鏈接:

github.com/Jack-CV/PCN.

在體操、街舞、家庭合影等複雜的應用場景,由於人體姿態和取景角度的變化,人臉不總是豎直的,有可能有各種各樣的平面內旋轉角度。旋轉不變人臉檢測演算法目標是精確的檢測這種旋轉的人臉。多樣的平面內旋轉角度,使得人臉的表觀變化非常大,為旋轉不變人臉檢測帶來了極大的挑戰性。

有很多已有的工作嘗試解決旋轉不變人臉檢測。最簡單直接的方法就是基於數據増廣的方法,在訓練階段將人臉旋轉到任意角度。這樣做的優點是測試階段沒有額外的時間開銷;缺點是旋轉人臉的表觀變化非常大,需要使用一個計算量較大的網路才能保證檢測的精度,這在一些對實時性要求高的應用中是不實用的。

另外一種策略就是分治。可以訓練一個豎直人臉檢測器,在測試階段,將待檢測圖像旋轉多遍進行檢測,這樣也可以實現任意旋轉角度人臉的檢測。豎直人臉檢測器的計算量是相對較小的,但是檢測多次也會使得時間開銷成倍增長,而且帶來更多的誤檢測。

還有一種方法是先將旋轉的人臉轉正然後再進行檢測。具體而言,可以先使用一個旋轉路由網路,預測候選人臉框的旋轉角度,然後轉正人臉,之後可以使用一個豎直人臉檢測器完成檢測。然而,精確的預測人臉的旋轉角度本身也是一個很難的任務,旋轉角度預測錯誤也會降低檢測精度。

目前的許多旋轉不變人臉檢測演算法需要在精度或者速度上進行妥協。我們提出的PCN演算法目標是在保持很低的計算量的前提下,實現精準的旋轉人臉檢測。

在CVPR 2015上提出了Cascade CNN人臉檢測方法,即通過級聯多個CNN逐步過濾非人臉樣本。之後提出的MTCNN對Cascade CNN改進,將分類、邊框回歸、特徵點三個任務合併,利用不同任務相關性實現多任務學習提升性能。Cascade CNN、MTCNN演算法在豎直人臉檢測上可以實現出很好的效果,但在旋轉不變人臉檢測上仍有提升空間。我們的PCN由CNN級聯組成,這點借鑒於Cascade CNN。PCN中的每一級CNN都是一個多任務網路,同時學習人臉非人臉判別、邊框回歸、旋轉角度校準三個任務。

在測試階段,首先使用滑動窗口與圖像金字塔的方式產生候選窗口,然後送入網路開始檢測。每一級網路過濾掉部分非人臉窗口,根據邊框回歸結果調整候選框位置,然後根據預測出的旋轉角度校準窗口的角度,具體來講:

  • 第一級網路預測旋轉角度使用二分類的方式,只預測人臉朝上或者朝下,朝下的人臉會被翻轉,經過第一級後人臉旋轉角度範圍從360度縮減為180度;
  • 第二級網路預測旋轉角度使用三分類的方式,只預測人臉朝上、朝左或者朝右,朝左或右的人臉會被翻轉為朝上,經過第二級後人臉旋轉角度範圍從180度縮減為90度;
  • 在第三級旋轉範圍已經比較小,所以第三級網路直接回歸旋轉角度。

通過逐漸減少人臉的旋轉變化,可以顯著降低人臉與非人臉分類的難度,進而提升檢測精度。在第一級和第二級採用只預測粗糙朝向的方式,可以使得旋轉角度預測的精度大大提高且速度更快。

在PCN中,存在兩個級聯結構。第一個是人臉與非人臉的級聯分類,這點與Cascade CNN一致。先使用小的CNN過濾簡單負樣本,再用大的CNN判別難負樣本,這種方式可以極大地提升檢測速度。

第二個級聯結構是旋轉角度的級聯校準。PCN的級聯校準屬於一種由粗到精的級聯回歸模式,與人臉特徵點估計、人體姿態估計思想類似。人臉的旋轉角度等於三級網路預測結果之和。

級聯校準模式,將難度較大的旋轉角度預測分解為多個任務,每一個任務都會比較簡單,這使得整個校準的難度降低。在第一級和第二級只預測粗糙朝向有兩個原因,第一是粗糙朝向預測的精度更高,剛開始就直接回歸角度誤差會很大;第二是可以避免傾斜的圖像crop操作,可以大大提高速度。

在實現人臉窗口旋轉校準操作時,即使只是對窗口做計算低廉的翻轉操作,如果窗口數目很大時,速度仍然很慢。我們可以先將輸入圖像翻轉三次,得到上下左右四個朝向的圖像。這樣將一個人臉旋轉到某個角度,等價於去對應角度的圖像上crop人臉。此策略可以將與窗口數量成正比的校準操作時間縮減為常數時間,效率大大提高。

為了驗證我們的演算法的有效性,我們比較了常見的各種旋轉不變人臉檢測演算法。

FDDB是一個常用的人臉檢測評測集,但是主要包括豎直人臉,我們將FDDB旋轉到上下左右四個方向來評測旋轉不變人臉檢測演算法。可以看出我們的演算法精度與Faster RCNN(VGG16)和SSD500(VGG16)精度相當,在誤檢測較少時候PCN會更好一些。與Cascade CNN等其他方法相比,PCN的精度有明顯提升。

我們從WIDER FACE中挑選了一部分旋轉人臉的圖像進行演算法評測。這個數據集上的測試結果進一步證明了PCN的有效性。

下面結合速度、精度、模型大小進行綜合的分析。PCN是一個可以在CPU上也實時運行的演算法,模型大小和速度都遠優於Faster RCNN、SSD、R-FCN演算法。同時可以看到,PCN相比Cascade CNN,速度幾乎一樣,但精度有明顯提高,這得益於我們快速準確的漸進校準策略。

這是PCN演算法的一些檢測結果,可以看出PCN演算法可以精準的檢測任意平面內旋轉角度的人臉,且對膚色、光照、視角魯棒。

總結一下,PCN是一個快速、魯棒、準確的旋轉不變人臉檢測演算法,在實際中有良好的應用前景。歡迎大家關注我們的工作。謝謝大家!

主編:袁基睿 編輯:程一

該文章屬於「深度學習大講堂」原創,如需要轉載,請聯繫 ruyin712。

作者信息:

時學鵬,中科院計算所VIPL課題組人臉組研究生,導師為山世光研究員。研發了VIPL課題組可在移動端實時運行的人臉檢測SDK,曾在CVPR發表論文一篇。

該文章屬於「深度學習大講堂」原創,如需要轉載,請聯繫茹茵

原文鏈接:【CVPR2018】實時旋轉魯棒人臉檢測演算法

歡迎大家關注我們的微信公眾號,搜索微信名稱:深度學習大講堂


推薦閱讀:

TAG:圖像處理 | 人臉識別 | 深度學習DeepLearning |