1. 程式人生 > >深度學習在人臉識別中的應用 —— 優圖祖母模型的「進化」

深度學習在人臉識別中的應用 —— 優圖祖母模型的「進化」

原作者: 騰訊優圖 | 來自: 機器之心

序言——「弱弱」的人工智慧

說到人工智慧(Artificial Intelligence, AI)人們總是很容易和全知、全能這樣的詞聯絡起來。大量關於人工智慧的科幻電影更給人工智慧蒙上一層神祕的色彩。強如《黑客帝國》、《機械公敵》中的AI要翻身做主人統治全人類。稍弱點的《機械姬》裡 EVA 懂得利用美貌欺騙中二程式設計師,殺死主人逃出生天。最不濟也可以蠢萌蠢萌的像 WALL·E 能陪玩、送禮物還能談個戀愛。

其實人工智慧這個詞在 1956 年達特茅斯會議上正式誕生時,目標就是想要讓機器的行為看起來像是人所表現出的智慧行為一樣的「強」人工智慧。然而人工智慧的研究是高度技術性和專業性的,各分支領域都是深入且各不相通的,因而涉及範圍極廣。正是這種複雜屬性,導致人們對人工智慧的研究程序總是磕磕碰碰,反覆地經歷過分樂觀的浪潮與極度悲觀的寒冬。時至今日,想要完成全知、全能的強人工智慧仍然只是一個長遠目標。

雖然目前的技術水平還遠不能實現強人工智慧,但在一些非常特定的領域裡,弱人工智慧技術正在經歷前所未有的迅猛發展,達到或已超越人類的最高水平。例如深藍、Alpha Go 分別在國際象棋和圍棋領域擊敗世界冠軍。例如自然語言理解、語音識別和人臉識別接近、達到甚至超越普通人的識別水平。雖然這些弱人工智慧技術並不能真正地推理、理解和解決問題,但是面對特定的任務它們所給出的「判斷」看起來是具有智慧的。而正是這些看似「弱弱」的人工智慧技術,在悄悄的改變人類生活的方方面面。它們以點帶面完成越來越多的「簡單任務」,為人們提供更加簡潔、方便和安全的服務。

人臉識別正是眾多「弱弱」的人工智慧技術之一。通過看人的面孔識別其身份,對每一個正常的人來說都是再簡單不過的。如果強行將人臉識別的難度和下圍棋來比,應該沒有人會覺得人臉識別更難。然而從計算機的角度來看,至少在輸入資料的複雜度上人臉識別是遠超圍棋單步走子決策的。如圖 1(a) 所示,一張 Angelababy 的影象在計算機看來,其實就是一個數字矩陣如圖 1(b)。數字矩陣的每個元素取值範圍是 0-255 的整數。通常人臉識別演算法所需的輸入影象至少在以上,大的可能達到。理論上不同的可能輸入共有種(每個畫素的取值範圍為 0-255)。而圍棋任意單步走子的可能局面上限為(每個棋盤格只能有黑子,白子,無子三種情況),遠遠小於人臉識別。無論是圍棋還是人臉識別,通過遍歷完整的輸入空間來做出最優的決策,就計算複雜度而言都是完全無法接受的。

圖1:數字化的人臉識別 VS. 圍棋單步決策
這裡寫圖片描述
其實對幾乎所有人工智慧問題,如何通過更高層次的抽象來理解輸入從而更快速的做出決策都是解決問題的關鍵所在。近十年來引領新一波人工智慧浪潮的核心技術「深度學習」就是這樣一種方法,它通過少則近幾層多則上百層人工神經網路不斷地對高維的輸入資料塊進行抽象與理解並最終做出「智慧」的決策。單憑深度學習技術可能仍然難以完成全知全能的「強」人工智慧,但它卻是完成任何特定「弱」智慧任務的一把牛刀。正是看到深度學習技術如此巨大的潛力,國際網際網路巨頭 Google,Facebook,Microsoft 紛紛搶先佈局,國內網際網路領袖BAT也不惜資源進行技術儲備,作為騰訊內部頂級的機器學習研發團隊,優圖也投入精英人力專注於深度學習技術的研發與產品落地。

本文著重以人臉識別為例介紹深度學習技術在其中的應用,以及優圖團隊經過近五年的積累對人臉識別技術乃至整個人工智慧領域的一些認識和分享。

回顧——人臉識別的「淺」時代

在介紹深度學習技術在人臉識別中的應用之前,我們先看看深度學習技術興起前的「淺」時代人臉識別技術。前面提到高維輸入是所有類人工智慧問題的一個普遍難題,學界稱之為「維數災難」(The curse of dimensionality)。其實在機器自動人臉識別技術研究的早期研究者們嘗試過用一些非常簡單的幾何特徵來進行人臉識別, 如圖 2 所示(請原諒圖片的質量,摘自 93 年的一篇人臉識別領域奠基之作[1])。
圖2:基於幾何特徵的人臉識別
這裡寫圖片描述
這樣的樸素想法具有特徵維數少的優點,所以不會遭遇維數災難問題。然而由於穩定性差、區分能力弱和難以自動化等原因,這種做法很早就被拋棄。研究人員們發現,設計各種幾何特徵,折騰大半天還不如直接比較畫素區域的差別準確,也就是所謂的模板匹配技術。然而,直接比對畫素誤差有個很容易想到的缺點,不同人臉區域對區分人的身份的重要性並不一樣。事實上研究[2]表明眉毛和眼睛是區分人身份最重要的區域,其次是嘴巴,而大片臉頰區域所包含的身份資訊是有限的。如圖 3 所示,人類最難鑑別身份的是去掉眉毛和眼睛的人臉。

圖3:不同區域對人臉識別的重要性
這裡寫圖片描述
為了解決這樣的問題,很長時間人臉識別都非常依賴於判別性特徵的學習,最有代表性的工作莫過於 fisherfaces[3],所謂判別性資訊就是那種獨一無二特徵,就好像圖 4 中所示,成龍的大鼻子,姚晨的大嘴,李勇的招牌馬臉,姚明的魔性笑容。總而言之,只要能找到你獨特的「氣質」就能更好的認識你。

圖4:具有判別性的人臉
這裡寫圖片描述
判別性特徵的想法非常直觀有效也取得了一定成功,但是由於人臉的畫素特徵非常不穩定,不同拍攝裝置和拍攝場景、不同的光照條件和拍攝角度等都會造成相同人臉的畫素差異巨大。想要在各種複雜影響因素下找到一張人臉穩定且獨特的特徵就很難了。為了解決這些問題,研究人員開始研究比簡單畫素值更加穩定的影象描述子。其中比較主流的一種描述子 Gabor 描述子借鑑了人類大腦的視覺皮層中對視覺資訊進行預處理的過程。大腦皮層中對視覺資訊加工處理的操作主要有兩種,一種是在簡單細胞中進行的線性操作,一種是在複雜細胞中進行的非線性匯聚。如圖 5 所示的是 MIT 大腦和認知科學學院人工智慧實驗室的主任 Poggio 教授提出的一個叫 HMAX[4] 的類腦視覺資訊處理流程:

圖5: HMAX 影象資訊處理過程
這裡寫圖片描述
這其中的簡單單元「S1 units」和「S2 units」進行了一種叫做 Gabor 小波濾波的操作。而複雜單元「C1 units」和「C2 units」進行了一種叫做 Max Pooling 的取區域性區域最大值的操作。事實上除卻直接使用事先設定的 Gabor 濾波器,HMAX 等價於一個四層的神經網路,實際上已經初步具備了現代深度模型的雛形。

在深度學習誕生前的「淺」時代,人臉識別研究人員不斷改進預處理過程、使用更好的描述子,提取更有判別性的特徵,這些都在慢慢的提高計算機識別人臉的能力。然而直到深度學習橫空出世前,「淺」時代的各種人臉識別方法,對人類本身所具有的人臉識別能力仍然望塵莫及。

擁抱——人臉識別的「深」時代

要賦予計算機完整的人臉識別能力,除了能認識人外其實還有幾步非常重要的預處理過程。如圖 6 所示,完整的人臉自動識別演算法需要能自己從影象裡找到哪有人臉,學界稱之為人臉檢測?哪裡是眼睛鼻子嘴,學界稱之為人臉特徵點定位?最後才是提取前面說到的具有判別性的特徵進行身份的識別,即狹義上的人臉識別。

圖6:完整的自動人臉識別流程
這裡寫圖片描述
在深度學習出現以前關於人臉檢測、特徵點定位和人臉識別這三個子任務的研究都是相對獨立的展開的。從上個世紀 90 年代開始到 2010 年左右,經過不斷的摸索,研究人員們對每個子任務都發現了一些比較有效的特徵與方法的組合來解決問題如圖 7 所示。然而由於研究人員需要根據每個子任務本身的特點設計不同的特徵,選擇不同的機器學習方法,因此技術的發展相對緩慢。

從 2012 年左右,受深度學習在整個機器視覺領域迅猛發展的影響,人臉識別的「深」時代正式拉開序幕。短短的四年時間裡,基於深度卷積神經網路的方法不斷在這三個子任務中重新整理人工智慧演算法的世界記錄。人臉識別「淺」時代讓人眼花繚亂的各種技術和方法彷彿一頁之間成為歷史。人臉識別研究人員,不需要在挖空心思的設計特徵,也不需要擔心後面需要什麼樣的學習演算法。所有的經驗的積累過程轉換為了深度神經網路演算法自動學習過程。這正式深度學習演算法最大的優點:自動學習對特定任務最有用的特徵!

圖7:人臉識別
這裡寫圖片描述
考察一個單項的「弱」人工智慧技術是否成熟,達到乃至超過人類的平均水平應該是一個比較通用的準則。說到這裡不得不提一個人臉識別的標準評測資料庫 LFW(Labeled Face in the Wild)資料庫。在 2014 年,Facebook 使用一個叫做 DeepFace 的深度學習方法,第一次在 LFW 資料庫上接近人類的識別水平(DeepFace: 97.35% VS. Human: 97.53%),其結果如圖 8 所示:

圖8: DeepFace深度學習網路
這裡寫圖片描述
「Talk is cheap, show me the code」,自從 DeepFace 在人臉識別領域一戰成名,讓研究人員們看到了超越人類識別能力的曙光。隨著幾大開源深度學習專案(例如 CAFFE,TORCH, TensorFlow)的發展壯大,基於深度學習的方法真正如雨後春筍般席捲整個人臉識別領域。事實也證明深度學習確實能夠做到,短短一年以後就有很多基於深度學習的方法在 LFW 資料庫上超過人類的識別能力,例如優圖的人臉識別演算法就在 15 年取得當時世界第一的 99.65% 準確率。

深度學習為什麼如此神奇,能在短短的幾年時間裡一統江湖呢?拋開技術細節不談,原理上來說最為關鍵的兩個因素就是:層級式抽象和端到端可學習。

在回顧「淺」時代人臉識別方法歷史時曾經介紹了基於幾何特徵的方法(圖2)和基於判別性特徵的方法(圖4)。下圖這些特徵無疑都是針對人臉的某種抽象。由於原始影象輸入的搜尋空間巨大,只有通過恰當的抽象縮小搜尋範圍,才能最終做出合理的決策。對一個複雜的概念想要通過一層的抽象就將所有結構梳理清楚會是很難甚至不可能的,而深度神經網路這種多層結構給自底向上的逐級抽象提供了天然的模具。只要將足夠多的資料輸入到具有多層結構的深度神經網路並告知它你想要的輸出結果,網路可以自動的學習中間層的抽象概念,如圖 9 所示,好奇的研究人員將一個能夠識別 1000 類物體的神經網路中的特徵進行了視覺化:

圖9:深度神經網路特徵視覺化結果
這裡寫圖片描述
從圖中可以看到在深度神經網路的第一層有點類似人類科學家積累多年經驗找到的 Gabor 特徵。第二層學習到的是更復雜的紋理特徵。第三層的特徵更加複雜,已經開始出現一些簡單的結構,例如車輪、蜂窩、人頭。到了第四、五層機器輸出的表現已經足以讓人誤以為它具備一定的智慧,能夠對一些明確的抽象概念例如狗、花、鐘錶、甚至鍵盤做出特別的響應。研究人員們積累幾年甚至十幾年設計出來的特徵例如 Gabor、SIFT,其實可以通過深度神經網路自動的學習出來(如圖9中「Layer 1」),甚至自動學習出它的人類「爸爸」難以言喻的更高層次抽象。從某種意義上來說,人工智慧科學家就是機器的父母,需要「教」機器寶寶認識這個世界。誰都希望自己有個聰明寶寶,只用教它「知其然」,它自己慢慢總結消化然後「知其所以然」。深度神經網路就像個聰明的機器寶寶自己會學習、會抽象、會總結。

端到端可學習,乍一聽這個名詞可能覺得頭有點「方」,其實可以簡單理解為全域性最優。圖 7 中總結了在「淺」時代,人臉識別的各個子問題都需要通過兩個甚至更多個步驟來完成,而多個步驟之間完全獨立的進行優化。這是典型貪心規則,很難達到全域性最優。事實上,受限於優化演算法深度神經網路也很難達到全域性最優解,但是它的優化目標是全域性最優的。近幾年深度學習在各種任務上的成功經驗,表明機器寶寶也是需要有夢想的,直接對準「遠方」的全域性最優目標進行學習,即使得不到最優解也也遠遠好過小碎步的區域性貪心演算法。想要達到真正的「強」人工智慧,深度神經網路還有很長的路要走,星爺的名言對神經寶寶同樣適用,做人沒有夢想和鹹魚有什麼分別。

進擊——優圖祖母模型的「進化」

隨著深度神經網路的機器學習技術的發展,在 LFW 人臉資料庫上,三、四年前讓所有機器學習演算法寶寶們望塵莫及的人類識別能力早已被超越。雖然優圖也曾在 LFW 上取得 99.65% 超越人類平均水平的好成績,但是我們清楚的明白刷庫還遠遠不夠,在實際場景中的應用更重要也更具挑戰性,在實踐中優圖已經根據落地需求對各種應用場景和應用型別做出了細分,以便實現各種場景下人臉識別任務的各個擊破。目前在落地應用中,常見的照片場景型別有生活照,自拍照、監控視訊、門禁閘機、西方人及其他人種照片,如圖 10 所示。

圖10:常見人臉識別場景型別
這裡寫圖片描述
網際網路上有海量的人臉照片,通過搜尋引擎優圖也積累了海量帶身份標註的網際網路人臉資料。這部分資料無論從人數,影象數、資料多樣性上都是最好的,為優圖人臉識別技術的研發提供了基礎條件。隨著人臉識別技術的日漸成熟,實際業務中湧現出大量新場景下的應用需求,例如微眾銀行的核身業務,會議簽到業務都涉及證件照和手機自拍照的比對,公安的監控需要視訊監控資料與證件照的比對。不同場景下獲取的人臉影象存在巨大差異,如何對人臉識別模型進行快速調整,在各個不同場景下快速落地就成為一個非常具有挑戰性的問題。

為了在日趨白熱化的市場競爭中佔得先機,優圖在三年深耕人臉識別和深度學習的基礎上建立了自己在場景遷移與適應上的一整套方法論。這個方法論可以用一句話來概括:祖母模型的「進化」。這句話有兩個關鍵點。首先我們需要建立適用於一般場景的、功能強大的人臉識別模型,也就是祖母模型。其次祖母模型通過「進化」來適應新場景下的人臉識別。

建立祖母模型家族

祖母模型並不特指一個深度神經網路模型,而是具有某種結構特點的一類神經網路模型,因此更為合適的叫法應該是祖母模型族。不同業務場景下的應用,使用者對人臉識別的速度和精度可能有不一樣的需求。祖母模型族必須像一個兵器庫,既包含能夠快速發射的機關槍也需要殺傷力強大冷卻時間長的原子彈。

圖11:深度神經網路區域性結構分類
這裡寫圖片描述
目前最為流行的深度神經網路結構大致可以歸為三類:1.直線型(如AlexNet,VGGNet);2.區域性雙分支型(ResNet);3.區域性多分支型(GoogleNet)。其中直線型網路結構設計最為簡單,但是當網路深度超過 20 後這種結構的網路將變的難以優化。區域性多分支型網路模型能力強,計算效率更高,但是設計也最為複雜。在建立祖母模型家族的初期,我們選擇了模型能力相對較強設計又相對簡單的區域性雙分支型網路 ResNet 來構建優圖人臉識別的祖母模型族。一方面 ResNet 本身具有強大的學習能力,是去年深度學習領域最新的研究進展。MSRA 憑藉一個 152 層的 ResNet 深度網路摘取了影象識別領域最具影響力的 ImageNet2015 競賽多個單項的第一名。另一方面 ResNet 設計相對簡單,一個最大的特點就是識別能力基本與神經網路深度成正比。神經網路的深度又與計算複雜度直接相關,這就為訓練不同識別精度與執行速度的多個模型從而建立祖母模型族提供了極大的方便。當選定了祖母模型的網路結構後,我們將其在資料量最大的網際網路生活照資料集上訓練,以保證祖母模型的通用人臉識別能力,圖12所示。

圖12:優圖人臉識別祖母模型
這裡寫圖片描述
在基於區域性雙分支模型族建立完成後,我們也開始嘗試使用更復雜的區域性多分支元件來進一步提高模型效率,豐富我們的祖母模型族。

祖母模型的「進化」

遷移學習是近些年來在人工智慧領域提出的處理不同場景下識別問題的主流方法。相比於淺時代的簡單方法,深度神經網路模型具備更加優秀的遷移學習能力。並有一套簡單有效的遷移方法,概括來說就是在複雜任務上進行基礎模型的預訓練(pre-train),在特定任務上對模型進行精細化調整(fine-tune)。套用在人臉識別問題上,只需要將訓練好的優圖祖母模型在新場景的新資料上進行精細化調整。

圖13:優圖祖母模型的進化
這裡寫圖片描述
這種傳統的遷移學習方法確實能幫助祖母模型更好的完成新場景下的人臉識別任務。但這隻能算特異化,無法將遷移學習中學到的新資訊反饋給祖母模型。遷移之後的特異化模型只能應用在特定場景,在原集合上的效能甚至可能會大幅下降。在沒有深度學習的「淺」時代,模型沒有同時處理多個場景的能力,這可能是最好的適應新場景的方法。然而在實踐中我們發現,由於深度神經網路的強大表達能力,完全可以在遷移學習過程中保持祖母模型的通用效能。採用增量學習的方式進行新場景的適應,在完成新場景下識別的同時也能保持其他場景下的能力,從而得到通用性更好的優圖祖母模型,即優圖祖母模型的「進化」。

14
隨著各個場景下的資料不斷積累,優圖祖母模型將不斷進化,變的更加強大。
這裡寫圖片描述

後續我們將根據業務需求,繼續積累在新場景下的人臉識別能力。並嘗試將這種深度神經網路的神奇「進化」能力推廣到更多的問題上。通過不斷進化,祖母模型變的越來越聰明,也許有一天我們真的能創造出全知全能的「優圖大腦」!

轉載於:http://imgtec.eetrend.com/blog/8558