唐晗,羅大暉
(常州信息職業(yè)技術學院,江蘇常州,213164)
近年來,隨著國民經濟水平的提高和人們生活水平的改善,人們對于親近自然、健身娛樂提出了更多和更高的要求。健身步道作為連接自然游憩地和生態(tài)資源的線性開放空間,在各城市廣泛存在。物聯(lián)網、人工智能、大數(shù)據(jù)、云計算等數(shù)字基建助力產業(yè)升級,智慧步道應運而生,開啟了全民健身新模式。智慧步道借助人臉識別技術,沿途設置多個人臉識別設備,用戶在步道上運動時,設備自動識別人臉,實現(xiàn)無感、安全、有效的運動信息數(shù)據(jù)收集;系統(tǒng)自動為其記錄運動數(shù)據(jù),同時將傳統(tǒng)的步道里程、用時及卡路里消耗等運動數(shù)據(jù)通過智能算法為跑步者的運動信息進行建模分析。這套解決方案的優(yōu)點是:用戶無需攜帶任何硬件設備,使用人臉即可獲得完整體驗。
多目標人臉檢測與識別是智慧步道中的關鍵技術之一。人臉檢測的目標是找出圖像中所有的人臉對應的位置,算法的輸出是人臉外接矩形在圖像中的坐標,也可能還包括姿態(tài)信息。人臉識別則需要從圖片中提取出有代表性特征,據(jù)此有效地區(qū)分不同個體。
人臉識別的整個過程大致分為2個步驟:人臉檢測和人臉匹配。
人臉檢測是人機交互的第一步,它基于面部圖像進行分析和研究。雖然人臉的結構是確定的,由眼睛、眉毛、鼻子、嘴巴、輪廓等部分組成,但由于多種因素的影響,如姿態(tài)和表情的變化,裝扮差異,光照強度,遮擋等,要魯棒地準確的檢測出人臉是其實是一件相當困難的工作。人臉檢測算法在面對一張圖像時,由于人臉可能出現(xiàn)在圖像的任何位置,所以通常會采用一種窗體滑動算法,即在檢測時用固定大小的窗體對圖像從上到下、從左到右掃描,判斷子窗體里的子圖像是否為人臉。此外,人臉有大有小,所以還需要對圖像進行放大或者縮小,對每張縮放后的圖像重復上面的掃描算法,整個檢測過程非常耗時??偟恼f來,人臉檢測負責檢測圖像中是否存在人臉,如果存在則記錄包裹人臉的矩形的坐標和大小,如果圖片中存在多個人臉則會記錄多個結構相同的矩陣數(shù)據(jù)。
人臉匹配首先進行特征提取,自動定位眉毛、眼睛、嘴巴、輪廓等面部關鍵特征點;然后將關鍵特征點抽取、轉換成特征向量;接著將提取出的人臉特征向量與數(shù)據(jù)庫中的人臉進行比較,如果特征向量的距離較近或者相似度較高,則說明人臉識別成功;如果數(shù)據(jù)庫中的所有人臉都不匹配,則輸出無法識別。人臉匹配僅僅是進行比對分類,一些常見的機器學習方法如KNN等就能滿足其需求。
特征提取是人臉識別的關鍵,為了更好地提取人臉關鍵特征,許多特征提取算法被發(fā)展出來,例如尺度不變特征變換(Scale Invariant Feature Transform,SIFT)、直方圖定向梯度(Histogram of oriented Gradient,HoG)、局部二值模式(Local Binary Pattern,LBP)及其變種等。近年,深度學習和卷積神經網絡(Convolutional Neural Network,CNN)在圖像分類和人臉識別領域大獲成功,成為計算機視覺領域的研究熱點之一,其基本思想是利用大量數(shù)據(jù)作為訓練數(shù)據(jù),通過訓練模型來學習參數(shù),最后利用模型來識別人臉。深度學習技術的發(fā)展,使得基于深度神經網絡的人臉識別算法性能得到了顯著提升,例如ArcFace、MobileFaceNets、SphereFace等,其中最先進的人臉識別算法在開源人臉數(shù)據(jù)集 LFW 上的識別精度甚至可以達到99%。
智慧步道環(huán)境是用戶跑步運動的真實場景,同時出現(xiàn)在攝像頭中的用戶少則1人,多則幾十人。用戶在跑步時大部分面朝同一方向,且常有部分遮擋,前面的用戶頭部會對后面的用戶頭部造成影響。而且這些用戶都在運動中,隨機動作較多,會造成臉部偏移。此外,受拍攝距離、角度、光照等因素的影響,采集到人臉圖像的質量會低于實驗室條件下的人臉質量,其中最常見的問題是由于距離影響使得獲取到的人臉圖像尺寸較小,圖像分辨率較低。
為了實現(xiàn)智慧步道環(huán)境的多人臉檢測,首先需要選擇合適的數(shù)據(jù)集,然后選擇合適的深度神經網絡模型進行訓練,最后使用模型進行真實場景中的人臉檢測與識別。
本文的數(shù)據(jù)集來源于Caltech人臉數(shù)據(jù)庫和LFW人臉數(shù)據(jù)庫,它們都已經進行了標注。從中挑選出背景較為復雜且含有多人臉的圖像作為研究對象,共500張,最后將所有圖像統(tǒng)一縮放成相同大小,方便后面的模型訓練和測試。
人臉檢測傳統(tǒng)上可以使用基于OpenCV的Haar級聯(lián)算法、基于Dlib的人臉檢測算法等,但它們均不適合智慧步道這種有可能擁擠的場景。人臉檢測的最新進展主要得益于強大的深度神經網絡,特別是基于CNN的網絡模型取得了較好的效果,基本策略是級聯(lián)CNN,從粗到精學習人臉檢測。在擁擠人群中進行多人臉檢測主要有兩種實現(xiàn)路徑:
(1)回歸算法:使用回歸算法直接根據(jù)圖像計算出擁擠人群密度熱圖,它的缺點是圖像質量要求較高,不適用于低分辨率圖片,而且它只能得到場景整體的一個擁擠指數(shù),不能獲知人群個體的具體位置。
(2)深度學習目標檢測:類似于Faster RCNN這樣的人臉檢測算法可以直接檢測出擁擠人群中人臉的個數(shù)。其缺點是在人物相互遮擋的情況下往往性能較差,而人群越擁擠相互遮擋的可能性越大。
本文所采用的多人臉檢測模型為全卷積頭部檢測器(A Fast and Accurate Head Detector,F(xiàn)CHD)。FCHD 是近年推出的一種深度學習頭部檢測模型,它的特點是即使是在擁擠的場景中依然能夠進行快速和準確的頭部檢測,同時在模型結構上比傳統(tǒng)的目標檢測算法要簡單很多,其主要結構是一個單獨的全卷積網絡。FCHD作為一種基于深度學習的檢測方法,它與傳統(tǒng)的檢測方法有很大的不同,在實驗中首先需要考慮預置的邊界框(錨點),這些邊界框(錨點)是通過設置一組不同比例的候選框生成的。由于面部尺寸、光照對檢測的影響不同,通過對目標區(qū)域進行平均池化操作生成嵌入特征來增強鑒別能力,從而消除面部各部位所帶來的不同影響。針對多人臉數(shù)據(jù)的特殊性,減少錨點數(shù)量,訓練時間可以大幅減少。
實驗的硬件條件包含 Intel(R)Xeon(R) CPU E5-2650v4@2.20GHzx48,內存 32GB,顯卡 Nvidia GeForceGTX 1080 Ti。軟件條件包括操作系統(tǒng)為Ubuntu 16.04 LTS,PyTorch LTS(1.8.2),CUDA 10.2,F(xiàn)CHD開源庫。
實驗前,先將數(shù)據(jù)集分為兩部分,80%用于訓練,20%用于測試。然后采用FCHD模型在訓練集上進行訓練,訓練過程選用了48×48像素大小的錨點,訓練30次。最后在測試集上進行測試。實驗表明,該模型對于多人臉場景具有較好的檢測能力,即使對于角度有偏移、甚至有部分遮擋的人臉也能檢測出來。
在人臉識別之前,先要準備好人臉庫,人臉庫存放的是人臉特征。在人臉錄入的時候對其進行特征提取并將其存儲到人倆庫中,已被查詢和比對。
人臉識別功能在服務端實現(xiàn),使用Spring Boot并基于虹軟ArcFace SDK(ArcFace-V3.0)進行開發(fā),基本過程如下:Spring Boot服務器通過RSTP協(xié)議連接網絡攝像機,從而獲取攝像機的視頻流。服務器每隔0.5秒采集一次圖像,利用上面訓練好的模型進行人臉檢測,然后使用虹軟SDK提取人臉特征數(shù)組,接著將人臉到人臉庫中去比對與識別。虹軟SDK除了可以進行特征提取、人臉識別之外,還可以進行性別檢測、年齡檢測、活體檢測等。
考慮到人臉庫隨著系統(tǒng)使用過程中的規(guī)模膨脹,為提高人臉識別的效率,人臉特征與人臉庫的匹配過程采用多線程設計,基本思想如下:把人臉庫按照參數(shù)compare Partition Size的大小分成多組,對每一組人臉都構建一個Completion Service子任務,在每個子任務中去實際完成人臉識別,從而提高整體效率,最后將每個子任務的識別結果按照相似度從大到小排序。
多線程主要靠CompletionService來完成,Completion Service是Java8的接口,它使用submit()方法執(zhí)行任務,使用take取得已完成的任務,并按照完成這些任務的時間順序處理它們的結果。也就是說,CompletionService的主要功能就是一邊生成任務,一邊獲取任務的返回值。讓這兩件事分開執(zhí)行,任務之間不會互相阻塞。CompletionService在提交任務之后,會根據(jù)任務完成順序來獲取返回值,也就是誰先完成就返回誰的返回值。
核心代碼如下,代碼中的passRate代表人臉匹配的閾值,根據(jù)虹軟SDK的要求,一般取0.8。
本文針對智慧步道中的具體問題開展研究,重點研究區(qū)域內多人臉檢測問題,采用并實驗了基于FCHD的多人臉檢測神經網絡。實驗表明:該網絡對于多人臉場景具有較好的檢測能力,即使角度有偏移、甚至有部分遮擋的人臉也能檢測出來。然后利用虹軟SDK進行人臉的識別,并利用Java的多線程技術提高人臉識別效率。當然,本文所實驗的方案還不足以完美解決智慧步道場景中的多人臉識別問題,例如角度偏移、部分遮擋、光照不足、低分辨率等所導致的檢測與識別問題,研究這些不同因素組合影響下的人臉檢測統(tǒng)一框架,提高系統(tǒng)的魯棒性和實用性,是本領域非常值得關注的挑戰(zhàn)性問題。