摘要:當前,電力施工現(xiàn)場廣泛應(yīng)用的智能視頻監(jiān)控平臺僅能檢測到所發(fā)生的違章行為,無法確定具體的違章人員身份,因此無法引起現(xiàn)場作業(yè)人員的重視,難以發(fā)揮有效作用。通過人臉識別技術(shù)實現(xiàn)施工現(xiàn)場的違章人員身份識別是十分必要的。本文基于深度學(xué)習(xí)算法,開發(fā)了一套基于CPU進行人臉檢測、識別和快速匹配算法的輕量化SDK,并將其集成到智能視頻管控平臺中,擺脫了人臉識別匹配對GPU顯卡、特定人臉識別攝像頭等硬件設(shè)備的依賴,實現(xiàn)了施工現(xiàn)場的違章檢測預(yù)警、人員身份識別、安全規(guī)范教育的管理閉環(huán),在提升管理效率的同時降低了施工現(xiàn)場管理成本。
關(guān)鍵詞:輕量級人臉識別算法;智能視頻分析
引言
近年來,人臉識別技術(shù)成為模式識別、圖像處理、機器視覺、神經(jīng)網(wǎng)絡(luò)、認知科學(xué)等多個領(lǐng)域的熱門研究方向。這一技術(shù)通過對比給定的靜態(tài)人臉圖像或動態(tài)視頻中的人臉特征,與預(yù)先存儲的已知身份人臉數(shù)據(jù)庫進行匹配,從而實現(xiàn)對單人或多人的身份驗證[1]。人臉識別作為生物特征識別領(lǐng)域的關(guān)鍵一環(huán),其應(yīng)用場景廣泛而多樣。得益于人臉識別技術(shù)的獨特魅力,國內(nèi)眾多互聯(lián)網(wǎng)企業(yè)紛紛涉足這一領(lǐng)域,積極探索人臉識別的實際應(yīng)用。例如,百度推出了人臉考勤系統(tǒng),而支付寶則引入了刷臉登錄功能,這些創(chuàng)新應(yīng)用都是人臉識別技術(shù)在國內(nèi)互聯(lián)網(wǎng)行業(yè)的具體實踐和探索[2]。
近年來,一種高效的深度學(xué)習(xí)識別算法——卷積神經(jīng)網(wǎng)絡(luò),在計算機視覺、自然語言處理等領(lǐng)域得到了廣泛應(yīng)用。這種算法呈現(xiàn)出權(quán)值共享與局部感知的顯著優(yōu)點,與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相比,有著獨特的魅力。局部感知的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計,使其與生物神經(jīng)網(wǎng)絡(luò)的特性更為接近;而權(quán)值共享的特性,則大幅度削減了模型學(xué)習(xí)所需的參數(shù)數(shù)量,進而簡化了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜性[3]。在圖像處理領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)展現(xiàn)出尤為突出的優(yōu)勢,無須預(yù)處理即可直接接收多維圖像數(shù)據(jù)作為輸入,將分類與特征提取功能集成在網(wǎng)絡(luò)中,省去了傳統(tǒng)識別算法中復(fù)雜的訓(xùn)練分類器和特征提取步驟。同時,其對于圖像中的位移、比例縮放、傾斜、旋轉(zhuǎn)等變換形式,均具備出色的魯棒性[4]。
1. 輕量級人臉識別算法
DeepFace深度學(xué)習(xí)算法[5]將卷積神經(jīng)網(wǎng)絡(luò)創(chuàng)新性地應(yīng)用于人臉識別領(lǐng)域,標志著識別精度的巨大飛躍,此后,深度卷積網(wǎng)絡(luò)在人臉識別中遍地開花。深度人臉識別技術(shù)憑借巧妙的分層架構(gòu),將像素級信息編織成高度穩(wěn)定的面部特征,極大優(yōu)化了識別效能,加速了實際應(yīng)用的落地。但值得注意的是,深度學(xué)習(xí)算法在追求極致精度的道路上,往往通過增加網(wǎng)絡(luò)層數(shù)來實現(xiàn),這不可避免地帶來了參數(shù)激增、計算復(fù)雜度提升、訓(xùn)練周期延長、硬件需求升級等一系列挑戰(zhàn),進而推高了整體成本。
高精度輕量級的人臉識別算法成為目前的算法改進方向。目前主流的開源人臉識別算法大多使用ResNet或者其變形作為特征提取網(wǎng)絡(luò),而先進的ArcFace人臉識別算法[6]使用的基礎(chǔ)網(wǎng)絡(luò)是LResNet100E-IR,這些網(wǎng)絡(luò)的層數(shù)大多在100層以上,參數(shù)量巨大,模型大小在幾十到幾百兆字節(jié)不等。本文從輕量級的人臉識別算法的思考出發(fā),選擇了基于MobileNet的輕量化網(wǎng)絡(luò)改進的MobileFaceNets作為特征提取網(wǎng)絡(luò),使用加性角度間隔損失函數(shù)計算損失,在網(wǎng)絡(luò)輕量化的同時能夠保證損失合理計算,避免精度的大幅降低。
1.1 基于MobileFaceNets的人臉識別算法
本文為了實現(xiàn)人臉檢測任務(wù),選用了MobileFaceNets網(wǎng)絡(luò),該網(wǎng)絡(luò)特征提取方式為端到端。在網(wǎng)絡(luò)構(gòu)建方面,bottlenecks成為主要模塊,而PreLu被選定為激勵函數(shù)。此外,網(wǎng)絡(luò)設(shè)計特色還包括在起始階段采取快速下采樣,并在卷積層的最后幾層實施早期降維。另外,還在線性全局深度卷積層后增加了一個專門用于特征輸出的1×1線性卷積層。當全局深度卷積作為全局算子應(yīng)用時,對于每個固定的空間位置,可以通過計算該位置所有通道的全局深度卷積權(quán)值所構(gòu)成的權(quán)向量的范數(shù),來確定其空間權(quán)重。
在實際的推理部分,使用模型蒸餾等方法,進一步降低模型的無效參數(shù)量,最終訓(xùn)練生成的模型大小僅為4MB,并且在加載INT16精度推理模型后,進一步優(yōu)化了模型的推理速度。
1.2 加性角度間隔損失函數(shù)
使用深度卷積神經(jīng)網(wǎng)絡(luò)進行大規(guī)模人臉識別的特征學(xué)習(xí)中,主要挑戰(zhàn)之一在于設(shè)計適當?shù)膿p失函數(shù)以增強判別能力。本文使用的加性角度間隔損失函數(shù)(ArcFace損失)對歸一化后輸入的特征和權(quán)重通過叉乘運算得到一個arccos的值,這個值對應(yīng)的角度為θ,對θ加上角度間隔m,角度間隔比余弦間隔對角度的影響更加直接[7]。ArcFace中是直接在角度空間θ中最大化分類界限。詳見公式(1)。
(1)
其中,Larc為損失函數(shù)的名稱,在這里特指ArcFace損失函數(shù);n是樣本數(shù)量;θ是特征向量和權(quán)重向量之間的夾角;m是間隔參數(shù),用于控制不同類別之間的間隔大小;s是一個正的縮放因子,用于增加決策邊界的間隔;yi是第i個樣本的真實標簽;cos(θ)是特征向量和權(quán)重向量之間夾角的余弦值。
ArcFace損失具有易于編程實現(xiàn)、復(fù)雜性低、訓(xùn)練效率高等優(yōu)點,并且其直接優(yōu)化弧度距離間隔,因為歸一化超球體中的角和弧度的對應(yīng)。ArcFace不需要與其他loss函數(shù)實現(xiàn)聯(lián)合監(jiān)督,就可以很容易地收斂于任何訓(xùn)練數(shù)據(jù)集。
2. 基于局部敏感哈希算法的人臉特征匹配
在人臉特征匹配中,輸入一個人臉特征向量后與數(shù)據(jù)庫中的所有人臉進行比對,找出最接近的一個人臉特征。最簡單粗暴的實現(xiàn)就是線性查找匹配,即與所有數(shù)據(jù)逐一比較,留下最相似的。顯而易見,這種方法極其耗時,存在很大的性能問題,特別是對于數(shù)據(jù)量和向量維度特別大的情況。為了加快查詢速度,需要采用索引的方法,本文通過局部敏感哈希算法進行快速地搜索與匹配。
局部敏感哈希算法[8]在數(shù)據(jù)處理的場景中,基于一個假設(shè):原始數(shù)據(jù)空間中相鄰的數(shù)據(jù)點在經(jīng)歷相同映射后,在新數(shù)據(jù)空間中仍相鄰的概率高。因此,我們首選基于余弦距離的哈希函數(shù),確保相鄰數(shù)據(jù)點在哈希映射后被歸入同一索引桶。當新查詢數(shù)據(jù)出現(xiàn)時,利用哈希函數(shù)生成索引號,取出對應(yīng)索引桶數(shù)據(jù),通過線性匹配找到相鄰數(shù)據(jù),這一過程將龐大數(shù)據(jù)集分割成多個較小的相鄰數(shù)據(jù)子集合,利用局部敏感哈希算法為海量數(shù)據(jù)建立索引,實現(xiàn)近似最近鄰的快速查找,顯著降低計算量,提升查找效率,如表1所示。
局部敏感哈希算法是一種高效工具,旨在從龐大的高維數(shù)據(jù)集中,迅速定位與查詢數(shù)據(jù)點高度近似的相鄰數(shù)據(jù)點。需明確的是,該算法雖無法確保找到絕對最相鄰的數(shù)據(jù),但能顯著減少需進行匹配的數(shù)據(jù)點數(shù)量,同時極大地提高找到非常接近的最近鄰數(shù)據(jù)點的概率。
3. 基于CPU的人臉識別SDK設(shè)計與實現(xiàn)
當前人臉識別技術(shù)主流為基于深度神經(jīng)網(wǎng)絡(luò)的人臉識別技術(shù),相對傳統(tǒng)算法,其具有更高精度,滿足商用要求,但其計算量大、實時性差等缺點也很突出。近幾年,隨著針對神經(jīng)網(wǎng)絡(luò)輕量化、硬件升級、深度框架針對性優(yōu)化等相關(guān)技術(shù)發(fā)展,為該技術(shù)商用落地帶來了福音。
對于深度卷積神經(jīng)網(wǎng)絡(luò)[9],英偉達的GPU更為友好,但是在大規(guī)模的算法應(yīng)用場景中,對GPU依賴太大,導(dǎo)致硬件成本飆升,而服務(wù)器中的CPU算力卻并沒有得到充分利用。通過基于CPU實現(xiàn)的人臉識別SDK,能夠在沒有顯卡的服務(wù)器上搭建人臉識別服務(wù),通過SDK中開放的API接口,實現(xiàn)監(jiān)控攝像頭人臉的實時檢測、識別和匹配等。
對于人臉識別SDK的設(shè)計,一般是以Java開發(fā)語言為主,但考慮到實時性和商業(yè)隱私,通常是用Java實現(xiàn)業(yè)務(wù)邏輯,并定義API接口,底層算法用C++實現(xiàn)封裝,而中間用JN(I Native Interface)銜接Java和C++。主要實現(xiàn)的結(jié)構(gòu)如圖1所示。
4. 在智能視頻分析平臺中的應(yīng)用
在實際應(yīng)用中,通過使用人臉識別SDK的API接口,將其集成到智能視頻分析平臺中后,可以通過手動新增或者自動同步等方式,建立人臉數(shù)據(jù)庫[10]。在新增人員信息的同時提取人臉特征,并對特征使用局部敏感哈希計算其索引,進行存儲。在平臺中支持人臉數(shù)據(jù)庫的增刪改查,并且可以根據(jù)姓名、單位、工種、手機號碼等要素進行篩選。
人臉識別界面中首先選擇監(jiān)控攝像頭,之后點擊開始演示進行實時的人臉檢測、識別與匹配,并將最終的匹配結(jié)果實時展示到界面上。匹配的信息包括人臉數(shù)據(jù)庫底圖以及姓名、單位、手機號碼等信息,并且在屏幕底部有歷史識別圖片的滾動顯示。整套識別服務(wù)部署在CPU上運行,從測試的結(jié)果來看,優(yōu)化后的算法極大節(jié)省了GPU的算力消耗,如表2所示。
結(jié)語
通用場景下的高精度、輕量級人臉識別算法的應(yīng)用將得到越來越廣泛的應(yīng)用。通過模型輕量化設(shè)計、推理加速等方式,實現(xiàn)其對攝像頭、GPU顯卡等硬件設(shè)備解耦,僅需要使用普通的監(jiān)控攝像頭以及CPU服務(wù)器就可以實現(xiàn)部署和使用,并且將底層人臉識別相關(guān)算法封裝成SDK并對外開放功能性的API接口,支持各種主流編程語言調(diào)用,使其能夠簡單高效地集成到各種視頻分析平臺中,大幅降低了該功能在實際場景中的應(yīng)用難度。
參考文獻:
[1]吳巾一,周德龍.人臉識別方法綜述[J].計算機應(yīng)用研究,2009,26(9):3205-3209.
[2]李春利,柳振東,惠康華.基于卷積神經(jīng)網(wǎng)絡(luò)的人臉識別研究[J].軟件導(dǎo)刊,2017,16(5):3.
[3]劉瑞明,徐春融,周韜.局部遮擋的人臉識別方法研究綜述[J].江蘇海洋大學(xué)學(xué)報(自然科學(xué)版),2022,31(3):63-71.
[4]汪濟民.基于卷積神經(jīng)網(wǎng)絡(luò)的人臉檢測和性別識別研究[D].南京:南京理工大學(xué),2015.
[5]黃發(fā)揚.淺談基于神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)算法的人臉識別技術(shù)[J].智能建筑, 2018(10):65-67.
[6]薛繼偉,孫宇銳,辛紀元.基于ArcFace算法的人臉識別應(yīng)用研究[J].電子設(shè)計工程,2022,30(11):168-172.
[7]沙路為.側(cè)面人臉識別關(guān)鍵技術(shù)研究[D].南京:東南大學(xué),2023.
[8]陳雯柏,黃至鋮,劉瓊.一種基于P穩(wěn)定局部敏感哈希算法的相似人臉檢索系統(tǒng)設(shè)計[J].智能系統(tǒng)學(xué)報,2017,12(3):392-396.
[9]李云鵬.基于卷積神經(jīng)網(wǎng)絡(luò)的動態(tài)人臉識別方法研究[D].哈爾濱:哈爾濱工程大學(xué),2023.
[10]王希永.基于智能視頻分析的人臉識別系統(tǒng)設(shè)計[D].濟南:濟南大學(xué),2021.
作者簡介:薛濤,本科,高級工程師,16300095@ceic.com,研究方向:人臉識別算法、智能視頻、智能發(fā)電。