澎思科技資深演算法研究員羅伯特:有限算力資源下的深度學習與人臉識別

  • 2019 年 10 月 6 日
  • 筆記

演講嘉賓

Robert Lorenz(德國籍),澎思科技資深演算法研究員,德國柏林洪堡大學數學系博士,致力於人臉檢測、人臉跟蹤和人臉品質判斷等領域的技術研發,尤其擅長模型構建和模型優化。其研究成果已經應用於澎思科技多種人臉識別軟體平台和硬體產品中。同時也致力於影片結構化演算法的研究和開發,負責數個子研究課題的攻堅工作。

曾任職學習寶聯合創始人兼首席科學家、精通5國語言,完成學習寶所有模式識別演算法的搭建及商用。精通模式識別、機器學習與影像處理的常見演算法,例如貝葉斯分類器、SVM、ADA-BOOST、MLP、CNN、kernelized回歸、受限制BOLTZMANN機、特徵提取、特徵選擇,影像預處理、二值化演算法、連通域分析、PPC(Project Profile Cutting),Viterbi演算法,C語言數據結構,例如樹結構、圖形結構等等。

在 9 月 5 日的 AI 研習社職播間頻道中,Robert Lorenz為我們帶來了相關的分享,以下是本期職播間的簡要回顧,具體回顧影片,請點擊文末【閱讀原文】觀看。

回顧正文

大家好,我是來自德國的Robert,目前在澎思科技負責演算法研究、演算法設計和演算法實現,今天想分享的內容是有限算力資源下的深度學習與人臉識別技術——人臉抓拍設計、移植和優化。在標題中大家可以看到兩個關鍵詞,第一深度學習,第二人臉識別。

人臉識別主要分兩大類,第一人臉抓拍,指的是從原始的數據(如錄像數據)中提取人臉,第二大類是對提取好的人臉進行進一步操作,比如人臉比對、人臉性別分類、表情分類等具體應用。今天我們把重點放在人臉抓拍這一步,還會特別注意演算法的運行速度。

近年來,所有的人臉識別演算法都是基於深度學習完成的,所以今天分享的內容也基於深度學習來展開,具體目錄如下:

1.深度學習定義與概念

大家可能聽過深度學習這個術語,但是深度學習到底是什麼?如圖所示,即為深度學習的定義。我們將深度學習之外所有的模式識別演算法命名為傳統模式識別演算法。下面來了解一下深度學習和傳統模式識別之間有哪些區別,深度學習的特點是什麼。

傳統演算法主要有兩個步驟。其中第一步為「手動特徵提取」,即按照當前分類任務手動定義特徵提取方法。下圖顯示對於文字影像的邊緣特徵,總共四個方向的邊緣特徵。深度學習之前,基於四個方向的邊緣特徵在文字識別領域非常流行,因為文字影像邊緣特徵的判別能力好於原始影像像素的判別能力。

傳統演算法第二步為「訓練參數」,參數訓練是基於在第一步提取好的特徵進行的。下圖顯示對於文字特徵向量的建模,每類由多維高斯分布建模。多維高斯分布唯一由期望值和相關矩陣描述。為了提高魯棒性,僅僅估計了相關矩陣的前k個特徵值和特徵向量,後(d-k)個特徵值由一個常數描述。有了每一類的參數,可以使用貝葉斯分類器對未知、不在訓練庫的新影像提取特徵,並對提取好的特徵進行分類。

傳統方法有一些不太理想的地方:特徵提取和參數訓練的兩個步驟是拆開的。更優的方案是聯合優化特徵提取和參數訓練。另外,預測任務的變化引起特徵提取方法的改動。例如,對腫瘤檢測文理特徵判別能力好於邊緣特徵。為了達到不錯的預測效果,每個領域需要有經驗的專家琢磨出好的手動特徵提取方法。深度學習克服了這些難題。

接下來我們看一下,深度學習放棄手動特徵提取而採用自動特徵提取,如圖所示:

上圖有10個特徵層,每一層的參數是自動學習的,不涉及到手動干預。因深度學習的特徵提取是自動、智慧的,所以深度學習屬於人工智慧的領域。

我們還需要知道的一點是,與傳統演算法相比,深度學習有一定的優勢。在包含1000類的IMAGENET資料庫中,基於幾層深度學習的分類錯誤率為25%。將層數提高到19,錯誤率降低到7%,22層的錯誤率為6%,如果是非常深的深度學習模型(152層),錯誤率才3%,而人類的錯誤率也有5%。這說明在特定情況下,深度學習的識別率高於人類的識別率,這就引起了各行業都想將深度學習的思路融入到他們的領域裡,人臉識別也不例外。

人臉識別屬於影像處理的領域。影像處理領域中最常見的層是卷積層,比較一下卷積層和全連接層。如下圖所示,全連接層每個輸入節點跟任何輸出節點都構造一個連接,而卷積層只有考慮特殊的連接。一個卷積核掃描所有輸入圖的窗口,可以做到參數共享、參數數量降低。可訓練參越多,越容易發生過度適應現象,因卷積層大大降低了參數數量,其過度擬合現象大量減少,卷積操作可以理解為深度學習網路的正則化。另外全連接不考慮二維影像拓撲,而卷積層更好地利用相鄰像素之間的關聯性。

來看一下深度學習早期的一個完整的深度學習網路模型。下圖顯示所謂LENET5的拓撲:卷積層1、欠取樣層2、卷積層3、欠取樣層4、卷積層5、全連接6、分類輸出層7。LENET5對32×32大小的輸入通過卷積和欠取樣和全連接層提取84維的特徵向量,對84維的特徵向量進行最終的分類,都在一個聯合框架中。

對深度學習的定義和概念的介紹就到這,接下來了解深度學習怎麼應用在人臉抓拍的領域。

2.人臉檢測與深度學習

人臉抓拍第一步是人臉檢測,是一個二類分類問題,只有兩類:人臉和非人臉。人臉檢測中一個難題是人臉大小未知。克服這個難題的一個辦法是影像金字塔,如下圖左側部分所示。影像金字塔包含不同縮小率的縮小影像。對不同縮小圖用固定窗口大小進行掃描,就可以做到多尺度人臉檢測。

人臉檢測另外的難題是類內的豐富性。人臉有白種人、黃種人、黑人等不同種族,影像光照條件不同、模糊度不同,人臉姿態、角度也不同。非人臉類更複雜,有無窮多個非人臉的可能性。所以,分類人臉和非人臉需要比較深、有一定判別能力的深度學習網路。用深的網路掃描整個影像金字塔的方法不最優,計算量太大。可以利用非人臉可以細分成簡單負樣本(例如平穩的天空)、中等負樣本(例如衣服文理、胳膊、手)和難負樣本(跟人臉非常相似)的事實。先用極少的計算量排除簡單負樣本,然後用中等計算量排除中等負樣本。以此類推,用更大的計算量排除難度更大的負樣本,最中留下的所有沒排除的窗口分類成人臉。在傳統領域該思想叫做ADABOOST分類器組合方法。

下面介紹一個基於ADABOOST思想的三個階段人臉檢測演算法,如下圖所示。總共有三個深度學習模型:PNET、RNET和ONET。PNET網路不深,只有三個卷積層,用12×12的窗口掃描影像金字塔,快速排除大量的簡單負樣本。留下的候選窗口用大小24×24重新摳,當作RNET的輸入,RNET的計算量中等,有四個卷積層。對RNET可能沒有成功排除的難負樣本調用計算量比較大的ONET,輸入大小為48×48,ONET有5個卷積層,構造最終的人臉/非人臉分類效果。同時ONET計算人臉5個特徵點(眼睛,鼻尖,嘴角),用來在人臉比對之前做人臉矯正。

三個階段的高效人臉檢測器運行速度快,分類效果不錯。然而,如果CPU跟GPU聯合使用的話,CPU與GPU之間的傳輸數據時間不可忽略,如下圖所示。

為了減少傳輸數據的時間,我們尋找一個階段的人臉檢測器,即只有一個深度模型的人臉檢測器。下面我們來看一下一個階段的高效人臉檢測器。因為沒有快速預淘汰簡單負樣本的步驟了,我們在前兩個卷積層和欠取樣層大大降低網路輸入圖的尺寸,縮小率為32倍。兩個卷積層之後還有非常多的深度學習層,但是因影像尺寸非常小了,其計算量並不大了。一個階段的人臉檢測器沒有影像金字塔了,但是有一個以上的分類輸出層。輸出層的輸入是不同尺寸的特徵圖,一個階段的人臉檢測器基於特徵金字塔,是克服人臉大小未知的另外一種方法。兩個尺度之間跨度比較大,容易漏檢特徵金字塔中間大小的人臉。為了避免這種現象,設計了Inception模組。其設計特點為不同分支,分支卷積核大小不一致,最終連和不同分支。不同卷積核大小的分支構造不同大小的感受野,構造不同尺度的特徵圖。連續三次使用Inception模組,構造非常多的卷積核大小的組合,非常好地客服了人臉大小未知的問題。

下圖中顯示的人臉檢測器不關注運行速度,但爭取更高的準確率。代價是幾百倍的計算量,我們這關注的是網路架構。高準確率人臉檢測器也屬於一個階段的檢測器,基於特徵金字塔,總共有六個尺寸層次。與以前的模型相比,特徵金字塔不直接當成網路輸出層的輸入,但是還加上特徵增強模組。特徵增強模組考慮到兩個相鄰的特徵圖,對尺寸小的特徵圖進行上取樣,構造跟尺寸大的特徵圖同樣的尺寸。用乘法融合兩個相鄰的特徵圖,再加上基於inception思想的模組,這才是分類輸出層的輸入。

如下圖所示,準確率高的人臉檢測器對不良因素的魯棒性非常強,可以檢測出尺寸更小的人臉、模糊人臉、光照情況複雜、曝光、很暗的人臉、被局部遮擋的人臉,還有反光、姿態奇特或者化妝的人臉。抓拍系統不會使用計算量龐大的高準確率人類檢測器,而調用上述提到的快速人臉檢測器。當然,對不利情況下的檢測率有一些折扣。假設,遠處的人臉尺寸小、非常模糊,快速人臉檢測器漏檢了。但是十幾幀之後人移動到離攝影機更近的位置,不顯得那麼小和模糊,檢測出的概率大大提高。以人為單位的快速人臉檢測器的檢測率可以超過99%。

3.人臉跟蹤與深度學習

雖然人臉檢測速度快,但是每幀都做人臉檢測,滿足不了一個GPU實時處理數十路影片的數據。另外這種方法也放棄了幀與幀之間的關聯性。假設,在幀1檢測出四個人臉。在幀2出現4個人臉的概率很高,甚至4個人臉的位置跟前一幀的位置非常相似。從前一幀到當前幀人臉具體平移量是多少,這就是人臉跟蹤的命題,請看下圖。人臉跟蹤在目標周圍範圍考慮問題,人臉檢測在整個場景圖範圍考慮問題,與全局的檢測相比,跟蹤屬於局部演算法,可以大量節省整個抓拍系統的計算量。

接下來,給大家分享一下一個屬於傳統演算法領域的跟蹤演算法。其特點是運行速度非常快,數學模型和求解非常瀟洒。下圖的第一個數學公式是空間域中的數學模型,優化對象是相關核h,使得對在幀1的影像數據f進行濾波的話,得到跟標籤g儘可能接近的值,其中*代表循環卷積。標籤g經常選擇為高斯函數。正則化係數lambda控制過度適應現象。利用傅里葉變換和相應的一些數學定理,可以把空間域建模問題等價地描述在頻率域。大寫字母符號代表小寫字母符號的傅里葉變換。卷積定理把耗時的循環卷積操作改成快速的乘法。頻率域的解析式形式很簡單,只有乘法、加法和除法的操作。在幀2,對空間域的影像數據z應用傅里葉變換,跟在幀1學到的模板H進行乘法,得到頻率域的響應Y,再用逆傅里葉變換回到空間域,得到空間域的響應y。最終跟蹤效果為響應y最大值的對應的位置。

雖然基於相關濾波的跟蹤演算法在CPU上非常快,但是利用不起來GPU並行計算資源,因為快速傅里葉變換由很多零散的計算步驟組成,其GPU並行計算加速效果很差。接下來,給大家分享基於深度學習的跟蹤演算法,可以充分利用GPU並行計算資源。下圖顯示SIAMESE網路的跟蹤器的流程。在幀1以目標位置為中心稍微擴充,構造參考圖,用深度學習映射phi構造尺寸非常小的特徵圖(6×6)。在幀2擴充範圍更大,構造搜索圖,用同樣的映射phi計算出尺寸比較大的特徵圖(22×22)。SIAMESE網路的特點是其輸出層,所謂的相關層。6×6的特徵圖當作卷積核,掃描22×22的特徵圖,構造17×17大小的輸出圖。跟蹤的效果就是輸出圖最大值的對應的位置。因17×17尺寸比較粗糙,經常對輸出圖進行上取樣操作,獲取更大解析度的跟蹤效果。SIAMESE網路屬於離線學習的跟蹤器,因為映射phi與原始影像無關,需要大量的人臉訓練樣本在GPU上學習映射phi的參數。然而,上述介紹的相關濾波跟蹤器是在線學習的跟蹤器,模板H依賴於原始影像,關鍵在於模板H的訓練過程極快。

4.人臉屬性與深度學習

從現在開始,內容不會給大家介紹那麼詳細,限於概括性的介紹。下一步給大家介紹一下人臉屬性與深度學習,如圖所示:前幾層設計所有任務共享的卷積層和欠取樣層。後來幾個網路分支對應不同標籤類別,比如局部、全局標籤,有序標籤、類別性標籤等等。需要大量的標註好的人臉屬性訓練樣本,在GPU上訓練共享的參數和分支的參數。

5.人臉識別應用

接下來簡單介紹一下人臉識別的應用,如下圖:

6.深度學習與人臉識別未來

下面討論一下深度學習與人臉識別的未來,如下圖: