張 駿,朱 標,吉 濤
(中航華東光電有限公司 國家特種顯示工程技術研究中心 特種顯示國家實驗室,安徽 蕪湖 241002)
2019年,武漢市爆發新型冠狀病毒疫情,疫情擴展速度快,短短2周便傳播到全國各地。該病毒的主要癥狀之一就是體溫異常,因此體溫檢測成為監控疫情的重要手段。人工智能與熱紅外測溫相結合的各種檢測系統紛紛亮相,曠視科技將可見光條件下檢測戴口罩遮擋的人臉技術和熱紅外技術相集合,推出了“曠視AI測溫系統”,商湯科技也相應的推出了人臉識別、無感測溫與無感通行結合的出入口通行模塊,通過該模塊可以快速的檢測出人員有無佩戴口罩,規范員工佩戴口罩進出。目前提出的智能監控系統,更多的是基于可見光下的人臉檢測(包括戴口罩遮擋),再通過可見光圖像和紅外圖像的配準,將可見光下檢測到的人臉區域應用到紅外圖像中。而這類智能監控系統,對于硬件依賴較大,必須使用配準好的雙光(可見光+熱紅外)采集設備。針對此種局限本文提出了一種基于MobileNet-SSD網絡的紅外人臉檢測算法,可直接檢測出熱紅外圖像中的人臉區域。
SSD(Single Shot MultiBox Detector)算法,是一種端到端的單次多框實時檢測的深度神經網絡模型[1],融合了YOLO的回歸思想[2]和Faster RCNN[3]的候選框機制。該算法利用回歸的思想極大的減少了神經網絡的計算量,提升了算法的運行速度。算法中不需要生產候選框,而是直接提取輸入圖像的特征信息,然后直接在特征圖上回歸這個位置的邊界框以及對物體進行分類;運用局部特征提取的方法得到不同的位置,不同的寬高比、尺寸的特征,對比YOLO算法特征提取更加高效[1],此外,為了增加模型檢測不同大小物體的魯棒形,算法選取了網絡中多個層次的特征圖進行預測。
SSD的網絡模型基于一個前饋卷積網絡,大致可以分為:前端的特征提取網絡和后端的多尺度特征檢測網絡,通過池化操作將前端提取網絡產生的特征圖尺寸逐層減小,再通過后端的檢測網絡的檢測,實現多個尺度特征圖的檢測[1]。網絡的結構如圖1所示。

圖1 SSD網絡結構
2019年,Google公司在MobileNet-V2之后提出了MobileNet-V3網絡[4],作為MobileNet系列的新成員,MobileNet-V3繼承了MobileNet的一貫輕量化的特點,MobileNet網絡在V1模型中,采用直筒結構,利用分組卷積降低網絡的計算量,使得網絡的計算量降到最低,同時使用Point-Wise Conv進行通道直接的融合[5]。V2模型在V1模型的基礎上,引入了bottleneck結構[6],將bottleneck結構變成了紡錘型,即resnet先縮小為原來的1/4,再放大到原來的6倍,再縮小[6],最后將Residual Block[7]中最后的ReLU操作取消。V3模型在V2的基礎上進行了4處優化:①引入了SE(Squeeze-and-Excite)結構,再bottleneck結構中增加SE結構,文獻[4]中,作者給出了改進后的結構圖,并詳細解釋了增加SE結構后,不僅提高了網絡的精度,同時也沒有增加時間的消耗;②修改了V2模型的尾部結構,直接去掉了V2結構中Avg Pooling操作前紡錘型卷積的3×3以及1×1卷積,進一步減少了計算量,同時精度也沒有損失[4];③修改頭部卷積核通道數量,由V2模型中的32×3×3,修改為16×3×3;④非線性變化的改變,使用了h-swish替代了swish操作。
熱紅外圖像,因為其特殊的成像特點,使其應用領域廣泛,尤其在軍事、工業、醫療領域[8]。熱紅外圖像成像的原理是通過采集熱紅外波段8~14 μm,來探測物體發出的熱輻射,熱成像將熱輻射轉化為灰度值,通過黑體輻射源標定得到的測溫算法模型(溫度灰度曲線)建立灰度與溫度的對應關系[9]。其圖像的灰度分布與目標反射特征無線性關系。如圖2所示。
從第2節中可以了解到SSD算法是有前端的特征提取網絡和后期的特征檢測網絡組成,在文獻[1]中作者指出前端特征提取網絡,可以是一個去除全連接層的分類網絡,如 AlexNet[10],VGG[11]等,作者使用了VGG16網絡,文獻[4]中,作者將MobileNetV3應用于SSD-Lite在COCO測試集上,對比基于VGG的SSD-Lite,運行速度要快五六倍之多,雖然MobileNetSSD在精度有所下降,但可以滿足使用需求[4,12-15]。

可見光條件下SSD算法通常采用VGG16作為基礎模型,在VGG16的基礎上通過新增卷積層來獲得更多的特征圖用來檢測。通常使用的VGG16是在相關數據集的預訓練模型,如ImageNet數據集、ILSVRC CLS-LOC數據集等,這些數據集往往都提供了大量的可見光數據和預訓練模型供大家使用。因此在可見光條件下,更多的研究重點集中在SSD特征搜索網絡,而忽略了前期基礎模型的訓練。文獻[16]中,Zhiqiang Shen提出了3個觀點,首先是預訓練模型一般都是在分類圖像數據集上訓練,不一定可以遷移到檢測模型的數據上;其次,預訓練的模型,其結構是固定的,修改比較麻煩;最后,預訓練的分類網絡的訓練目標一般和檢測目標不一致,因此預訓練模型對于檢測算法而言不一定是最優的選擇[16]。而本算法針對的熱紅外圖像,恰好滿足了上述的觀點,首先是熱紅外的分類圖像數據集,很難獲得,無法進行預訓練模型遷移,其次,訓練目標與檢測目標不一致,因此本算法需要構建自己的訓練數據集,并進行基礎模型的訓練。
本文采用了文獻[4]中的MobileNetV3-Large網絡作為基礎模型,該模型對比Small模型增加了特征提取力度,極大程度的保證了淺層特征的提取。其網絡結構在文獻[4]中有描述,這里不在闡述。文獻[4]中用h-swish函數代替了swish函數,其公式如式(1)所示:
c∈[1,C]
(1)

(2)

目前,SSD在車牌檢測、人臉檢測中有廣泛的使用[1]。從2015年被提出以后,SSD算法便一直被用來與YOLO算法進行比較,但是實際上SSD算法(除了SSD512)在速度和精度上都要優于YOLO算法,原因在于,SSD采用了不同尺度的特征圖進行檢測,大尺度特征圖(較靠前的特征圖)用來檢測小物體,而小尺度特征圖(較靠后的特征圖)用來檢測大物體。同時使用了不同尺度和長寬比的先驗框[2]。因此這些特點決定了SSD算法可以很好的兼顧不同尺寸的目標檢測。
MobileNet-SSD用MobileNetV3-Large網絡替代VGG16作為基礎網絡,借鑒文獻[12]~[15]中對于SSD網絡的改變,本算法相應的對網絡進行了適當的改變,首先使用Residual Block[7]代替了文獻[1]給出的Conv2d操作;以提升網絡的檢測精度;其次對預測框(Prior Box)的尺寸進行了改變,使用了19,10,5,3,2,1尺寸的先驗框代替文獻[1]中使用了38,19,10,5,3,1尺寸的先驗框,這樣雖然降低了算法對于極小尺寸目標的檢測精度,但是卻提升了網絡的運算速度。網絡的損失函數均采用文獻[1]提出的方法,這里不在進行闡述。
因本算法針對于熱紅外圖像中的人臉檢測,而目前沒有開源的熱紅外圖像數據集,所以本文收集了1000張熱紅外人臉圖像作為基礎分類模型訓練的數據集,同時收集了550張不同環境下的熱紅外圖像作為檢測訓練集。其中1000張熱紅外人臉圖像,采集了“黑熱”、“白熱”、“偽彩”、“是/否佩戴口罩”、“是/否佩戴眼鏡”等多種圖像,如圖3所示。

圖3 熱紅外人臉圖像訓練集
可見光圖像的數據增強方法大致為顏色變換、幾何變換和裁剪變換,而紅外圖像自身的特點,決定了顏色變換對于熱紅外圖像的增強作用不是很大。本文采用了縮放操作、隨機翻轉(水平,垂直方向)、旋轉操作、鏡像操作作為數據增強的方法。同時隨機抽取部分圖像進行剪切操作,用來模擬可能出現的人臉大比例被遮擋的情況。
熱紅外人臉檢測,往往是在一幅熱紅外圖像中出現單個或多個人臉,同時因為不同人臉在圖像中的位置和尺寸的大小,使得4.3節中的人臉圖像不在適用于人臉檢測,因此,本文在室內環境下,又采集了550張不同情況下的人臉圖像,這些圖像包括單個人臉,多個人臉、同時出現尺寸大小不一的人臉等場景,采用縮放、隨機翻轉(水平,垂直)、圖像旋轉、鏡像以及對隨機圖像進行圖像裁剪等系列操作方式作為數據增強手段。如圖4所示。

圖4 熱紅外人臉檢測數據集
本算法采用3組不同的實驗,以驗證算法的可行性及性能。對比實驗分別為:1)隨機抽取熱紅外人臉圖測試本算法的可行性;2)對比可見光人臉檢測精度分析本算法的性能;3)利用OpenVINO ToolKit加速本算法,測試算法的實時性。
在實驗前期,需要對MobileNet V3-Large分類網絡進行訓練,為后續的MobileNet-SSD網絡提供特征提取模型。首先是數據集的準備,我們收集了1000張不同環境下的熱紅外人臉圖像,后續又添加了1000張可見光條件下的貓臉圖像和1000張可見光條件下的狗臉圖像。采用7∶2∶1的分配比例分為訓練樣本,驗證樣本及測試樣本。實驗環境為Window10+Anaconda3(64 bit),采用Pytorch 1.1.0+OpenCV3.3(No Contrib)作為深度學習框架,CPU 為Inter Core i7-7700HQ,內存為16G,GPU為NVIDIA GeForce GTX1050Ti 4 GB。MobuleNet_V3-Large參數為學習率(Learning-rate)為1×10-3;輸入圖像尺寸(Input Size)為224×224;批次規模(Batch Size)為10;迭代次數(Epochs)為200;分類種類(Classes)為3類。迭代160次后,模型準確率收斂到99.45 %,結束訓練,模型大小為14.9 M。
實驗平臺的硬件指標與5.1節的硬件指標一致。本實驗隨機抽取了“黑熱”,“白熱”,“偽彩”的單一人臉和多人臉進行了實驗,使用“標記框面積比”,“誤檢測率”作為對比指標。公式分別如(3)、(4)所示:

(3)

“誤檢測率”如(4)所示:
(4)
式(4)中,Qerror表示“誤檢測率”;Ndetect表示預測人臉框個數;Nthruth表示人工標記框個數。當Qerror>1時,表示多預測出人臉;當Qerror<1時,表示出現漏檢測人臉;當Qerror=1表示預測人臉框的數量和人工標記的數量一致。可行性實驗結果圖如圖5所示。其中圖5(a)、(b)、(c)為“白熱”圖像檢測結果,圖5(d)、(e)、(f)為“黑熱”圖像檢測結果;圖5(g)、(h)、(i)為偽彩圖像檢測結果。
表1、表2、表3中A、B、C、D分別為Nthruth、Ndetect、Qerror、Qarea,“-”表示沒有對應值,從實驗結果中不難發現3種不同形式的圖像,均出現了“漏檢測”的情況,在“單人近距離”條件下,3種圖像均出現了漏檢測,尤其在“黑熱”圖像中,幾乎檢測不到人臉,從圖5(i),(j)不難看出,“黑熱”的人臉圖像特征信息(除去眼鏡部分)較少,所以很難完成檢測任務。相對而言,“白熱”、“偽彩”圖像提取的特征信息較為豐富,如圖5(d),(e),(o)。但因為基礎網絡的訓練集數量過少,極大程度限制了網絡的性能,導致出現了大量漏檢測的情況;“多人中遠距離”條件下,檢測效果對比“單人”情況有了大幅提高,也驗證了MobileNet-SSD算法的多尺度特點,但是漏檢測的情況也依然存在。在Qarea指標上,只有圖5(d)中的預測框要大于標記框,其他的預測框基本與標記框大小一致。通過圖5和表1、表2和表3的數據對比,本算法完全可以適用于熱紅外圖像中的人臉檢測。

圖5 本算法檢測結果

表1 白熱圖像“可行性”實驗指標分析表

表2 黑熱圖像“可行性”實驗指標分析表

表3 偽彩圖像“可行性”實驗指標分析表
5.2節中驗證了本算法的可行性。在本節中,我們將對比于“可見光條件”下的檢測精度。實驗環境,采用雙光采集設備(可見光+熱紅外),同步采集可見光和熱紅外圖像,在通過相關算法預測出可見光下的人臉區域,并將該區域,同步到熱紅外圖像中,繪制出區域A,再通過本算法以標記了區域A的熱紅外圖像作為測試圖像,繪制預測區域B,對比區域A和區域B,以測試本算法的精確度Acczones。其公式如下:
(5)


圖6 性能對比實驗圖
圖6中粗框為通過可見光同步并標記溫度的預測框,細框為本算法預測框,文字信息為算法的實時幀率;本次將市面上使用的一種“疫情監控系統”相關算法作為對比對象。從圖6(b)、(d)中明顯可以發現,對比算法的預測框位置偏差較大,考慮到雙光設備之間的偏差,我們默認預測框標記在合適的位置。


表4 可見光預測框與本算法預測框Acczones 對比
通過本次實驗的結果圖和相關數據對比,可以得出對比市面上特定的雙光算法,本算法對于硬件依賴性更小。同時本算法在對于中、小尺寸的人臉檢測上,具有一定優勢,檢測精準度也與特定雙光算法精度相當。但在大尺寸的人臉檢測上本算法顯示出不足。
因深度學習模型的高計算量很難實時應用,所以深度學習模型的優化和硬件加速也成為了當前重要的研究方向。OpenVINO ToolKit是Intel發布的一套深度學習推斷引擎,支持各種網絡框架。在Intel平臺上可以提升計算機視覺相關深度學習性能達19倍以上,解除CNN-based的網絡在邊界設備的性能瓶頸,對于OpenCV,OpenXV*等視覺庫實現了加速和優化[17]。我們利用OpenVINO提供的工具,對算法模型進行了轉換,生成可供OpenVINO使用的相關文件,在硬件平臺上進行了相關測試。硬件平臺于5.1節的測試平臺相同。在CPU模式下,本算法的實時性達到30~33 f/s,可實現實時檢測。如圖6中記錄實時幀率。
針對疫情期間的“體溫監控”系統中雙光(可見+熱紅外)人臉檢測算法對硬件依賴性較強,本文提出了一種基于MobileNet-SSD網絡的紅外人臉檢測算法,該算法直接對熱紅外圖像進行人臉檢測,極大程度的降低了熱紅外人臉檢測對于采集設備的依賴。對比市面上使用的“測溫監控系統”中雙光人臉檢測算法,本算法在中/小尺寸的人臉檢測上,具有一定的優勢,同時檢測精確度也接近雙光檢測精度。通過OpenVINO加速,該算法可以實現實時檢測。但是本算法也存在不足之處,如大尺寸單人檢測條件下,檢測率較低;訓練數據集樣本較少等問題。后期將針對這些不足之處,繼續進行深入的研究。