張昭輝 張吉光 徐士彪 孟維亮 程章林 張曉鵬
1(中國科學院自動化研究所 北京 100190)
2(中國科學院大學 北京 100049)
3(北京郵電大學 北京 100876)
4(中國科學院深圳先進技術(shù)研究院 深圳 518055)
在大數(shù)據(jù)環(huán)境下,信息技術(shù)得到了快速發(fā)展。目前,人們正處在一個信息過載的時代,如何在海量數(shù)據(jù)中獲取所需內(nèi)容,已成為迫在眉睫的問題。在此背景下,基于關(guān)鍵字檢索技術(shù)的搜索引擎應(yīng)運而生。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)傳輸帶寬變得越來越大,可傳輸媒體種類隨之增加。搜索引擎不僅可以搜索文本,還可以搜索圖片等媒體,但由于部分圖像比較難以使用自然語言去量化的描述[1],基于內(nèi)容的圖片搜索技術(shù)(Content-Based Image Retrieval,CBIR)自此走上了歷史舞臺。而人臉圖像搜索技術(shù)作為圖片搜索的一個分支,因其需求廣泛,開啟了飛速發(fā)展的時代。目前,視頻、直播等媒體形式已經(jīng)成為了生活中的主流,然而,對于視頻、直播中人或物的搜索,仍停留在截取圖像后需自行搜索的階段,而主流搜索引擎的圖片搜索功能,使用起來又非常繁瑣。同時,視頻實時搜索技術(shù)正處于發(fā)展階段,現(xiàn)有技術(shù)面臨諸多問題,如程序魯棒性普遍較低,難以同時保證準確性與實時性都達到高度可用。為了解決這些問題,本文從實際應(yīng)用角度出發(fā),提出了一種基于特征混合聚類和關(guān)鍵點檢測的智能人臉搜索框架:將實時人臉檢測與人臉識別搜索分割開來,先將人臉粗過濾后再進行人臉精細搜索。此方案同時保證了人臉檢測的實時性與人臉搜索的準確性,此外,由系統(tǒng)能效實驗可知,本框架在多種狀況下都高度可用。
本文的具體貢獻如下:
第一,提出了一種新的“由粗到細”的基于特征混合聚類和關(guān)鍵點檢測的智能人臉搜索框架,該框架采用了逐級篩選的策略。在人臉實時檢測端,使用了基于多尺度深度特征混合聚類的人臉檢測算法,將人臉圖像進行快速劃分。而在人臉數(shù)據(jù)搜索端,基于人臉檢測端的篩選結(jié)果,使用基于臉部關(guān)鍵點檢測算法[2]提取人臉特征,由于人臉關(guān)鍵點檢測的方法具有高精度的特性,所以人臉識別的準確率達到了 99.8%,實現(xiàn)了對互聯(lián)網(wǎng)視頻數(shù)據(jù)的實時檢測與高魯棒的視頻人臉數(shù)據(jù)智能搜索。
第二,提出了一種基于多尺度深度特征混合聚類的人臉檢測算法,通過Softmax[3]與center loss[4]兩種聚類算法進行聯(lián)合訓練,其中,Softmax函數(shù)進行數(shù)據(jù)分類,center loss函數(shù)生成聚類中心。同時,又加入了中心損失函數(shù)的校正回歸,提升了網(wǎng)絡(luò)對人臉的泛化能力,增加了算法效率。
第三,構(gòu)造了兩個公開的影視類人臉數(shù)據(jù)集,一個是影視劇劇集截圖所構(gòu)造的人臉數(shù)據(jù)集,適用于各種深度人臉特征網(wǎng)絡(luò)模型的訓練;另一個是高清明星人臉數(shù)據(jù)集(含合照),適用于人臉面部特征精確劃分算法的訓練。
隨著人工智能技術(shù)的發(fā)展,人臉識別技術(shù)取得了巨大突破,其憑借著非接觸和幾乎無感的優(yōu)良特性,在人類社會中發(fā)揮了重要的作用,全方位地滲透到了生活中。人臉識別技術(shù)經(jīng)過幾十年研究與發(fā)展,形成了多種人臉識別的解決方案,用來滿足不同場景的應(yīng)用需求。面對更加復(fù)雜的應(yīng)用要求,人臉識別的研究也從最單一簡單的背景轉(zhuǎn)變到各種復(fù)雜場景之下,對于姿態(tài)、光照、表情、年齡、妝容、遮擋、噪聲、種族、性別差異等影響因素都需要有良好的解決辦法[5]。
目前,大部分人臉數(shù)據(jù)集都是在較為理想的環(huán)境下采集的,由于幾乎沒有其他因素的干擾,大多數(shù)的人臉識別算法對處于該環(huán)境下的人臉具有良好的識別率。但是,在現(xiàn)實生活中,除了在較為理想環(huán)境下的人臉識別外,還有對于實時記錄的公共或私人監(jiān)控系統(tǒng)進行人臉識別的需要。然而,由于拍攝條件參差不齊,如有些監(jiān)控本身分辨率就較低,再加上環(huán)境復(fù)雜、距離較遠、角度較偏等因素,就會導致圖像的分辨率極低,普通的人臉識別技術(shù)難以對其進行有效的識別。所以,對于復(fù)雜場景下的低分辨率人臉圖像的識別研究具有很大的潛在價值與行業(yè)需求,此時,低分辨率人臉識別應(yīng)運而生[6]。
隨著人臉識別技術(shù)作為公安、刑偵等領(lǐng)域的技術(shù)手段,被大量運用在保衛(wèi)國家安全,保護人民群眾及其財產(chǎn)安全,其相關(guān)領(lǐng)域的研究、專利數(shù)量開始井噴式增長。2014 年前后,人們開始將深度學習與人臉識別相結(jié)合,deep face[7]橫空出世,此后,類似于 deep face、DeepIDs[8]等基于深度學習的人臉識別技術(shù)如雨后春筍般涌出。2015 年起,我國提出了一系列政策與發(fā)展目標,其中,《中華人民共和國國民經(jīng)濟和社會發(fā)展第十三個五年規(guī)劃綱要》中的第六篇“強化信息安全保障”,極大地促進了我國人臉識別領(lǐng)域的發(fā)展,到“十三五”規(guī)劃結(jié)束之時,我國眾多知名企業(yè),都擁有了自己的一套人臉識別體系,其算法的完成程度,幾乎都處于國際領(lǐng)先地位[9]。但是,美國、日本等國家由于人工智能行業(yè)起步較早,仍有大量技術(shù)領(lǐng)先。人臉識別技術(shù)在發(fā)展的同時,其應(yīng)用領(lǐng)域也得到了拓寬,對此,研究人員提出了根據(jù)任務(wù)而定的高效的網(wǎng)絡(luò)集成方法[10]。而在一些場景下,人們除了需要人臉識別技術(shù)準確地識別人臉外,對其識別速度也有了嚴格要求,為了解決這個問題,DFSD[11]、S3FD[12]、MTCNN[13]、CenterFace[14]等優(yōu)秀算法相繼被提出[15]。本文提出的基于特征混合聚類和關(guān)鍵點檢測的智能人臉搜索框架,就參考了CenterFace 中關(guān)于中心損失函數(shù)的相關(guān)思想。
以往的人臉檢測方法繼承了基于錨點的通用目標檢測框架,可以細分為兩類:兩步法(Faster R-CNN[16])和一步法(SSD[17])。與兩步法相比,一步法的效率較高,召回率也較高,但是會導致很高的假陽性率,且降低了人臉的定位精度。之后,區(qū)域生成網(wǎng)絡(luò)(Region Proposal Network,RPN[18])的兩段法直接開始應(yīng)用于人臉檢測,SSH[19]與 S3FD 在一個單一網(wǎng)絡(luò)中開發(fā)了一個不變尺度的網(wǎng)絡(luò),用來檢測來自不同層的多尺度人臉。但是,基于錨點的方法不能很好地兼顧召回率與魯棒性。
目前,較先進的人臉檢測網(wǎng)絡(luò)通過使用網(wǎng)絡(luò)預(yù)訓練模型 VGGNet[20]和 ResNet[21],在 WIDER FACE[22]上取得了較高的準確率。但是,這些人臉檢測技術(shù)因為其龐大而復(fù)雜的神經(jīng)網(wǎng)絡(luò)耗時較長,且模型的規(guī)模也非常大,很難應(yīng)用于實際。其次,基于卷積神經(jīng)網(wǎng)絡(luò)的 VGGNet 等網(wǎng)絡(luò)預(yù)訓練模型,沒有對人臉特征進行標記,不利于人臉特征對齊匹配的應(yīng)用。因此,將人臉的檢測與對齊算法進行一體化設(shè)計,并達到較好的實時性與準確率,成為了實際應(yīng)用中至關(guān)重要的環(huán)節(jié)。
受到無錨點通用目標檢測框架的啟發(fā),Xu等[14]提出了一種輕量化、高效率的人臉檢測和對齊方法 CenterFace,其網(wǎng)絡(luò)可以進行端到端訓練。該算法使用臉邊界框的中心點來表示臉部位置,面部框的大小和坐標直接被回歸到中心位置的圖像特征,從而使人臉檢測和對齊問題轉(zhuǎn)化為人臉的關(guān)鍵點估計問題。熱圖中的峰值對應(yīng)面部的中心,每個峰值的圖像特征可以預(yù)測臉的大小和人臉關(guān)鍵點的大小。經(jīng)相關(guān)數(shù)據(jù)集評估,結(jié)果表明,該網(wǎng)絡(luò)對于人臉圖像實現(xiàn)了較好的分辨。
但Softmax損失函數(shù)只保證了特征的可分性,并不要求類內(nèi)緊湊和類間分離,因此并不適用于人臉識別。CenterFace 盡管基于中心損失函數(shù),使人臉特征辨識度顯著增高,但是在WIDER FACE 高難測試場景下僅達到 78.2% 的精度,在 Wildest Faces[23]數(shù)據(jù)集中的測試結(jié)果也并不理想,模型的訓練方法還有待改進。
實時應(yīng)用場景下的人臉識別算法要求輕量化、高效率。而在應(yīng)用更加廣泛的人物身份識別場景中,人臉識別算法則需要更高的準確性,各大互聯(lián)網(wǎng)公司在此方面幾乎做到了極致。2021年,美國國家標準技術(shù)研究所發(fā)布的人臉識別供應(yīng)商測試結(jié)果中,商湯科技與依圖、百度等公司均在前列,對于人臉圖像的查準率均已超過 99.99%(數(shù)據(jù)來自 Face Recognition Vendor Test(FRVT) | NIST)。但由于這些公司的網(wǎng)絡(luò)模型都過于龐大,而且大多并未公開,所以進行實驗時一般選擇開源、輕量化的人臉識別模塊。
Face_recognition 是一個極為簡潔的人臉特征識別庫,可以使用 Python 和命令行工具進行提取、識別、操作人臉。該項目基于行業(yè)內(nèi)領(lǐng)先的C++開源庫 Dlib 中的深度學習模型,并在由美國麻省大學阿莫斯特分校提供的 Labeled Faces in the Wild[24]人臉數(shù)據(jù)集上進行測試,測試結(jié)果準確率高達 99.38%,已經(jīng)超過了人類肉眼識別的平均水平。Dlib 提供了兩個人臉檢測方法,使用方向梯度直方圖(Histogram of Oriented Gradient,HOG)特征[25]進行回歸或者基于卷積神經(jīng)網(wǎng)絡(luò)進行識別,其中,卷積神經(jīng)網(wǎng)絡(luò)方法需要使用 GPU加速。
與其他人臉識別算法的步驟一致,F(xiàn)ace_recognition 首先進行人臉檢測:輸入圖像經(jīng)過降維處理后,生成方向梯度直方圖,系統(tǒng)通過匹配,找到 HOG 圖案中最像人臉梯度特征的那一部分,從而完成人臉分離。得到人臉圖像,然后進行人臉對齊,使用面部特征點估計算法找到圖像中對應(yīng)的特征點,Dlib 中的模型擁有 68 個人臉特征定位點。人臉特征經(jīng)仿射變換后映射到標準人臉模型上,最終經(jīng)過具有 29 個轉(zhuǎn)換層的深度殘差網(wǎng)絡(luò) ResNet[21]生成 128 位特征碼,隨后只需進行簡單的向量間距計算(主要采用歐氏距離),就可以得到輸入人臉圖像與其余人臉圖像的人臉間距絕對值,值越小越可能是同一張人臉。這種特性使得 Dlib 在人臉編碼搜索方面有著得天獨厚的優(yōu)勢,兼顧了人臉識別的準確性與人臉編碼搜索的實時性。
首先,算法實時截取視頻、直播等流媒體圖像。然后,將圖像通過輕量化、高效率的人臉檢測算法(基于多尺度深度特征混合聚類的人臉檢測算法)進行人臉圖像的初步篩選,過濾掉背景干擾。最后,經(jīng)過粗篩選后的人臉圖像再經(jīng)使用者挑選,進入基于臉部關(guān)鍵點檢測算法(Dlib 人臉識別),由于面部特征規(guī)范化的特性,使得識別準確率得到極大提升。通過以上粗篩選、細搜索的應(yīng)用策略,前者為后者搜索掃除障礙,爭取時間,后者將前者的成果進行更加精細的呈現(xiàn),這種逐級篩選所帶來的合力,使得該框架的實時性與精準度都能得到極大的保障。
算法按照處理階段可分為預(yù)處理與在線處理兩部分,框架如圖 1 所示。其中,在線處理部分又被細分為實時人臉檢測部分(粗篩選)與人臉在線搜索部分(細搜索)。
圖1 實時人臉數(shù)據(jù)搜索算法框架Fig. 1 Real time face data search algorithm framework
3.1.1 預(yù)處理部分
預(yù)處理部分分為兩個步驟。首先,通過網(wǎng)絡(luò)爬蟲爬取海量目標數(shù)據(jù)圖像,此步驟為預(yù)處理階段,故無需對效率作太多要求,此時可以引入針對性的基于深度學習的人臉特征識別算法,將人們更有可能搜索的結(jié)果圖片提取到數(shù)據(jù)庫中(如:明星、公眾人物等),達到計算機系統(tǒng)快表(Cache)的效果,大幅度提升系統(tǒng)的搜索效率。也可制定人臉圖像排序的規(guī)則,將所需要的人臉圖像入庫,提升庫中圖像被檢索的概率。此時,入庫的不僅有圖片,還包括相應(yīng)頁面的統(tǒng)一資源定位符等信息。
在獲取完海量目標圖片后,將目標圖片導入庫處理程序,再通過基于臉部關(guān)鍵點檢測算法,對目標圖片進行人臉存在性判斷,若存在人臉圖像,則建立人臉空間,并遍歷圖片找到全部人臉,存入對應(yīng)圖像的空間。之后,通過臉部關(guān)鍵點檢測算法中深度殘差神經(jīng)網(wǎng)絡(luò)提取人臉特征并完成編碼,當全部圖像中的所有人臉進行編碼后,將人臉特征碼與對應(yīng)圖片的統(tǒng)一資源定位符一同存入數(shù)據(jù)庫中,等待搜索。
3.1.2 實時在線處理與搜索部分
在進行視頻實時人臉數(shù)據(jù)搜索時,首先需要導入當前播放的視頻流,若無接口,可直接使用系統(tǒng)屏幕錄制功能,程序通過一定算法截取視頻幀;若存在可導入視頻源,系統(tǒng)就對視頻進行提前處理,加入關(guān)鍵幀算法,提升系統(tǒng)的可用性,減少用于處理無效幀所消耗的計算資源。在獲取到視頻幀后,為了減少人臉提取所消耗的計算資源,提升系統(tǒng)實時性,此時應(yīng)采用輕量化、高效率的基于多尺度深度特征混合聚類的人臉識別算法,算法在輕量化結(jié)構(gòu)的輔助下,能夠迅速將視頻幀中人臉全部找出。該步驟只進行人臉檢測而不進入搜索,所以系統(tǒng)能輕松處理每秒幾十幀的數(shù)據(jù),這樣做極大程度地節(jié)省了計算資源,提升了系統(tǒng)的可用性。
在實時人臉檢測部分結(jié)束后,經(jīng)過粗篩選的去除背景干擾的人臉圖像出現(xiàn)在使用者眼前,再進行人臉在線搜索,系統(tǒng)將通過基于臉部關(guān)鍵點檢測算法對人臉特征進行提取,生成特征碼。由于人臉關(guān)鍵點特征具有自身高命中率的特性,可將人臉搜索精度提升至 99.8%,同時,基于臉部關(guān)鍵點檢測算法采用規(guī)范的特征編碼,所以系統(tǒng)能在可接受時間內(nèi)找到若干匹配的人臉,并基于人臉特征間距進行排序。然后生成人臉所在圖片的統(tǒng)一資源定位符序列進行網(wǎng)絡(luò)爬蟲,此時,采用的爬蟲算法應(yīng)是簡單高效的深度網(wǎng)絡(luò)爬蟲,從而保證使用者所需數(shù)據(jù)能夠即時地下載返回并呈現(xiàn)在使用者眼前。該系統(tǒng)框架借助準確且高效的基于臉部關(guān)鍵點檢測算法,能夠做到輕松處理數(shù)萬級的數(shù)據(jù)。
在線處理部分,粗篩選階段為細搜索階段掃除障礙、排除背景等因素干擾的同時,也因其算法輕量化的特點,能夠?qū)崿F(xiàn)高幀率人臉圖像的實時處理;細搜索部分在繼承粗篩選階段的結(jié)果后,以極高的命中率,出色地解決了粗篩選階段所做不到的高準確率問題。兩個階段相輔相成,共同行使職能,最終使該系統(tǒng)框架既兼顧了實時性,也達到了高魯棒性。
3.1.3 系統(tǒng)目標
為了進一步提升系統(tǒng)魯棒性,使框架高度可用,本文提出并解決了以下幾個問題。
第一,在許多視頻或直播的場景中,人物并不是正襟危坐在鏡頭前,尤其是在電視劇與電影中。影視作品為了體現(xiàn)鏡頭感,往往會出現(xiàn)人臉只有側(cè)面或存在遮擋的情況,在某些大場面中,單個人臉會變得很小,且演員本身又帶妝,在多種因素的影響下,人臉識別的錯誤率會極大增加,特別是圖像中有多張人臉時更加容易發(fā)生錯誤。此外,直播時的突發(fā)場景,尤其是在戶外直播時,過高或過低的場景亮度以及手持攝影設(shè)備直播時的抖動,都極大程度地增加了圖像的噪聲。因此需要構(gòu)建一個能在復(fù)雜場景下識別人臉的算法——不僅要滿足框架中提到的輕量化、高效率等優(yōu)點,還需要對低分辨率下的人臉具有足夠的識別率。
第二,人臉圖像的在線搜索模塊,與實時人臉檢測模塊不同,該模塊對于人臉處理與搜索的時間需求相對來說比較寬松,但對人臉識別精度有較高的要求。因此,需要一個以提高人臉識別準確性為主,同時又具有一定即時性的算法,并且為了之后搜索時方便編碼,該算法提取出來的特征,需要有極高的規(guī)范性。
第三,由于項目基于單個系統(tǒng)架構(gòu),并非分布式架構(gòu),因此,在海量數(shù)據(jù)中及時地搜索和返回目標,成為了搜索模塊的首要任務(wù)。而通過分析傳統(tǒng)的圖像搜索引擎結(jié)構(gòu)可知,建立搜索的第一步是完成所搜圖片的編碼,在這里需要非常規(guī)范化的人臉編碼,其既能最大限度地保留人臉信息,又能盡可能地保持相同的碼位以便搜索,在編碼完成后,建立高效的索引進一步提升搜索速度。
第四,對于返回的搜索結(jié)果,應(yīng)當是最符合搜索者期待的結(jié)果,但是,在海量圖片下人臉識別的結(jié)果有可能非常多,本文借助人臉識別等技術(shù),將人們最可能期望得到的搜索結(jié)果篩選出來,優(yōu)化了搜索者的搜索體驗。同時,減輕了系統(tǒng)下行的壓力。
對于人臉識別的實際應(yīng)用來說,通過深度神經(jīng)網(wǎng)絡(luò)所獲得的特征,除了需要實現(xiàn)人臉可分,還需要有良好的辨別率。Softmax損失函數(shù)確保了提取的特征可分,但過于模糊的分類方法,會使其人臉識別的能力減弱,在加入center loss中心損失函數(shù)后,人臉識別的準確性得到提高,每個類別的中心和特征向量都擁有相同的維度。通過訓練的不斷深入,分類中心不斷迭代,最小化人臉特征與中心距離,深度特征高度分離。通過Softmax和center loss的聯(lián)合訓練,最終使類間間距增大,類內(nèi)間距減小。達到了較高的識別率,同時因為聚類的原因,使得原本存在的圖像噪點被舍去,降低了系統(tǒng)資源占用,提升了系統(tǒng)性能。
3.2.1 訓練數(shù)據(jù)集
為了使模型有效且具有一定健壯性,本文選擇自制數(shù)據(jù)集,數(shù)據(jù)來自視頻、直播中各種場景下的人臉畫面,數(shù)據(jù)集采用程序?qū)﹄娪?、電視劇、直播等視頻數(shù)據(jù)隨機截取,篩選掉無人臉的圖像,確保數(shù)據(jù)集中的圖像接近真實使用場景。具體圖像示例如圖 2 所示。
圖2 影視人臉數(shù)據(jù)庫例圖Fig. 2 Example of video face database
本數(shù)據(jù)集中包含 218 位人物以不同姿勢、表情、妝容呈現(xiàn)的 15 844 張人臉圖像,并且含有不同的銳度、亮度等背景信息。另外,由于視頻中鏡頭的移動,會出現(xiàn)運動模糊等復(fù)雜情況,同時還伴有著其他的干擾因素。其中,人臉圖像多于 1 張的人物有 157 位(占比 72.02%)。選用數(shù)據(jù)集中 11 091 張(占比 70%)圖像用作訓練數(shù)據(jù),其余圖像用作測試數(shù)據(jù)(測試數(shù)據(jù)只包含擁有兩張圖片以上的人物),具體劃分如表 1 所示。
表1 數(shù)據(jù)集劃分Table 1 Data set partition
3.2.2 基于多尺度深度特征的混合聚類
本文采用的 CenterFace 神經(jīng)網(wǎng)絡(luò)框架的工作原理如圖 3 所示,中心臉的框架與常用的圖像識別神經(jīng)網(wǎng)絡(luò)近似,主要區(qū)分點為損失函數(shù)的差異。
圖3 CenterFace 工作原理Fig. 3 How CenterFace works
對于低分辨率人臉的識別,CenterFace 還存在缺陷,當使用Softmax與中心損失函數(shù)聯(lián)合進行特征訓練時,雖然達到了類內(nèi)間距不斷減小的目的,但類中心與原點之間的距離也變小了,這不僅縮小了類內(nèi)間距,還縮小了類間間距,始終無法達到良好的分類效果。為了解決此問題,本文提出了一種新的解決方案,基于向量間歐氏距離,將中心損失函數(shù)聚類所導致的類間間距縮小的問題作修正回補,基于模損失函數(shù),得到回歸函數(shù):
其中,LR為回歸函數(shù);N為每個分批的大?。槐硎镜趎個特征向量;yn為 的標簽;M為訓練集的分類數(shù);Wm為 CenterFace 網(wǎng)絡(luò)全連接層中權(quán)重第m列;為 CenterFace 網(wǎng)絡(luò)全連接層中權(quán)重第yn列;d為誤差值;cy為聚類中心,T為訓練迭代次數(shù)。
經(jīng)回歸函數(shù)矯正后,所得結(jié)果在縮小類內(nèi)間距的同時,增大了類間間距,這種做法較大程度上增加了特征的泛化能力。
基于特征向量空間歐氏距離進行分類后,很容易發(fā)現(xiàn),在Softmax與中心損失函數(shù)進行聯(lián)合訓練的同時,進行回歸矯正,該結(jié)果比之前單一的損失函數(shù)的結(jié)果有更強的區(qū)分能力和更準確的識別能力,如圖 4 所示。這種高區(qū)分度將會帶來搜索效率的提升:此前被誤識別的‘假人臉’此時都不參與識別,系統(tǒng)能空出更多的額外資源用來處理真的人臉,處理速度加快的同時,系統(tǒng)占用也在降低。此外,CenterFace 中的訓練步驟也存在缺陷,通過顛倒卷積層中參數(shù)和類中心參數(shù)的更新順序,可以進一步提升函數(shù)的收斂能力。
圖4 單一損失函數(shù)與聯(lián)合損失函數(shù)的比較Fig. 4 Comparison between single loss function and joint loss function
本文在進行基礎(chǔ)人臉數(shù)據(jù)庫的構(gòu)建時,用爬蟲技術(shù)對網(wǎng)絡(luò)人物的圖像進行爬取,可能會使庫中存在許多幾乎不可能被訪問到的圖像,這不僅增加了存儲成本,而且降低了系統(tǒng)搜索效率。如果在爬取圖像數(shù)據(jù)時,就對圖像進行篩選,將高顏值、高清晰度、高訪問量的人臉圖像排在搜索隊列頭部,并增加搜索與訪問次數(shù)等屬性,建立反饋機制,提升更有可能被人們搜索的圖像的搜索優(yōu)先級,建立一套由人臉識別與前饋神經(jīng)網(wǎng)絡(luò)相結(jié)合的網(wǎng)絡(luò)爬蟲結(jié)果處理機制,在搜索時不斷優(yōu)化搜索體驗,最終框架見圖 5。
圖5 基于臉部特征關(guān)鍵點檢測算法的網(wǎng)絡(luò)爬蟲篩選器框架Fig. 5 Crawler filter framework based on facial feature key point detection algorithm
在線搜索時,圖像特征碼的生成,采用的是基于臉部關(guān)鍵點檢測算法提取特征,而離線數(shù)據(jù)庫的建立也需要以同樣的方法生成特征碼,所以,本文在爬蟲的反饋端也使用基于臉部關(guān)鍵點檢測算法,便于數(shù)據(jù)統(tǒng)一。當圖像被搜索或訪問后,將該圖像傳入基于臉部關(guān)鍵點檢測算法的網(wǎng)絡(luò)進行分析,然后輸出人臉特征標簽信息,如性別、年齡、顏值(基于臉部關(guān)鍵點檢測算法內(nèi)置屬性)等信息,將這些信息反饋至爬蟲模塊,通過自學習網(wǎng)絡(luò)修改參數(shù),提升經(jīng)常被搜索圖片的優(yōu)先級,從而提升搜索者的搜索體驗。
人臉識別技術(shù)的本質(zhì),就是對一張人臉圖像進行量化分析后,與其他經(jīng)過量化分析后的人臉圖像作比較。但在實際應(yīng)用過程中,數(shù)據(jù)庫中很少存儲只含有單個面部的照片,即使是單人照、證件照等照片,在進行人臉識別時仍需要進行人臉切割、人臉對齊等必要步驟。在互聯(lián)網(wǎng)中存在海量的人臉圖片,大部分圖片含有多張人臉,而且同一人的單人臉圖片中的面部圖像,并不一定比含有多張人臉的圖片中的面部圖像更具有代表性。傳統(tǒng)的人臉識別技術(shù)采用的是逐一對比的方法,將該技術(shù)應(yīng)用到含有多張人臉圖像的圖片中,能夠擴大人臉識別技術(shù)的使用范圍。
對于搜索端,當截取到的圖片含有多張人臉圖像時,先用算法對該圖片進行判斷,將所有人臉圖像進行定位后,基于人臉中心位置與人臉特征位置進行切割,再通過人工選擇其中一張人臉圖像,并將其傳入搜索網(wǎng)絡(luò)。而對于人臉數(shù)據(jù)庫端,在獲得一張網(wǎng)絡(luò)圖片后,建立與圖片相對應(yīng)的人臉圖像空間,對圖片中每個人臉都進行檢測提取,并存儲到對應(yīng)圖片空間中的每張人臉圖像都對應(yīng)著人臉空間的一個元素。將傳入搜索網(wǎng)絡(luò)的人臉圖像與數(shù)據(jù)庫中人臉圖像逐一比對,比對完成后,通過人臉圖像所在的人臉空間找到對應(yīng)圖片,爬取圖片的統(tǒng)一資源定位符進行結(jié)果返回。通過這種方法,無論匹配圖片或者搜索圖片有一張還是多張人臉圖像,系統(tǒng)都能夠給出有效的結(jié)果返回。
為了驗證優(yōu)化過后系統(tǒng)框架的運行效率,本節(jié)將利用一些數(shù)據(jù)集對框架中的算法進行評估。
現(xiàn)有的人臉檢測器大多數(shù)基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN),在進行大量的人臉識別時,往往需要 GPU 進行加速,基于 CPU 運行時很難保證實時采樣識別。本文訓練所得到的人臉檢測模型的大小僅有 6.8 MB,比如今動輒數(shù)百兆的 CNN 模型小了數(shù)十倍,系統(tǒng)效率得到很大提升。本測試基于英特爾 Z170 芯片組,CPU 為 Intel Core i7-7700,GPU 為 NVIDIA GTX1060,測試對象為一張 314 人的合照,測試方法包含兩個開源人臉識別算法:基于 OpenCV的 haar cascades[26]與精細搜索中使用到的基于臉部關(guān)鍵點檢測算法,4 個低分辨率下的快速人臉檢測算法:DSFD、S3FD、基于 PyramidBox[27]方法的 PyramidBox++[28]、LFFD[29],基于 GPU的運行效率測試結(jié)果如表 2 所示。由表 2 可知,本文所使用的方法,除了對基于臉部關(guān)鍵點檢測算法有巨大的效率優(yōu)勢外,在相同數(shù)據(jù)集下,與騰訊旗下優(yōu)圖團隊的 DFSD 方法和在 WIDER FACE 下取得了較好成績的 S3FD、LFFD 方法,以及 PyramidBox++方法相比,本文算法的單張圖片人臉識別效率是最高的,即便是高分辨率的多人臉圖像,平均一秒鐘也能處理 30 張左右。此外,本實驗還對一些含有較少人臉的圖像進行了測試,本文算法的效率均排在首位,由于篇幅限制,本文只選取了最能驗證算法效率的含有314 張人臉圖像的圖片測試結(jié)果進行展示。
表2 基于 GTX 1060 的運行效率Table 2 Running efficiency based on GTX 1060
對于 CPU,采集網(wǎng)絡(luò)攝像頭視頻流進行測試,針對上述人臉識別算法過于緩慢以至于難以使用,本文采用 MNN(Mobile Neural Network)[30]、NCNN(Tencent/ncnn: ncnn is a highperformance neural network inference framework optimized for the mobile platform(github.com))、ONNX(Open Neural Network Exchange)[31]等方法生成模型,和原生模型進行比對,對比結(jié)果如表 3所示。由表 3 可知,本文算法具有最高的效率,較原本算法提升了 31.2%。CPU 下運行幀數(shù)可達30 幀,具有較好的實時性。對于多人臉任務(wù)的處理(測試環(huán)境為 10~30 人的各種復(fù)雜場景),CPU 下的 6 幀顯然已經(jīng)無法滿足要求。在實際應(yīng)用中,采用 GPU 并行處理數(shù)據(jù),在大多數(shù)場景下能夠穩(wěn)定處理 30 幀的畫面,具體數(shù)據(jù)及內(nèi)容見第 4.3 節(jié)。
表3 CPU 下的算法表現(xiàn)Table 3 Algorithm performance under CPU
通用影視人臉數(shù)據(jù)集中,共包含 15 844 張圖像,218 位人物。本實驗選取其中 30 位人物的1 000 張人臉圖像作為測試,仍然使用 GPU 測試中的 7 種算法,并引入 MTCNN 作為比較。此外,還在測試中加入 200 張假人臉,測試結(jié)果如表 4 所示。由表 4 可知,本文算法對于人臉數(shù)據(jù)有著較好的辨別效果。結(jié)合第 4.1 節(jié)表 2 的實驗結(jié)果可知,本文算法在對比 DSFD、S3FD 算法幾十分之一的處理時間中,達到了 97.8% 的識別率,兼具了實時性與準確性。對于假陽性樣本的抗干擾性,與 MTCNN 等基于深度神經(jīng)網(wǎng)絡(luò)方法相比,本文算法仍具有較好的抗干擾能力,但是仍然難以超越基于臉部關(guān)鍵點檢測方法。此外,通過對表 4 分析可得,與未被改進的算法相比,基于深度特征混合聚類的人臉識別算法有更高的人臉識別率以及更低的假陽性率。
表4 各算法在自制數(shù)據(jù)集下識別率與假陽性率Table 4 Recognition rate and false positive rate of each algorithm under self-made data set
人臉關(guān)鍵點檢測算法與爬蟲算法,非本文研究核心重點,本文僅將其技術(shù)運用于系統(tǒng)之中,故不進行單獨的算法性能測試,兩算法的具體原理見第 3 節(jié)。
本文選取 10 個影視、直播的視頻流,將每個視頻播放 5 min,并對系統(tǒng)的綜合效能進行了測試。為了保持系統(tǒng)穩(wěn)定性,將其處理幀數(shù)限制在 30 幀/s,每 15 s 進行一次幀率采樣,采樣結(jié)果如圖 6 所示。由圖 6 可知,除視頻 5、視頻 6 幀率嚴重波動,視頻 3 開始時出現(xiàn)幀率波動外,其余視頻僅有小幅波動,且視頻 7~10 沒有出現(xiàn)任何波動。通過對視頻內(nèi)容分析可知,視頻 5 與視頻 6 都是大型戰(zhàn)爭題材影視劇,含有近千人沖鋒陷陣的場面,視頻 3 則是在視頻開始時有數(shù)百人上朝的多人場景,這表明系統(tǒng)在大多數(shù)情況下能夠每秒穩(wěn)定處理 30 張畫面,即使出現(xiàn)人數(shù)較多的場景,系統(tǒng)最低幀率仍然不小于 10 幀。但此時 CPU 負載達到了 80%,為了降低系統(tǒng)資源的占用,在實際使用過程中將幀數(shù)調(diào)至 5(此處的幀數(shù)代表著系統(tǒng)每秒中處理圖像的數(shù)量,并不影響視頻的播放幀數(shù),直播、電視劇播放幀數(shù)仍維持在 60 幀/s,電影一般為 24 幀/s,運行系統(tǒng)時并不會產(chǎn)生播放卡頓的現(xiàn)象),此幀率在滿足人們對于實時搜索需求的同時,對系統(tǒng)資源的消耗較低。
圖6 系統(tǒng)綜合性能測試表Fig. 6 System comprehensive performance test table
在此基礎(chǔ)上,本文還對大數(shù)據(jù)下人臉數(shù)據(jù)搜索能效進行了測試,在依靠基于臉部關(guān)鍵點檢測算法的網(wǎng)絡(luò)爬蟲篩選器所生成的 54 000 張名人圖片的數(shù)據(jù)集中(數(shù)據(jù)集采用 MySQL 進行存儲),搜索結(jié)果的平均用時為 283 ms(此處并沒有統(tǒng)計爬蟲下載時間,由于網(wǎng)絡(luò)延時等因素,在 50 M下載帶寬下,總使用時間在 0.5~1.5 s 范圍內(nèi)不等)。該實驗結(jié)果充分表明了本框架的可用性,且具有一定的研究價值。
本文基于現(xiàn)有視頻、直播中人物信息獲取難的問題,針對現(xiàn)有技術(shù)使用范圍受限、信息有限、難以兼顧實時性與準確性等問題,提出了一種全新的基于特征混合聚類和關(guān)鍵點檢測的智能人臉搜索框架。該框架的關(guān)鍵在于將人臉實時檢測與大數(shù)據(jù)下人臉的精準搜索分割開來,使用更輕量化、高效率的基于多尺度深度特征混合聚類的人臉檢測算法進行實時人臉檢測,極大程度上減少了系統(tǒng)負擔。在人臉搜索階段,使用實時性與準確性并重的基于臉部關(guān)鍵點檢測算法,使系統(tǒng)總體具有良好的實時性與精準性,且對系統(tǒng)資源的占用較低。同時,本文還提出了基于多尺度深度特征混合聚類的人臉檢測算法,方法運用Softmax與center loss函數(shù)聯(lián)合進行訓練,并加入回歸修正函數(shù),使得最終結(jié)果既減少了類內(nèi)間距,又增加了類間間距。本文算法不僅提高了人臉識別的準確率,還將許多非人臉的噪聲干擾剝離了聚類中心,一定程度上減輕了系統(tǒng)的負擔。通過基于多尺度深度特征混合聚類的人臉檢測算法的實驗結(jié)果可以發(fā)現(xiàn),與同類型前沿的方法相比,本文算法具有更高的效率,同時也達到了同類型算法中較高的識別率及對假陽性樣本較高的抵抗性。本文還將人臉識別技術(shù)應(yīng)用在了網(wǎng)絡(luò)爬蟲中,使得搜索結(jié)果高度相關(guān)。
此外,本文提供了兩個可供研究的數(shù)據(jù)集,一個主要包含視頻、直播等場景下的視頻截圖中的人臉,可以通用于各種基于深度學習的人臉算法的模型進行訓練;另一個為較高清晰度的明星、網(wǎng)絡(luò)名人人臉數(shù)據(jù)集,其包含合照、獨照、劇照等,可用于人臉精細化特征提取。
本文基于深度神經(jīng)網(wǎng)絡(luò)實現(xiàn)了視頻、直播等媒體數(shù)據(jù)下的實時人臉搜索框架,并經(jīng)過充分的數(shù)據(jù)測試,結(jié)果表明,本系統(tǒng)在兼顧實時性與準確性的同時,還具有良好的環(huán)境兼容性與穩(wěn)定性,為大數(shù)據(jù)下實時人臉搜索系統(tǒng)的應(yīng)用打下了堅實的基礎(chǔ)。