張馳,陸曄,羅渝平,孫曉凱,祝涵珂
(中國電信股份有限公司上海分公司,上海200122)
當前,社會治安形勢日趨復雜,傳統(tǒng)的治安防控措施已經(jīng)難以滿足現(xiàn)實需求。中央已將公共安全視頻監(jiān)控系統(tǒng)建設納入“十三五”規(guī)劃和國家安全保障能力建設規(guī)劃,開展“雪亮工程”建設。在視頻監(jiān)控廣泛覆蓋的背景之下,隨著電信轉(zhuǎn)型業(yè)務的發(fā)展,在智慧園區(qū)、樓宇等產(chǎn)品中,越來越多的產(chǎn)品嵌入園區(qū)、樓宇等內(nèi)部視頻流,助力用戶第一時間發(fā)現(xiàn)問題,實時掌握現(xiàn)場情況。但許多監(jiān)控視頻中有大量人臉信息,存在生物識別ID 乃至關聯(lián)的身份、位置等個人信息暴露的可能,不僅存在一定的法律風險[1],也存在被不法分子利用的可能性。因此,在非必要場合,應對實時監(jiān)控視頻中的人臉使用馬賽克進行處理,規(guī)避相關的風險。
傳統(tǒng)的視頻流人臉隱私保護技術一般分為3 個步驟:
(1)將視頻流分解為圖片序列;
(2)對圖片序列中每一幀圖片進行人臉檢測并使用馬賽克替換;
(3)將處理過的圖片序列重新編碼為指定格式的視頻流。
通常使用例如OpenCV[2]等開源工具箱從視頻源讀取一幀圖片,然后通過人臉檢測算法對圖片進行檢測,對檢測到的人臉進行處理,輸出分組視頻流然后再讀取下一幀圖片,以此往復。這種做法對人臉檢測和處理的性能提出比較高的要求,處理一幀圖片的時間上限取決于視頻流的每秒幀數(shù),處理時間過長會導致視頻嚴重卡頓。在許多場景下比如人臉較多時處理耗時增加不可避免,這便對人臉檢測算法模型的性能提出了比較高的要求,限制了復雜而精確模型的發(fā)揮,導致技術進步困難,算法精度存在瓶頸。另外在網(wǎng)絡條件相對不穩(wěn)定出現(xiàn)輕微波動時,該方法會因為無法及時讀取視頻流而導致輸出視頻流的卡頓,對網(wǎng)絡波動抵抗力較差。
傳統(tǒng)的視頻流人臉隱私保護技術[3]中人臉檢測技術主要分為兩種:手動檢測和半自動檢測。手動檢測一般通過一定技術手段將視頻流拆解為圖片序列,然后對于每一張圖片,通過人工對其中的人臉使用馬賽克算法進行覆蓋,然后再將圖片序列整合為視頻。該方式人臉檢測召回率極高,打碼位置一般也較為精確,但基本無法做到實時打碼,人工成本高,不能滿足對實時性存在要求的業(yè)務需求。半自動打碼通常使用傳統(tǒng)機器學習的方法定位人臉,通過馬賽克算法、差分算法等對檢測到的人臉進行處理[4-5]。傳統(tǒng)的人臉檢測算法通?;谀0迤ヅ浞ɑ蚴褂肏aar-like[6]等傳統(tǒng)機器學習特征結合分類器Ada-boost[7]或者SVM[8]等分類器對視頻中的人臉進行檢測和定位。該類算法優(yōu)點是檢測速度較快、開銷較小、檢測效率較高,但對人臉的位置、角度要求極高,受亮度、光線影響較大,在例如監(jiān)控場景等非配合式場景下效果不佳。然而在人臉隱私保護應用中,如果存在較多的漏打,會直接導致部分人臉直接暴露在公眾視野之下,人臉隱私保護的效果便蕩然無存。換而言之,人臉隱私保護應用對人臉檢測算法的要求更偏重于召回率,要盡量減少漏打現(xiàn)象的出現(xiàn),對于把非人臉識別為人臉的誤打現(xiàn)象存在一定的包容性。所以傳統(tǒng)人臉檢測算法只能做到替代部分人工,仍需要對整個視頻進行人工復核。這一點直接導致傳統(tǒng)人臉檢測算法不能勝任人臉隱私保護應用中人臉檢測的工作。
目前主流的人臉檢測算法主要研究推進方向多為提高算法的準確率,對于召回率的提高一般放在次要位置,本文嘗試使用目前先進的基于深度學習框架的人臉檢測算法——多任務卷積神經(jīng)網(wǎng)絡(multi-task convolutional neural network,MTCNN)[9]并進行了測試,雖然在正臉檢測上取得了良好的效果,但在側臉的檢測上效果不佳,當行人臉部位置、姿態(tài)發(fā)生變化的時候檢測不穩(wěn)定,漏檢率很高,在對人臉檢測算法召回率要求較高的復雜場景下,隱私保護效果大打折扣。針對以上問題,本文通過將檢測任務進行拆分,提出了一種融合人臉檢測算法MTCNN 和物體檢測算法YOLOv3[10]的融合檢測模型來提高復雜場景下的人臉檢測召回率,其中MTCNN 用于對人臉正臉進行檢測,自訓練的YOLOv3 模型用于對人臉側臉、背對鏡頭等姿態(tài)進行檢測,極大地提高了人臉檢測召回率。并針對視頻流檢測任務,利用視頻流幀間關聯(lián)特性,通過前置幀關聯(lián)檢測方法進一步降低人臉檢測不穩(wěn)定的現(xiàn)象,提高了算法的穩(wěn)健性。
多任務卷積神經(jīng)網(wǎng)絡是目前主流的基于深度學習的人臉檢測算法,相對于傳統(tǒng)人臉檢測方法有著巨大的技術進步,效果也有著巨大的提升。它將人臉區(qū)域檢測與人臉關鍵點檢測放在一起,總體可分為P-Net、R-Net 和O-Net 三層網(wǎng)絡結構。它是2016年中國科學院深圳光通技術研究院提出的用于人臉檢測任務的多任務神經(jīng)網(wǎng)絡模型[9],該模型主要采用了3 個級聯(lián)的網(wǎng)絡,采用候選框架分類器的思想,進行快速高效的人臉檢測。這3 個級聯(lián)的網(wǎng)絡分別是快速生成候選窗口的P-Net、進行高精度候選窗口過濾選擇的R-Net 和生成最終邊界框與人臉關鍵點的O-Net。與很多處理圖像問題的卷積神經(jīng)網(wǎng)絡模型相同,該模型也用到了圖像金字塔、邊框回歸、非最大值抑制等技術。
首先將圖像進行不同尺度的變換,構建圖像金字塔,以適應不同大小的人臉進行檢測。
P-Net 全稱為Proposal Network,其基本的構造如圖1 所示。對上一步構建完成的圖像金字塔,通過卷積神經(jīng)網(wǎng)絡進行初步特征提取與標定邊框,并通過邊框回歸(bounding-box regression)調(diào)整候選框定位,通過非極大值抑制進行大部分候選框的過濾。P-Net將圖像輸入3個卷積層之后,通過一個人臉分類器判斷該區(qū)域是否是人臉,同時使用邊框回歸和一個面部關鍵點的定位器來得到人臉區(qū)域的初步定位,該部分最終將輸出很多張可能存在人臉的候選框,并輸入R-Net 進行進一步處理。
圖1 P-Net 的基本構造
R-Net 全稱為Refine Network,其基本的構造是一個卷積神經(jīng)網(wǎng)絡,如圖2 所示。與第一層的P-Net 相比,增加了一個全連接層,因此對于輸入數(shù)據(jù)的篩選會更加嚴格。R-Net 會濾除大量效果比較差的候選框,最后對選定的候選框通過邊框回歸和非極大值抑制進一步優(yōu)化預測結果。
圖2 R-Net 架構
因為P-Net 的輸出只是具有一定可信度的可能的人臉區(qū)域,在這個網(wǎng)絡中,將對輸入進行細化選擇,且舍去大部分的錯誤輸入,并再次使用邊框回歸和面部關鍵點定位器進行人臉區(qū)域的邊框回歸和關鍵點定位,最后將輸出較為可信的人臉區(qū)域,供O-Net 使用。與P-Net 使用全卷積輸出的1×1×32 的特征對比,R-Net 在最后一個卷積層之后使用了一個包含128 個節(jié)點的全連接層,保留了更多的圖像特征,準確率也優(yōu)于P-Net。
O-Net 全稱為Output Network,基本構造是一個較為復雜的卷積神經(jīng)網(wǎng)絡,相對于R-Net 來說多了一個卷積層,O-Net 架構如圖3 所示。O-Net的效果與R-Net 的區(qū)別在于這一層結構會通過更多的監(jiān)督來識別面部的區(qū)域,而且會對人的面部特征點進行回歸,最終輸出5 個人臉面部特征點。
O-Net 是一個更復雜的卷積網(wǎng)絡,該網(wǎng)絡的輸入特征更多,在網(wǎng)絡結構的最后是一個更大的具有256 個節(jié)點的全連接層,從而保留了更多的圖像特征。之后再進行人臉判別、邊框回歸和面部關鍵點定位,得到人臉區(qū)域的左上角坐標和右下角坐標與人臉區(qū)域的5 個特征點,作為網(wǎng)絡模型的最終輸出。
在復雜場景下,行人的人臉姿態(tài)和角度存在著非常多的變化,人臉在監(jiān)控視頻中經(jīng)常只有側臉,或者可能只能拍到行人的頭頂。目前主流的人臉檢測算法MTCNN 對于人臉的仰角俯角、左右旋轉(zhuǎn)角度都有一定的限制要求,非正臉損失了太多的人臉信息導致人臉特征點無法計算,目前來看通過對人臉檢測算法進行改進提升對非正臉的檢測召回率相對比較困難,是業(yè)界目前尚未完全解決的難題,所以本文認為應將非正臉的檢測作為與正臉檢測截然不同的問題進行處理??紤]到行人在視頻流中的位置、姿態(tài)、角度多種多樣,為確保人臉隱私保護的召回率,側臉、頭頂、后腦等各個非正臉的角度都有檢測的必要,即對人頭的各個角度進行檢測,非正臉檢測問題便歸結為了對人頭的檢測問題。人頭作為一個形態(tài)特征比較明確的物體,可以通過目標檢測算法解決人頭檢測問題。
基于以上考慮,本文將人臉檢測模型拆分為正臉檢測和非正臉檢測兩個部分。對于非正臉檢測,使用兼顧性能和效率的目標檢測模型YOLOv3 訓練人頭模型用于檢測視頻流中的非正臉。雖然該人頭檢測模型通過訓練除了非正臉以外也可以對正臉進行檢測,但考慮人臉檢測算法MTCNN在正臉檢測上無論是準確率、召回率還是性能均全面優(yōu)于自訓練模型,最終采取算法實現(xiàn)方案為使用人臉檢測算法MTCNN 對正臉進行檢測,使用自訓練目標檢測模型YOLOv3 對非側臉進行檢測,二者檢測結果的并集作為當前幀的人臉檢測結果。
YOLOv3 是現(xiàn)在常用的一種目標物體檢測算法。在基本的圖像特征提取方面,YOLOv3 采用了稱之為Darknet-53 的網(wǎng)絡結構(含有53 個卷積層),它借鑒了殘差網(wǎng)絡的做法,在一些層之間設置了快捷鏈路。
YOLOv3 采用了3 個不同尺度的特征圖來進行對象檢測,可以有效提升復雜場景下各種大小物體檢測的準確率。卷積網(wǎng)絡在79 層后,會通過多個不同尺度的卷積層得到多種檢測結果,卷積層的大小為原始輸入圖像的1/1 024,即如果原始輸入大小是416×416,這里的特征圖就是13×13。由于下采樣倍數(shù)高,這里特征圖的感受野(receptive field)比較大,因此適合檢測圖像中尺寸比較大的對象。
為了實現(xiàn)細粒度的檢測,第79 層的特征圖又開始作上采樣(從79 層往右開始上采樣卷積),然后與第61 層特征圖融合,這樣得到第91 層較細粒度的特征圖,同樣經(jīng)過幾個卷積層后得到相對輸入圖像16 倍下采樣的特征圖。它具有中等尺度的感受野,適合檢測中等尺度的對象。
最后,第91 層特征圖再次上采樣,并與第36 層特征圖融合,最后得到相對輸入圖像8 倍下采樣的特征圖。它的感受野最小,適合檢測小尺寸的對象。
隨著輸出的特征圖的數(shù)量和尺度的變化,先驗框的尺寸也需要相應的調(diào)整。YOLOv3 采用K-means 聚類得到先驗框的尺寸,為每種下采樣尺度設定3 種先驗框,總共聚類出9 種尺寸的先驗框。在COCO 數(shù)據(jù)集[11]實驗這9 個先驗框分別是:(10×13)、(16×30)、(33×23)、(30×61)、(62×45)、(59×119)、(116×90)、(156×198)、(373×326)。
在最小的13×13 特征圖上(有最大的感受野)應用較大的先驗框(116×90)、(156×198)、(373×326),適合檢測較大的對象。中等的26×26特征圖上(中等感受野)應用中等的先驗框(30×61)、(62×45)、(59×119),適合檢測中等大小的對象。較大的52×52 特征圖上(較小的感受野)應用較小的先驗框(10×13)、(16×30)、(33×23),適合檢測較小的對象。特征圖、感受野與先驗框?qū)闆r見表1。
YOLOv3 借鑒了殘差網(wǎng)絡結構,形成更深的網(wǎng)絡層次以及多尺度檢測,提升了mAP 及小物體檢測效果。如果采用COCO 數(shù)據(jù)集上50%重疊度下平均準確率(COCO mAP50)做評估指標,在精確度相當?shù)那闆r下,YOLOv3 的速度是其他模型的3~4 倍。
表1 特征圖、感受野與先驗框?qū)那闆r
雖然在融合了人臉檢測和人頭檢測算法以后,本文的方法在圖片數(shù)據(jù)集上取得了良好的檢測效果。但在實際復雜場景的視頻流中,行人的移動、姿態(tài)變化、光線變化等各種不可控因素,導致算法模型人臉檢測的穩(wěn)健性依然不高,在對連續(xù)幀的檢測中依然會存在某些幀中的某些人臉的漏檢,反映在輸出視頻流上是人臉上的馬賽克時斷時續(xù),隱私保護效果依然不夠理想。
針對這個問題,利用視頻流時序信息,提出了一種通過前置幀進行關聯(lián)檢測的改進方法。一般而言,本文可以假設行人不會從視頻流中憑空出現(xiàn)或者消失,而且行人的移動速度并不會太快。所以對于一個行人而言,他在視頻流中的移動速度將和他的人臉隱私保護馬賽克一同連續(xù)運動,在相鄰幾幀這種很短的時間內(nèi),位置并不應發(fā)生較大位移或者憑空消失。如果某一幀中某個人臉馬賽克并非在屏幕邊緣但突然消失了,大概率是這一幀發(fā)生了漏檢,這時可以使用幾幀以內(nèi)上一次人臉馬賽克出現(xiàn)的位置作為本幀應打馬賽克位置的預測。在本文的測試中,設置閾值為10 幀以內(nèi)。融合人臉檢測模型、人頭檢測模型和前置幀關聯(lián)檢測方法的多檢測模型流程如圖4 所示。
整個人臉檢測流程將分兩個線程進行。
· 線程一負責對圖片幀進行人臉檢測定位并進行馬賽克處理,然后將處理后的圖片幀輸出到檢測結果資源池中進行緩存;
· 線程二負責根據(jù)時序和預設的幀率等參數(shù)
從資源池中抽取圖片幀進行輸出。
雙線程架構形成了內(nèi)部緩沖架構,當線程一因為間歇性輸入視頻流卡頓或者部分圖片幀由于人臉較多等原因檢測較慢的時候,可以維持線程二圖片幀輸出的穩(wěn)定,保障視頻流的平穩(wěn)輸出。
在線程一中,本文首先使用自訓練物體檢測模型來對非正臉人頭進行檢測并進行馬賽克處理,然后使用人臉檢測模型對圖片幀進行人臉檢測并標記位置,然后與前置幀的標記區(qū)域進行合并,得到本文圖片幀的所有標記區(qū)域并進行馬賽克處理,處理后的圖片幀將輸入檢測結果資源池中。然后自訓練人頭檢測模型和人臉檢測模型的合并結果,如果不為空值,將作為新的前置幀檢測結果應用于后續(xù)幀檢測。如果連續(xù)10 幀均為空值,本文認為畫面中確實沒有需要馬賽克的人臉,將清空前置幀檢測結果。
圖4 多檢測模型流程
在實驗中,本文對所提算法框架進行了測試,并與其他兩個傳統(tǒng)的人臉檢測模型——基于Haar-like 特征和Ada-boost 的傳統(tǒng)人臉檢測模型、基于深度學習的人臉檢測模型MTCNN進行了對比。其中傳統(tǒng) Haar-like 特征結合Ada-boost 分類器的模型已集成在OpenCV 工具箱中[12],MTCNN 使用默認預訓練權重,本文算法中物體檢測模型YOLOv3 使用自建人頭數(shù)據(jù)集進行訓練。自建人頭數(shù)據(jù)集分為兩個部分:一部分為通過開源數(shù)據(jù)集獲取具有人頭的圖片數(shù)據(jù),場景多為教室等室內(nèi)場景;另一部分通過在部分實際監(jiān)控場景中進行采集,多為室外場景。人臉打碼算法采用均值濾波算法,效果如圖5 所示。
圖5 均值濾波人臉打碼效果
模型的優(yōu)劣通常通過準確率和召回率兩個指標來進行評價,準確率和召回率按式(1)和式(2)進行計算:
本文準備了一段1 min 時長的視頻流并分別用上述3 個模型進行人臉隱私保護處理,得到3 段處理過的視頻流。然后從1 min 內(nèi)隨機抽取了100 個時間點并分別從3 段視頻流中抽取對應時間點圖片作為測試集。每段視頻流抽取100 張圖片,其中共有337 個真實人臉。在計算準確率和召回率的時候,模型計算的人臉定位坐標和實際人臉定位坐標的重疊度閾值設定為50%,即當模型檢測人臉定位框與實際人臉定位框重疊度高于50%時認定模型檢測正確,小于50%認定為不正確。3 種模型在實驗測試集上測試結果見表2。
可以看出3 種方法在準確率上取得了比較接近的效果,幾乎全部的預測框都是正確的。但是在召回率上,傳統(tǒng)Haar-like 特征的表現(xiàn)較差,基本只能檢測出正對攝像頭且比較完整的人臉,基本不具備實用價值。基于深度學習的MTCNN 算法相較于傳統(tǒng)方法在人臉檢測召回率上有了極大的提升,但總體而言檢測效果也不盡如人意,雖然對人臉的各種姿態(tài)變化具有一定的穩(wěn)健性,但對于測試集中在實際監(jiān)控場景下經(jīng)常出現(xiàn)的側臉或者低頭并不能很好地檢測,在人臉轉(zhuǎn)正或者抬起頭的時候也無法在人臉即將可以被人眼辨識的時候及時把馬賽克打上,依然存在人臉隱私泄露的風險。而本文多檢測模型在設計上將人臉隱私保護任務進行了細化,劃分為正臉檢測的人臉檢測任務和非正臉的物體檢測任務,并利用視頻流圖片幀相互關聯(lián)的特性對檢測結果進行優(yōu)化,在復雜場景視頻流中檢測效果取得了極大的提升,召回率相較于只使用人臉檢測算法提高532%。
表2 3 種算法模型準確率與召回率比較
在實驗中,本文分別對基于傳統(tǒng)方法和深度學習的人臉檢測算法在基于監(jiān)控視頻場景的人臉隱私保護應用中的準確率和召回率進行了測試。實驗表明,以上兩種算法在準確率上表現(xiàn)均比較優(yōu)秀,但由于監(jiān)控場景中人臉姿態(tài)、角度變化相對復雜,兩種算法在召回率指標上均表現(xiàn)不佳,不能很好地滿足人臉隱私保護應用對于高召回率的要求,無法滿足實際應用要求。針對以上問題,本文提出的結合人臉檢測和目標檢測的多檢測模型并結合前置幀關聯(lián)檢測方法有效解決了人臉姿態(tài)、角度變化大的檢測問題,大幅度提高了檢測召回率,極大降低了馬賽克漏打現(xiàn)象的出現(xiàn),為人臉隱私保護應用落地商用往前邁進了一大步。
在實驗中,本文發(fā)現(xiàn)部分行人因為佩戴帽子或者口罩,系統(tǒng)在進行檢測的時候存在一定困難,對在視頻的邊緣部分出現(xiàn)的行人或者由于前后遮擋導致的不完整人臉檢測效果也不是很穩(wěn)定。分析原因本文認為是在組織訓練數(shù)據(jù)訓練非正臉模型的時候?qū)σ陨项悇e的數(shù)據(jù)收集過少,在以上情景下模型訓練不夠充分。在未來考慮將進一步通過豐富訓練數(shù)據(jù)集,并通過隨機擦除增強技術[13]進一步增加數(shù)據(jù)種類,提升模型對于不完整人臉的檢測效果,降低模型在各種情景下的漏檢現(xiàn)象。