許庚林, 冉 峰, 鄧 良, 史華康, 郭愛英
(上海大學微電子研究與開發(fā)中心, 上海 200444)
隨著現(xiàn)代社會的發(fā)展, 嵌入式人臉抓拍設備在新零售場景和監(jiān)控安防等領域具有廣泛的應用價值.人臉抓拍是在攝像頭視頻流數(shù)據(jù)中挑選每個行人最佳人臉并確定其身份的過程, 其步驟分為人臉檢測、人臉跟蹤、最佳人臉提取和人臉識別.
人臉檢測是人臉抓拍的基礎.2015 年Ren等[1]提出了Faster R-CNN(convolutional neural network)檢測算法, 該算法利用卷積神經(jīng)網(wǎng)絡提取圖像特征, 同時提出區(qū)域生成網(wǎng)絡(region proposal network, RPN)提取候選框, 大幅加快網(wǎng)絡計算速度;同年, He等[2]針對CNN 網(wǎng)絡梯度存在消失的問題, 提出了殘差神經(jīng)網(wǎng)絡(residual neural network, ResNet)算法, 該算法依靠150 層的網(wǎng)絡深度學習, 得到更深層抽象的特征, 分類能力更強;2016 年Zhang等[3]提出了多任務級聯(lián)卷積神經(jīng)網(wǎng)絡(multi-task cascaded convolutional neural network, MTCNN)人臉檢測算法, 該算法使用3 個級聯(lián)CNN 網(wǎng)絡檢測人臉位置和關鍵點, 且確定的人臉關鍵點可用于人臉對齊, 便于后續(xù)人臉識別的研究;2018 年, Deng 等[4]提出了附加角幅度損失(additive angular margin loss, ArcFace loss)算法, ArcFace loss 算法更加注重在角度空間里對類別進行區(qū)分, 使用50 層的ResNet 進行訓練, Lfw 測試集上的準確率達到了99.8%.
多目標跟蹤作為經(jīng)典計算機視覺問題, 在單目標跟蹤問題的基礎上額外增加了目標ID(identification)的關聯(lián)任務, 在人臉抓拍系統(tǒng)中主要為不同幀中的同一行人賦予相同標簽.多目標跟蹤的典型算法有卡爾曼濾波[7]、均值漂移、核相關濾波、多尺度空間跟蹤等.近年來, 基于深度學習的檢測器迅速發(fā)展, 在檢測速度和精度上刷新了幾乎所有的算法測試集榜單.在此背景下, 基于檢測的跟蹤(tracking-by-detection, TBD)思路逐步應用在多目標跟蹤中.2016 年, Yu等[8]首先基于Faster R-CNN 設計目標檢測器, 再使用GoogleNet 提取目標外觀特征, 最后采用匈牙利算法進行數(shù)據(jù)關聯(lián);2017 年, Bochinski等[9]以高精度檢測算法為背景,針對高幀率跟蹤場景, 提出使用交并比(intersection over union, IOU)跟蹤目標, 并對檢測算法設定雙閾值, 篩選檢測框以提高魯棒性;2018 年, Hilke等[10]設計了聯(lián)合檢測和跟蹤的神經(jīng)網(wǎng)絡, 使用單網(wǎng)絡多目標檢測器(single shot multibox detector, SSD)[11]檢測目標, 并把檢測結果傳到循環(huán)神經(jīng)網(wǎng)絡(recurrent neural network, RNN)中, RNN 負責計算當前幀目標與上一幀目標的相似度矩陣, 最后通過匈牙利算法對相鄰幀目標進行相似度匹配, 從而實現(xiàn)多目標的跟蹤.
盡管基于深度學習的人臉檢測、跟蹤和識別算法已經(jīng)取得了較好的效果, 但嵌入式設備資源相對有限, 難以部署需要高實時性的深度學習.輕量化網(wǎng)絡以犧牲部分識別精度為代價精簡網(wǎng)絡參數(shù), 降低網(wǎng)絡計算復雜度, 更適用于嵌入式平臺的部署, 典型網(wǎng)絡有MobileNet[5]、ShuffleNet[6]等.目前多目標跟蹤算法大多在關聯(lián)模型上投入大的時間開銷.關聯(lián)模型包括特征表達和特征關聯(lián), 特征表達是關聯(lián)模型的核心, 最常見的特征是目標外觀特征和運動特征.提取深層次特征會造成較大的時間開銷, 但將多個淺層次特征融合, 不僅計算量低, 而且算法魯棒性也較單一淺層次特征算法高.因此, 多特征融合更有利于完成嵌入式平臺的實時多目標跟蹤任務.
本工作基于目前較優(yōu)秀的輕量化卷積網(wǎng)絡MobileNet, 對SSD 檢測網(wǎng)絡剪枝優(yōu)化, 構建了速度更快的人臉檢測網(wǎng)絡MobileNet SSPD(MobileNet single shot multibox purning detector);再利用MTCNN 中的O-Net 網(wǎng)絡將人臉對齊以提高后續(xù)跟蹤和識別的精度;基于融合哈希(fusion Hash, fHash)算法提取人臉外觀特征, 并利用卡爾曼濾波跟蹤器估計人臉運動信息, 通過求解最優(yōu)關聯(lián)矩陣實現(xiàn)多人臉跟蹤;使用關鍵點歐氏距離、人臉尺寸和四方向Sobel 算子[12]對同一行人的人臉進行最佳提取;使用輕量化網(wǎng)絡MobileFaceNet[13]提取該最佳人臉的特征, 利用余弦相似度進行特征匹配.實驗結果表明, 本工作基于嵌入式平臺設計的人臉抓拍系統(tǒng)能夠滿足實時抓拍的要求, 同時也能達到很高的抓拍準確率.
本工作人臉抓拍系統(tǒng)將訓練好的神經(jīng)網(wǎng)絡模型移植到嵌入式設備上, 實現(xiàn)離線人臉抓拍功能, 系統(tǒng)模型如圖1 所示.系統(tǒng)通過攝像頭捕捉圖像, 保存在緩存器中;經(jīng)過人臉檢測算法檢測人臉, 對齊之后進行人臉跟蹤;提取當前每個行人的最佳人臉, 直至行人離開視野后對其進行識別;將識別結果發(fā)送至遠端服務器進行應用管理.
圖1 人臉抓拍系統(tǒng)模型圖Fig.1 Model diagram of face capture system
人臉檢測是在預處理輸入圖像后, 進行場景圖像特征提取和人臉預測框回歸的過程.人臉對齊是人臉檢測的后處理, 首先檢測面部關鍵點, 再對關鍵點做仿射變換實現(xiàn)對齊.人臉對齊的目的是擺正人臉, 提高后續(xù)跟蹤和識別的準確率.人臉跟蹤在檢測到人臉后進行特征提取、運動估計, 通過求解關聯(lián)矩陣實現(xiàn)跟蹤;然后通過人臉質(zhì)量評價函數(shù)提取最佳人臉.人臉識別與人臉跟蹤算法流程一致, 但是為了提高效率, 人臉抓拍系統(tǒng)只需對最佳人臉進行識別;同一行人只識別一次, 人臉跟蹤則需對同一行人持續(xù)提取特征, 因此人臉跟蹤相比人臉識別需要更快速的特征提取方法.
在人臉抓拍系統(tǒng)中, 一位行人在視野期內(nèi)會被多次檢測和跟蹤, 人臉檢測和跟蹤算法的準確度和復雜度直接決定抓拍系統(tǒng)的性能, 是人臉抓拍系統(tǒng)的關鍵技術.本工作基于此提出了MobileNet SSPD 快速人臉檢測網(wǎng)絡和融合哈希人臉跟蹤算法.
人臉檢測網(wǎng)絡主要由2 個部分組成: 場景圖像特征提取網(wǎng)絡和人臉檢測網(wǎng)絡.為了能夠在保證檢測精度的同時提高檢測速度, 本工作將輕量化網(wǎng)絡MobileNet 作為場景圖像特征提取器, 將剪枝優(yōu)化后的SSD 網(wǎng)絡SSPD 作為人臉檢測網(wǎng)絡.通常, 卷積神經(jīng)網(wǎng)絡的不同層有不同的感受野, 而在SSD 網(wǎng)絡結構中省缺框(prior box)不需要和每一層的感受野對應, 特定的特征圖負責處理圖像中特定尺寸的物體.MobileNet SSD 網(wǎng)絡適用于多物體檢測, Howard等[5]抽取了19×19、10×10、5×5、3×3、2×2、1×1 這6 個不同特征圖尺寸大小的網(wǎng)絡層的特征進行人臉預測框的回歸.而人臉抓拍系統(tǒng)只需檢測出人臉, 而且特小尺寸的人臉圖像檢測后再識別的誤差較大, 故在后續(xù)最佳人臉提取中也會被舍棄.因此本工作對SSD 網(wǎng)絡進行剪枝處理以提高人臉檢測效率.圖2 是剪枝優(yōu)化后的網(wǎng)絡MobileNet SSPD, 這里SSPD 只抽取前級MobileNet 中19×19 的第11 層卷積層和10×10 的第13 層卷積層的特征, 直接回歸出預測框的位置以及分類的置信度.其中抽取特征用來回歸最小檢測框的尺寸為第11 層卷積層的60 像素, 設定回歸框IOU 的舍棄閾值為0.5, 則SSPD 網(wǎng)絡可以過濾掉尺寸小于42 像素的人臉圖像.
圖2 MobileNet SSPD 網(wǎng)絡結構Fig.2 MobileNet SSPD network structure
損失函數(shù)由位置損失Lloc和分類損失Lconf加權獲得,
式中:N為匹配正樣本的總量(如果N= 0, 則令L= 0);x,c分別為分類的指示量和置信度;l,g分別為預測框和實際標注的真實框;α為位置損失的權重;位置損失Lloc為預測框l和標注的真實框g之間的Smooth L1 損失;分類損失為分類置信度之間的Softmax 損失.
人臉對齊是在檢測到人臉后, 對人臉圖像進行優(yōu)化處理的過程.O-Net 是MTCNN 中的第3 階段網(wǎng)絡, 在MTCNN 中對第2 階段的預測框進行進一步的回歸和校正, 并為每個預測框生成5 個人臉關鍵點,分別為2 只眼睛、鼻尖和2 個嘴角.利用5 個關鍵點坐標使用OpenCV 進行仿射變換, 實現(xiàn)人臉對齊, 其流程如圖3 所示.
圖3 人臉對齊流程Fig.3 Flow chart of face alignment
在人臉抓拍系統(tǒng)中, 人臉跟蹤是對檢測到的人臉持續(xù)標記的過程, 即同一行人在不同視頻幀中具有同樣的人臉標記.本工作提出的融合哈希算法快速提取人臉特征, 再將特征映射到漢明空間求得特征相似度;同時利用卡爾曼濾波預測下一幀目標位置及大小獲取運動信息, 通過計算跟蹤子集的預測坐標與檢測子集的當前坐標的IOU 和2 個子集運動向量的余弦相似度,實現(xiàn)運動信息模型的估計;基于上述多特征模型的構建及使用擇優(yōu)匹配求解相似度關聯(lián)矩陣,進行多人臉跟蹤.系統(tǒng)流程如圖4 所示.
圖4 多人臉跟蹤算法流程Fig.4 Multi-face tracking algorithm flow
融合哈希特征提取算法將均值哈希(average Hash, aHash)與感知哈希(perceptual Hash,pHash)算法[14]相結合(見表1).首先求解2 幅圖像的均值哈希和感知哈希的特征向量, 再分別對2 組特征向量求漢明距離, 最后將漢明距離轉(zhuǎn)化為特征相似度.均值哈希算法利用人臉的低頻信息, 通過雙3 次插值法將人臉變換為8×8 的矩陣, 灰度化后計算灰度像素平均值;將64 位矩陣元素與灰度平均值作比較, 大于平均值記為1, 否則為0, 輸出64 位均值哈希向量.感知哈希算法使用離散余弦變換(discrete cosine transform, DCT)將人臉圖像從像素域變換到頻率域, 描述了2 維離散余弦正變換:
表1 融合哈希特征提取算法Table 1 Fusion Hash feature extraction algorithm
式中:f(i)為原始的信號;f(u)為DCT 變換后的系數(shù);N為原始信號的點數(shù);c(u)為補償系數(shù),可以使DCT 變換矩陣為正交矩陣.感知哈希算法輸出也是64 位向量.
為了提高系統(tǒng)抓拍效率, 本工作對跟蹤到的每個ID 的人臉圖像做質(zhì)量評價, 選出質(zhì)量最高的人臉送入后續(xù)的人臉識別網(wǎng)絡.本工作使用3 個指標評測人臉質(zhì)量.
(1) 人臉側轉(zhuǎn)角.人臉對齊后仍存在側臉情況, 本工作基于O-Net 的5 個關鍵點計算人臉側轉(zhuǎn)角.過鼻尖關鍵點作垂直x軸直線, 計算其余4 個關鍵點到該直線的距離, 設左眼、左嘴角、右眼、右嘴角到直線距離分別為e1,m1,e2,m2, 人臉側轉(zhuǎn)角得分t為
式中: 人臉越正,t的值越接近1;反之越接近0.側轉(zhuǎn)角得分計算如圖5 所示.
圖5 人臉側轉(zhuǎn)角計算Fig.5 Face side angle calculation
(2) 人臉尺寸.設當前檢測目標人臉框面積為s1, 當前最清晰人臉圖像面積為s2.此時更大面積的人臉尺寸得分為1, 小面積人臉尺寸得分為s1/s2或s2/s1(舍棄大于1 的值).
(3) 人臉清晰度.本工作使用四方向sobel 算子計算圖像梯度, 同時使用強邊緣像素的強度均值表示清晰度評價值.
最后將3 種指標加權, 篩選最高質(zhì)量人臉.
3.1 實驗設置及數(shù)據(jù)準備
本工作訓練模型的服務器運行Ubuntu16.04 系統(tǒng), 配備Intel Xeon E5 2620 v4 處理器,64 GB 內(nèi)存, Nvidia GeForce GTX 1080Ti 顯卡.本人臉抓拍系統(tǒng)最終運行在ARM 平臺上, 設備為酷芯AR9201 EVB 開發(fā)板, 開發(fā)板配置如表2 所示.
表2 開發(fā)板配置Table 2 Development board configuration
本工作在Wider 數(shù)據(jù)集下訓練MobileNet SSPD, 并在Fddb 數(shù)據(jù)集下進行測試.首先,對Wider 數(shù)據(jù)集進行處理, 剔除其中人臉太小或太模糊的照片, 整理出279 408 張人臉圖像.使用Afad 亞洲人臉數(shù)據(jù)庫和Orl 標準人臉庫對融合哈希算法進行測評.對不同人臉, 從Afad 中挑選出2 040 張背景一致的不同人臉圖像, 相互組合進行104 萬次測試.對相同人臉的評判數(shù)據(jù)庫用的是Orl 標準人臉庫, 包含40 個人, 每人10 張人臉圖像, 共計求出1 800(45×40)組數(shù)據(jù).
在一致的訓練集上, 分別對MobileNet SSD 和MobileNet SSPD 進行訓練.初始學習率為0.01, 學習率下降策略為Multistep, 分別在以10 為倍數(shù)的Epoch 時下降學習率.在Fddb 測試集的表現(xiàn)如表3 所示, 第一行從左至右分別為模型、驗證集上準確率、Fddb 測試集召回率、開發(fā)板單核DSP 下的運行時間及幀率.由表中數(shù)據(jù)可以觀察到MobileNet SSPD 在犧牲了0.3%準確率的基礎上實現(xiàn)了22.7%的速度提升.
表3 MobileNet SSD 與MobileNet SSPD 性能比較Table 3 Performance comparison between MobileNet SSD and MobileNet SSPD
在人臉抓拍系統(tǒng)中, 衡量人臉抓拍效率的指標是每秒人臉的準確抓拍數(shù)(accurate capture of the face per second, ACFS):
式中: ACFS 值越高, 每秒人臉正確抓拍數(shù)越多, 系統(tǒng)效率越高.本工作將MobileNet SSPD 與時下表現(xiàn)較好的算法VGG-SSD、DeepFace、MTCNN 和MobileNet SSD 進行比較.從表4 可以看出, 得益于輕量化的網(wǎng)絡結構, 本算法在檢測速度上優(yōu)于其他算法;在Fddb 數(shù)據(jù)集的召回率上網(wǎng)絡更深的VGG-SSD 和DeepFace 表現(xiàn)更好;本算法的Acfs 值遠高于其他算法, 每秒準確抓拍到的人臉數(shù)量最多, 是最適合人臉抓拍系統(tǒng)的人臉檢測算法.
表4 不同人臉檢測算法抓拍性能比較Table 4 Capture performance comparison between different face detection algorithms
通過將融合哈希算法在整理后的Afad 和Orl 數(shù)據(jù)集上測試可以看出, 當閾值設為1.6 時,融合哈希算法可以排除98.5%以上的不同人臉, 同時能將76.7%的相同人臉匹配.
表5 不同人臉/相同人臉在不同閾值下數(shù)據(jù)對比Table 5 Comparison of different faces/identical faces under different thresholds
在相同測試集下將本算法與aHash、pHash、互信息、余弦相似度進行測試(見表6).可見, 本算法綜合性能表現(xiàn)最好, 在與余弦相似度跟蹤算法準確率表現(xiàn)幾乎一致的情況下可大大減少計算時間.本算法的準確率比aHash 和pHash 算法高出21.7%和10.1%.
表6 不同相似度算法性能比較Table 6 Comparison of performance between different similarity algorithms
使用Mot16 數(shù)據(jù)集驗證本算法的有效性, 檢測器采用Pubilc detector.設定當?shù)趍幀的某檢測結果未關聯(lián)到第m ?1 幀跟蹤序列子集時, 將該檢測結果作為新目標, 從第m+1 幀開始ID 排序;當關聯(lián)度超過閾值θ時, 則關聯(lián)成功.在fHash 算法中,α表示為pHash 特征相似度所占權重;在總關聯(lián)度計算時,α為卡爾曼濾波跟蹤器估計關聯(lián)度占總關聯(lián)度的權重.
圖6(a)中, 4 條實線表示對應的算法在不同關聯(lián)度閾值下的跟蹤準確率, 虛線為該算法在不同閾值段的準確率平均值.可見在θ= 0.6 時, 目標跟蹤準確率(multi-object tracking accuracy, MOTA)較高, 且融合哈希特征對多目標跟蹤準確率的提升效果明顯.圖6(b)中實線為該算法在θ= 0.6 時不同權重α下算法的表現(xiàn), 虛線為其均值.可見, 當pHash 權重α為0.6,外觀特征相似度與運動信息估計相似度權重持平時, 算法跟蹤準確率最高.
圖6 不同條件下MOTA 得分(KF 表示卡爾曼濾波跟蹤器)Fig.6 MOTA score under different conditions (KF for Kalman filter tracker)
本算法與其他先進多目標跟蹤算法比較結果如表7 所示, 其中本算法實時性最高且具有較低的ID 交換次數(shù), 同時能保持較高精度的跟蹤準確率, 這也取決于相似度矩陣關聯(lián)的擇優(yōu)匹配求取策略.
表7 不同多目標跟蹤算法比較Table 7 Comparison of different multi-object tracking algorithms
在單目標和多目標條件下對本算法進行測試, 測試數(shù)據(jù)為實際場景中的視頻圖像, 每隔1 s 抽取一張作為效果圖.從圖7 和8 可見, 同一目標的ID 不變且無錯檢, 說明算法準確跟蹤到了該目標, 抓拍到最佳人臉后識別結果也均正確, 實際測試準確率在95%以上.
圖8 多張人臉抓拍效果圖Fig.8 Capture effect diagram of multiple faces
表8 列出了本系統(tǒng)運行時間測試結果, 整個人臉抓拍系統(tǒng)在單核DSP 下平均每幀處理時間為138 ms, 在4 核DSP 加速下, MobileNet SSPD、O-Net 和MobileFaceNet 平均運算速度提高了4 倍, 整個系統(tǒng)抓拍速度能達到28 幀/s, 可滿足實時的人臉抓拍需求.
表8 系統(tǒng)運行時間Table 8 System running time
表8 中, DSP 工藝制程為40 nm, 每秒可執(zhí)行1.2 萬億次運算(1.2 tera operations per second, 1.2 TOPs).在人工智能應用需求日益上升的背景下, 以手機為代表的嵌入式設備均加強了SoC 芯片算力: 高通驍龍855 芯片算力為7 TOPs;蘋果A12 芯片算力為5 TOPs;華為海思麒麟990 芯片運行MobileNet(int8)達到970 幀/s.以上設備在工藝和算力上都優(yōu)于本工作所用開發(fā)板, 因此如果本算法部署在手機端, 則抓拍效率會更高, 具有更高的應用價值.
本工作基于酷芯微開發(fā)板設計和實現(xiàn)了人臉抓拍系統(tǒng).首先, 本工作在MobileNet SSD 網(wǎng)絡的基礎上設計了MobileNet SSPD 快速人臉檢測網(wǎng)絡, 再級聯(lián)MTCNN 中的O-Net, 并依據(jù)人臉關鍵點進行仿射變換實現(xiàn)人臉對齊;然后, 基于均值哈希與感知哈希算法設計出融合哈希匹配算法跟蹤人臉, 使用側轉(zhuǎn)角、尺寸和清晰度這3 個標準得到最佳的人臉圖像;最后, 對最佳人臉進行識別.本工作通過優(yōu)化算法和4 核DSP 加速, 在嵌入式系統(tǒng)上達到了較快的人臉抓拍速度, 并取得了較高的抓拍準確率.