1. 程式人生 > >【CVPR2018】實時旋轉魯棒人臉檢測演算法

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

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

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

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

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

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1&retryload=1

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

本論文下載連結:

https://arxiv.org/pdf/1804.06039.pdf.

演算法的demo連結:

https://github.com/Jack-CV/PCN.

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

  • 第一級網路預測旋轉角度使用二分類的方式,只預測人臉朝上或者朝下,朝下的人臉會被翻轉,經過第一級後人臉旋轉角度範圍從360度縮減為180度;

  • 第二級網路預測旋轉角度使用三分類的方式,只預測人臉朝上、朝左或者朝右,朝左或右的人臉會被翻轉為朝上,經過第二級後人臉旋轉角度範圍從180度縮減為90度;

  • 在第三級旋轉範圍已經比較小,所以第三級網路直接回歸旋轉角度。

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

640?wx_fmt=png

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

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

--end--

640?wx_fmt=jpeg

主編:袁基睿  編輯:程一

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

作者資訊:

作者簡介:

640?wx_fmt=jpeg

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

往期精彩回顧

640?wx_fmt=jpeg640?wx_fmt=png640?wx_fmt=png

歡迎關注我們!

深度學習大講堂是由中科視拓運營的高質量原創內容平臺,邀請學術界、工業界一線專家撰稿,致力於推送人工智慧與深度學習最新技術、產品和活動資訊!

中科視拓(SeetaTech)將秉持“開源開放共發展”的合作思路,為企業客戶提供人臉識別、計算機視覺與機器學習領域“企業研究院式”的技術、人才和知識服務,幫助企業在人工智慧時代獲得可自主迭代和自我學習的人工智慧研發和創新能力。

中科視拓目前正在招聘: 人臉識別演算法研究員,深度學習演算法工程師,GPU研發工程師, C++研發工程師,Python研發工程師,嵌入式視覺研發工程師,運營經理。有興趣可以發郵件至:[email protected],想了解更多可以訪問,www.seetatech.com

640?wx_fmt=jpeg640?wx_fmt=jpeg

中科視拓

640?wx_fmt=jpeg

深度學習大講堂

點選閱讀原文開啟中科視拓官方網站