深度|人臉圖像的技術原理及在電商業務中的應用

一、概述

時至今日,計算機視覺和深度學習的迅速發展,給不少技術領域帶來了顛覆性的變化。git

人臉圖像處理(Face Image Processing)就是其中的典型例子:在互聯網時代,該技術經過各類各樣的應用方式,爲人們的生活帶來了便利和安全,並增添了樂趣。github

另外一方面,電子商務領域歷經PC互聯網和移動互聯網時代,進入到了智能化時代;它所擁有的海量圖像視頻數據、豐富的應用場景,以及高難度的性能挑戰,爲計算機視覺技術,尤爲是人臉技術,提供了大放異彩的舞臺。算法

圖1.電商業務中人臉技術的應用架構數據庫

如圖1所示,電商工做中須要綜合利用人臉技術。從業務看,涉及到4種類型的場景:安全

  • 後臺圖像數據管理:好比違禁圖片和廣告圖片的管理;服務器

  • 電商的實時應用:例如直播、 短視頻;網絡

  • 電商導購:例如美妝導購和試戴,改善用戶體驗;架構

  • 人臉支付:已經在移動支付和金融應用中普及使用了。框架

從算法技術看,人臉技術包括了3個主要模塊,即:ide

  • 人臉檢測(找到輸入圖像中的人臉位置)。

  • 特徵點定位(將人臉中的關鍵點位置找到,例如:眼睛、鼻子、嘴巴以及輪廓上的關鍵點)。

  • 人臉識別(在預先存儲的人臉圖像數據庫進行查詢,獲取身份識別的結果)。

圖像算法在實際中落地,能夠採用不一樣的運行模型,包括: 雲端部署、移動端部署。

雲端模式中,算法和數據都在服務器上運行,圖片須要集中存儲,適合後臺的批量圖像處理。

移動端部署是爲了達到實時響應,將算法部署在移動端(一般是手機)上,適合單個業務請求的實時響應。

電商業務會根據實際須要,採用相應的方案;在有些狀況下也能夠將雲端和移動端結合起來,造成一種混合部署方式:雲+端。

更進一步,如今有的公司在探索將人臉算法運行在芯片上的技術方案,能夠造成邊緣計算的模式。

本文結合電子商務業務場景,介紹人臉圖像技術的原理,以及如何在業務中使用這些技術構建業務應用。

2.    人臉圖像的技術原理

通過多年的不懈努力,研究者們在人臉圖像技術方面取得了突飛猛進的成就。這些技術通常涉及到兩種類型,即:傳統方法和深度學習爲主的方法。

2.1基於深度學習的人臉檢測(MTCNN)

人臉檢測技術的里程碑是Paul Viola和Michael J.   Jones在2000年左右提出的級聯人臉檢測器,該方法採用了快速計算的Harr特徵,經過Adaboost算法選擇出有效特徵和一系列的弱分類器(weak   learner),最後以線性組合方式獲得強分類器,提升了檢測的速度和精確率,能夠實時運行。

近幾年,深度學習發揮出愈來愈大的威力,將人臉檢測技術推向了新的高度,所以涌現了不少基於Deep   Learning的人臉檢測算法。其中比較有表明性的是MTCNN方法(Joint Face Detection and Alignment   using Multi-task Cascaded Convolutional Neural Networks),它是由中國學者Kaipeng  Zhang、Yu Qiao等提出來的。

該方法被稱爲MTCNN(Multi-task Cascaded Convolutional Neural Networks),借鑑了級聯檢測器的思想,經過不一樣的CNN分類器聯合訓練,將人臉檢測和特徵點定位的任務結合在一塊兒。

圖2.MTCNN方法的系統架構

它的框架如圖2所示,包括3個CNN的網絡結構(P-Net,R-Net,O-Net)。

(1)Proposal Network   (P-Net):這是一個全聯接的CNN網絡,用於獲取人臉區域的候選窗口,以及人臉邊界框(bounding   box)的迴歸向量。基於邊界迴歸信息對候選框進行校準,那些高度重疊的候選框經過非極大值抑制(NMS)操做進行合併。

(2)Refine Network (R-Net):從P-Net階段經過的全部候選窗口,輸入R-Net網絡,該網絡將大部分的False Positive區域做進一步的排除,而後進行邊界框迴歸和NMS操做。

(3)Output Network (O-Net):該結構和R-Net層相似,可是該層對人臉區域進行了更多的監督,同時還會輸出5個特徵點的位置。這一步輸出最終的人臉框和特徵點位置(左眼、右眼、鼻子、左嘴角、右嘴角)。

具體的網絡結構如圖3所示:

圖3.網絡結構(P-Net、R-Net、O-Net)

在訓練過程當中,MTCNN方法從三個任務對CNN檢測器進行聯合訓練:人臉分類、邊界框迴歸、人臉特徵點定位。它綜合考慮每一個任務對應的損失函數,構成了多任務的總的損失函數。

訓練過程當中,採用隨機梯度降低方法(SGD)對這三個CNN進行優化求解。此外,該方法採用了Hard Sample Mining的策略,每次只後向傳播前70%樣本的梯度,這樣可以自動化訓練,且取得更好的訓練效果。

圖4是檢測和特徵點定位的示例圖:

圖4.MTCNN方法結果的實例圖

從實際運用看,MTCNN方法在FDDB和WIDER FACE集合上取得了很不錯的檢測效果,同時還可以實時運行(在GPU環境下)。

該方法在GitHub上開源代碼了(開源地址是:https://github.com/kpzhang93/MTCNN_face_detection_alignment),以Caffe爲基礎框架。不少研究者以它爲基礎,提出不少改進版本,包括Mxnet、Windows等平臺上的人臉檢測運行包,得到了普遍的應用。

2.2特徵點定位

MTCNN方法能夠輸出人臉上5個特徵點的位置,即:左眼、右眼、鼻子、左嘴角、右嘴角。

實際上根據不一樣應用,特徵點的數量定義各不相同,少則幾個,多則上百個,一般分佈的區域包括眼睛、眉毛、鼻子、嘴巴、臉部外輪廓等,如圖5所示。

圖5. 人臉特徵點的定義示意圖

這個技術的核心是如何精確計算出人臉中特徵點的位置,通常涉及到的算法分紅3種,分別是:

  • ASM(Active Shape Model)和AAM (Active Appearnce Model)的方法。

  • 基於級聯形狀迴歸的方法。

  • 基於深度學習的方法。

前兩種方法都屬於傳統方法,定位效果不錯且檢測速度快,實際中都有開源包,例如Stam開源包是ASM的一種實現方式;另外,Ensemble   of Regression Tress(ERT)是級聯方法,開源的dlib 庫中(http://dlib.net/),有該方法的實現代碼。

基於深度學習的特徵點定位算法,在2013年開始取得突破,香港中文大學的Tang Xiaoou教授研究組提出了DCNN的級聯結構(Deep  Convolutional Network Cascade for Facial Point   Detection),在特徵點定位上取得了不錯的效果。

在此基礎上,Zhou Erjin等提出了一個從粗到精的人臉特徵點定位方法(Extensive Facial Landmark Localization

with Coarse-to-fine Convolutional Network Cascade),首次利用卷積神經網絡,實現了68我的臉特徵點的高精度定位。

該算法將人臉特徵點分爲內部特徵點和輪廓特徵點,內部特徵點包含眉毛、眼睛、鼻子、嘴巴共計51個位置,輪廓特徵點包含17個特徵點。具體採用的系統架構和CNN網絡結構,如圖6所示。

圖6.人臉特徵點定位(a)系統架構

圖6.人臉特徵點定位(b)CNN網絡結構

2.3人臉識別

人臉識別的過程是:在預先存儲的人臉圖像數據庫中進行查詢,獲取身份識別的結果。其中最關鍵的步驟是提取人臉表示特徵,最近幾年的突破,都是採用深度學習的方法。

在通過人臉檢測和特徵點定位等模塊以後,輸入人臉區域圖像樣本。人臉識別的大體流程以下:

  1. 樣本預處理:包括裁剪、對齊、類似變換等,而後把人臉樣本圖像按照不一樣尺度、不一樣區域,劃分紅若干子區域(patch)。

  2. 基於CNN的特徵提取:訓練一個CNN,目標函數能夠定義爲人臉分類或其餘目標函數;將訓練好的網絡中最後一層(通常是fc層),提取出來做爲特徵向量。若是有多個子區域patch,就訓練多個CNN網絡,而且把全部CNN獲取的特徵向量串接,得到一個超長的特徵向量(通常幾萬到幾十萬維)。

  3. 特徵比對:對超長特徵向量進行降維操做,壓縮到低維特徵向量(例如160維向量),利用低維向量訓練對比模型,判斷兩個向量是否屬於同一類,即同一我的。

從具體方法上看,2013年提出的DeepFace方法是CNN在人臉識別的開山之做,人們後續又提出了DeepID和FaceNet等方法,並且都能體現DeepFace的身影。

對人臉識別技術發展起到重要促進做用的另外一因素是人臉圖像數據庫的建設,它爲技術的評測提供了舞臺和標準。現在幾個著名的人臉識別的評測數據庫包括:FERET人臉數據庫、LFW數據庫、Mega Face數據庫。

3.    人臉圖像技術基於電商業務的應用實踐

從以前所列的4項業務應用看,美妝導購和人臉支付是平常比較常見的了,本文主要介紹圖像管理和電商直播中如何使用人臉技術。

3.1後臺圖像管理

在電商基礎業務中,須要對肖像權使用狀況進行監測,這個需求一般與兩個場景有關:

第一個是廣告侵權檢測,有的商家邀請了明星代言店鋪的商品,而有些侵權商家會盜用明星代言商品圖;所以須要進行明星臉識別。

第二個是商家實拍認證,判斷拍攝圖片是否爲商家合做模特拍的圖像;有人臉的模特照片可經過人臉識別方式解決。

概括起來就是使用人臉識別技術來判明圖片中的人物身份。本文以廣告侵權處理場景爲例,介紹2種不一樣的解決方案。

被動的廣告侵權檢測

給定商品圖像,如何斷定它是否侵犯明星肖像權?首先構建一個明星庫,包含須要保護人物的肖像圖像。明星數量一般與實際業務相關,通常有數百人,圖像數量有限。特徵比對步驟,能夠採用快速排序的方法。具體的流程如圖7所示。

圖7.廣告侵權檢測的流程圖(被動)

主動的廣告侵權稽查

該任務是:給定明星圖像,對全平臺上的商品進行稽查,將侵權商品查找出來並進行處理。

首先要按照人臉檢測、特徵點定位、特徵向量提取的步驟,將商品圖中的人臉對象進行處理,構建商品圖中的人臉庫。

如圖8所示,查詢對象是海量的商品圖中的人臉庫,一般規模很大,數以百萬計,有的平臺的規模是數十億。

圖8.廣告侵權檢測的流程圖(主動)

所以特徵搜索的步驟,不能採用簡單的排序方式了,而是要構建一個搜索引擎,經過近似最近鄰查找的方法完成搜索任務。

鑑於搜索數據庫的量級很大,所以對每一個查詢都要計算全部的距離是很是困難的,同時存儲海量圖片的特徵向量須要耗費巨大的存儲空間。

爲了解決這些問題,採用了近似最近鄰算法中的局部優化的乘積量化算法(Product Quantization, PQ),訓練獲得粗量化質心和細量化質心,粗量化的結果用來創建倒排索引,細量化的結果用來計算近似距離。

經過這種方法,既能保證商品圖的人臉圖像索引結果的存儲需求合理,也能使檢索質量和速度達到更好的水平。

這兩種方案的對比,能夠總結以下:

3.2直播應用

後臺圖像管理部署在雲端執行,而電商直播中的人臉技術應用,須要在手機上運行。直播中的人臉技術整體架構如圖9所示:

圖9.直播中的人臉技術整體架構

直播中所涉及的底層技術(人臉檢測、特徵點定位和跟蹤)大部分都須要在手機上實時運行,由此須要遵循新要求:速度要足夠快,模型要足夠小,同時保證有足夠高的準確度,這是須要折中的過程。

目前所採用的解決方案大部分是經過算法優化和模型優化的工程手段,將算法移植到手機端。

在實際業務中實現了人臉特徵點跟蹤的SDK,並部署在移動端,應用在電商直播場景中。

基於深度學習的人臉技術雖然取得了顯著的成果,可是深度學習對大量計算資源的需求,以及複雜的模型(幾十MB到幾百MB),難以應用在移動端。

傳統算法雖然效果沒有超過深度學習,可是資源消耗很小,模型也簡單,在應用過程當中更加適合於用到目前的移動設備上來。

隨着處理器技術發展和深度學習優化技術的逐漸成熟,基於深度學習的人臉技術會更加普及。

人臉檢測算法

在調研了衆多的人臉檢測算法後,最終選用了基於Pixel Difference(PD)特徵的PICO算法(Object detection  with pixel intensity comparisons organized in decision   trees)。該方法採用像素間的灰度差值做爲特徵,能夠提升檢測速度;更進一步,將PD特徵進行歸一化,提出了Normalize Pixel   Difference(NPD)特徵,提升了對光照的魯棒性。這些方法計算資源消耗少、模型簡單,適合應用於移動設備。

獲得了分類器以後,還須要作代碼優化的工做。針對移動端CPU的特色,進行了定點化。採用了查表(Look Up   Tabel)的方法,將NPD特徵預先計算的結果存儲在一個二維表中;在實時計算特徵的時候,直接從內存中讀取,從而提升檢測速度。最終獲得的人臉檢測SDK具有如下特性:

人臉特徵點跟蹤算法

採用基於Ensemble of Regression Tress(ERT)算法的人臉特徵點檢測方法,利用PD特徵,學習每一個特徵點的局部特徵,而後將特徵組合起來,使用線性迴歸檢測關鍵點;檢測速度快,定位效果也不錯。

同時須要作一系列優化,包括以下幾個方面:

  • 使用OpenMP並行技術對訓練階段進行優化:將訓練速度提升7~8倍。

  • 將PD特徵替換爲NPD特徵,提升了算法對光照的魯棒性。

  • 針對實時直播,利用視頻中先後兩幀關係修正特徵點預測結果。

  • 經過參數定點化、huffman編碼等方法對模型進行壓縮,壓縮後的模型容量約爲原始模型的35%。

最終獲得人臉特徵點定位SDK,具有如下特性:

圖10(a)是人臉檢測和特徵點定位的示例圖。從中看到算法具備較好的魯棒性,對於不一樣的姿態、不一樣的光照下的人臉圖像,可以準確的定位出來,爲後續的直播打下基礎。

直播中能夠利用這些算法來作互動效果,包括人臉的美膚/美白,以及特效,如圖10(b)所示。

圖10. (a)人臉檢測和特徵點定位的示例圖

圖10.(b)美顏圖像實例

總結

綜合本文中的應用實例能夠看出,人臉技術和電商業務場景的結合,爲保障平臺運營和用戶體驗,帶來了新的價值。一方面,經過人臉識別方法自動識別商品圖像中的人物,提高了後臺圖像管理的效率;另外一方面,電商直播中應用人臉技術,實現了美膚和特效等功能,改善了用戶體驗。

深度學習方法爲人臉識別技術領域帶來了巨大的飛躍,而傳統方法可以保證足夠的性能和足夠的準確度,達到實時運行的目標。所以,在開發過程當中,須要根據具體需求來進行方案的權衡和選擇。

圖像算法技術的開發,須要在平常工做過程當中積累基礎模塊,逐步拓展其運用場景,而且根據業務場景變化,進行不斷的迭代,爲業務需求提供保障。


有獎調研:


現現在,人臉識別技術發展已經相對成熟,在安全驗證、人機交流、公安系統等方面普遍使用的同時,也在視頻會議、檔案管理、醫學醫療等方面發揮着很大的做用。 將來,人臉識別技術是全新人機交互的開端,同時也是隱私道德矛盾的碰撞。

 

本調研是由51CTO發起,旨在瞭解互聯網從業人員對人臉識別技術的認知度,進而分析人羣比、城市分佈、使用場景等規律,爲從此人臉識別功能的用戶體驗設計優化作基石。


:這次問卷爲非記名調查問卷,共10個問題,填寫時間約3分鐘。填寫問卷者(抽取100位)將有機會獲取《刷臉背後》、《虹膜識別 》、《基於稀疏算法的人臉識別》等暢銷書籍。


調研連接: https://jinshuju.net/f/aGc5n7


做者:蘑菇街張洪明(民達)

相關文章
相關標籤/搜索