張 震,李浩方,李孟洲,馬軍強
(鄭州大學(xué) 電氣工程學(xué)院,河南 鄭州 450001)
隨著城市社區(qū)的快速發(fā)展,社區(qū)視頻監(jiān)控管理系統(tǒng)對于提升社區(qū)管理效率和保障社區(qū)安全起著重要的作用[1]。然而現(xiàn)有社區(qū)視頻監(jiān)控僅采用人臉相機在特定的角度對小區(qū)出入口抓拍人臉數(shù)據(jù),忽略了具有潛在價值的人體其他信息。因此,若能利用人臉相機準(zhǔn)確快速地獲取其他人體信息,并能與現(xiàn)有視頻管理系統(tǒng)對接,就可以提升社區(qū)公共安全管理能力和精細化管理水平。
隨著深度學(xué)習(xí)技術(shù)在目標(biāo)檢測領(lǐng)域的快速發(fā)展,現(xiàn)有目標(biāo)檢測算法可以分為兩類。第一類是雙階段模型,該類模型首先用窗口標(biāo)定算法生成一系列待篩選目標(biāo)區(qū)域,然后通過深度神經(jīng)網(wǎng)絡(luò)對目標(biāo)區(qū)域進行特征訓(xùn)練,最后用所訓(xùn)練出來的模型選出最優(yōu)的目標(biāo)邊界框。主要代表網(wǎng)絡(luò)有R-CNN[2]、Fast R-CNN[3]、Faster R-CNN[4]、R-FCN[5]等。這些算法準(zhǔn)確率較高,但提取出大量冗余特征,算法比較耗時。第二類是單階段模型,該類模型不經(jīng)過窗口預(yù)標(biāo)定,而是直接利用整張圖像一次性預(yù)測出目標(biāo)的位置并標(biāo)價邊框,代表網(wǎng)絡(luò)有YOLO[6]、SSD[7]等。這些檢測算法采用端到端的目標(biāo)檢測,具有檢測效率高、原理簡單和背景誤檢率低等特點。其中具有代表性的是Redmon等[8]在2018年提出的YOLOv3檢測算法,其在COCO數(shù)據(jù)集上51 ms 內(nèi)mAP為57.9%[9]。
為利用人臉相機準(zhǔn)確檢測人體信息,筆者先采用K-means++[10]算法獲得適應(yīng)于自制數(shù)據(jù)集的先驗框;再選用一種新的邊界框回歸損失函數(shù)GIoU[11]提高檢測性能;然后,使用多尺度方式[12]進行模型訓(xùn)練;最后,通過調(diào)用人體屬性識別模塊實現(xiàn)對人體信息準(zhǔn)確檢測。經(jīng)實驗驗證,該方法在快速檢測人體的同時,可以準(zhǔn)確識別人體其他屬性信息。
YOLOv3算法通過特征提取網(wǎng)絡(luò)對輸入的圖像提取特征,得到一定大小的特征圖。然后將輸入的圖片分割成S×S個網(wǎng)格,其中每個網(wǎng)格中預(yù)測B個邊界框,對C類目標(biāo)進行檢測。網(wǎng)格中邊界框不僅要確定自身位置,還要預(yù)測一個置信度,置信度由每個網(wǎng)格中包含檢測目標(biāo)概率和輸出邊界框準(zhǔn)確度共同確定。若預(yù)測目標(biāo)中心落在該網(wǎng)格中,則該網(wǎng)格負(fù)責(zé)預(yù)測目標(biāo)。整張圖像目標(biāo)位置類別預(yù)測如式(1)所示:
Y=A×A×B×(5+C)。
(1)
式中:Y表示圖像目標(biāo)位置類別預(yù)測張量;A表示網(wǎng)格數(shù);B表示邊界框數(shù)量;5表示4個邊框坐標(biāo)數(shù)值和1個邊框置信度數(shù)值;C表示對象類別。
YOLOv3不僅借鑒了FPN[13]架構(gòu),采用3個尺度對不同大小的目標(biāo)進行預(yù)測,提升了小物體的檢測效果,還采用多個獨立的邏輯logistic分類器替換softmax[14]函數(shù),以計算輸入屬于特定標(biāo)簽的可能性,每個標(biāo)簽使用二元交叉熵?fù)p失降低了計算復(fù)雜度。
YOLOv3算法采用Darknet-53作為主干網(wǎng)絡(luò)。該網(wǎng)絡(luò)主要是由一系列的1×1和3×3卷積層組合而成的,并且每個卷積層后增加了批次歸一化層,可以有效防止過擬合現(xiàn)象。其次,網(wǎng)絡(luò)借鑒ResNet[15]殘差網(wǎng)絡(luò)結(jié)構(gòu),通過殘差層實現(xiàn)跨層數(shù)據(jù)更快地向前傳播。最后,網(wǎng)絡(luò)使用5個步長為2的3×3卷積層替換上代網(wǎng)絡(luò)中的最大池化層實現(xiàn)下采樣。該主干網(wǎng)絡(luò)在ImageNet數(shù)據(jù)集中進行測試,測試結(jié)果如表1所示。表中ATop-1和ATop-5分別表示模型在圖片識別時前1個和前5個結(jié)果中有一個正確的準(zhǔn)確率,計算量表示浮點運算的次數(shù),運算速度是每秒浮點運算的次數(shù),幀速度為每秒刷新圖片的幀數(shù)。
表1 特征提取網(wǎng)絡(luò)Table 1 Feature extraction network
由表1可知,Darknet-53相比Darknet-19[6]檢測的準(zhǔn)確率有了進一步的提升,但是運算速度有所降低,與ResNet-152的網(wǎng)絡(luò)性能基本一致,并且目標(biāo)檢測速度提升到78 f/s,滿足目標(biāo)檢測實時性要求。
現(xiàn)有人體目標(biāo)檢測存在人體信息獲取不完整和檢測速度較慢等問題,因此,為得到更適合人體目標(biāo)檢測的方法并且提升運算速度,對人體目標(biāo)檢測網(wǎng)絡(luò)重新進行設(shè)計,整體檢測框架如圖1所示。
本文使用新的邊界框回歸損失函數(shù)GIoU和K-means++算法聚類算法,經(jīng)過多尺度訓(xùn)練得到人體檢測模塊。視頻監(jiān)控再通過人體檢測模塊與智能應(yīng)用平臺信息交互,實現(xiàn)人體目標(biāo)屬性信息的檢測。
圖1 整體框架圖Figure 1 Overall frame diagram
訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型時,批次歸一化利用小批量上的均值和標(biāo)準(zhǔn)差,不斷地調(diào)整神經(jīng)網(wǎng)絡(luò)中間輸出,從而使整個神經(jīng)網(wǎng)絡(luò)在各層的中間輸出的數(shù)值更加穩(wěn)定,同時可以加速網(wǎng)絡(luò)的收斂并控制過擬合產(chǎn)生。批次歸一化雖然可以使神經(jīng)網(wǎng)絡(luò)的訓(xùn)練更容易,但是在網(wǎng)絡(luò)向前推理時會增加一些運算,一定程度上占用了更多顯存。因此,將批次歸一化層與原有卷積層相整合構(gòu)建新的卷積層,這樣有利于提升模型向前推理的速度。
由于YOLOv3算法存在網(wǎng)絡(luò)層數(shù)的加深使模型復(fù)雜和特征消失等問題,因此筆者在YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)上適當(dāng)減少YOLO層的卷積次數(shù),得到新的網(wǎng)絡(luò)結(jié)構(gòu)。改進網(wǎng)絡(luò)先將輸入圖像縮放為通道為3、長和寬均為416的統(tǒng)一參數(shù),然后通過Darknet-53特征提取網(wǎng)絡(luò)結(jié)構(gòu)提取特征,對采集到的特征采用1×1和3×3的卷積進行卷積操作,降低計算量以及融合特征之間的通道數(shù),得到一個小尺度YOLO層一個13×13×255維的輸出量;然后對小尺度YOLO層進行上采樣,與Darknet-53中的卷積第45層進行拼接,再進行2組1×1和3×3的卷積進行卷積操作,得到一個中尺度YOLO層一個26×26×255維的輸出量;接著將得到的中尺度YOLO層進行上采樣,與Darknet-53中的卷積第29層進行拼接,再進行2組1×1和3×3的卷積進行卷積操作,得到一個大尺度YOLO層的一個52×52×255維輸出量;最后,將已得到的3個尺度YOLO層進行邊界框和類別的預(yù)測。改進后的網(wǎng)絡(luò)一共有102層,由70層卷積層、23層殘差層、4層特征層、2層上采樣層和3層YOLO層組成,改進的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 改進的網(wǎng)絡(luò)結(jié)構(gòu)Figure 2 Improved network structure
目標(biāo)檢測任務(wù)中,預(yù)測框與真實框之間的交并比IoU不僅可以反映預(yù)測檢測框與真實檢測框的檢測效果,還是評價網(wǎng)絡(luò)性能指標(biāo)的重要參數(shù)。IoU[16]定義如下:
(2)
式中:A為目標(biāo)的預(yù)測框;B為目標(biāo)的真實框;IoU是真實框和預(yù)測框面積的交并比。
現(xiàn)有網(wǎng)絡(luò)常采用IoU作為損失函數(shù),遇到軸對齊的二維邊界框不相交情況,依據(jù)IoU計算公式,此時IoU為零,無法進行模型訓(xùn)練。因此Rezatofighi等[11]提出了一種既能維持IoU尺度不變性,還能在目標(biāo)重疊時更好地反映預(yù)測框和真實框的重合度的評價指標(biāo)GIoU,其定義公式如下:
(3)
式中:A為目標(biāo)的預(yù)測框;B為目標(biāo)的真實框;C為預(yù)測框和真實框的最小框面積。
由式(3)可知,GIoU引入了包含A、B兩個形狀的C,所以當(dāng)A、B不重合時,依然可以進行邊界框回歸優(yōu)化,因此采用GIoU構(gòu)造邊界框回歸損失函數(shù)。若已知預(yù)測框和真實框的坐標(biāo)如下:
(4)
其邊界框回歸損失函數(shù)的計算過程如下。
步驟3計算Bp和Bg的重疊面積:
步驟4找到可以包含Bp和Bg的最小框BC:
步驟8計算損失。LGIoU=1-GIoU。
YOLOv3網(wǎng)絡(luò)中的9個先驗框是采用K-means算法在COCO數(shù)據(jù)集下聚類產(chǎn)生的,不能應(yīng)用于本文的數(shù)據(jù)集。并且由于K-means[10]算法在運算過程中,初始聚類中心是隨機產(chǎn)生的,因此存在聚類中心不斷變化,導(dǎo)致每次運行獲得不同的聚類效果,從而影響模型的檢測效果。為解決初始聚類中心不斷變化的問題,筆者采用K-means++算法進行先驗框的聚類。聚類過程如下。
步驟1隨機選取數(shù)據(jù)集中的一個錨定框的寬和高作為第一個聚類中心。
步驟2計算數(shù)據(jù)集中每個錨定框坐標(biāo)與已知聚類中心的距離,再根據(jù)概率重新選擇下一個聚類中心。
步驟3重復(fù)第2步的計算,直到選出K個聚類中心。
步驟4重新計算數(shù)據(jù)集中的每個錨定框坐標(biāo)與聚類中心距離,并根據(jù)最小距離重新進行分類劃分。
步驟5計算每個分類的中心值,直到聚類中心的位置不再變化時結(jié)束。
對自制數(shù)據(jù)集重新聚類依次獲取的9組先驗框為(76,23),(81,37),(89,46),(102,61),(113,68),(119,71),(150,83),(164,89)和(170,95)。
海康威視螢石開放平臺一方面能提供人體目標(biāo)屬性圖像識別技術(shù),并且對分析任務(wù)提供同步和異步兩種接入方式。同步分析任務(wù)的接入方式較為簡便,但是整體的性能比較受限,適用于小批量的圖片檢測;異步分析任務(wù)則可以提供更大的分析吞吐量,適用于大批量的任務(wù)提交。另外一方面,開放平臺對人體目標(biāo)屬性有較成熟的識別方案,且對人體目標(biāo)屬性結(jié)構(gòu)化數(shù)據(jù)如人臉目標(biāo)位置、年齡段、性別、是否戴眼鏡、是否背包、是否拎東西、發(fā)型、上衣類型、下衣類型、上衣顏色、下衣顏色和是否騎車等,有較高的檢測速度和識別率。
基于以上考慮,采用開放平臺中的異步分析任務(wù)方式進行人體目標(biāo)屬性的識別。首先,使用改進的網(wǎng)絡(luò)配合人臉相機截取到監(jiān)控區(qū)域的人體圖像;其次,將截取圖像使用基于ISAPI協(xié)議的圖片任務(wù)分析接口,提交異步圖片分析任務(wù)請求中截取圖片的發(fā)送地址;最后,開放平臺進行人體目標(biāo)屬性的分析任務(wù)。當(dāng)平臺分析完成后,分析結(jié)果會通過TCP的方式發(fā)送格式為ISAPI協(xié)議所規(guī)定的JSON報文;接著使用Python將JSON報文中人體目標(biāo)檢測屬性的信息進行提取和展示;最后存儲到自建的ACCESS社區(qū)人體信息數(shù)據(jù)庫中。調(diào)用人體特征識別流程圖如圖3所示。
圖3 人體特征調(diào)用流程圖Figure 3 Flow chart of human character recognition
為獲得準(zhǔn)確的人體信息,將3個數(shù)據(jù)集中的人體圖片整合為標(biāo)準(zhǔn)PASCAL VOC數(shù)據(jù)集格式。其中第一部分采用的是PASCAL VOC2012數(shù)據(jù)集中人體的圖片共4 015張,標(biāo)注框數(shù)量5 717個;第二部分采用的是COCO數(shù)據(jù)集中人體的圖片,采用了2 693張圖片,標(biāo)注框數(shù)量11 004個;第三部分?jǐn)?shù)據(jù)采用鄭州市某視頻中心監(jiān)控視頻,采用labelImg工具對自制人體數(shù)據(jù)集進行人工標(biāo)注,人工標(biāo)注照片3 292張,標(biāo)注框數(shù)量4 326個??偣?0 000張圖片,標(biāo)注框21 047個。
在訓(xùn)練和測試前,先將數(shù)據(jù)集中圖片隨機分為8 000張訓(xùn)練集和2 000張測試集。然后,再把訓(xùn)練集和測試集中照片統(tǒng)一縮放分成4個不同的尺寸組。其中A組320×320、B組416×416、C組512×512和D組608×608。數(shù)據(jù)集圖片如下圖4所示。
圖4 實驗數(shù)據(jù)集Figure 4 Experimental dataset
本實驗在PC端完成,實驗平臺使用操作系統(tǒng)為Ubuntu 16.04,顯卡為NVIDIA GeForce 2080 Ti。
訓(xùn)練過程中采取多尺度訓(xùn)練的策略,每10個批次隨機挑選訓(xùn)練集中的一組尺寸進行迭代,共進行50 000次迭代。其中學(xué)習(xí)率為0.001 4,在迭代到25 000、40 000和45 000次時,學(xué)習(xí)率變?yōu)橹暗氖种弧F渲杏?xùn)練參數(shù)批量大小(batch)為64,動量參數(shù)(momentum)為0.9。
為驗證改進網(wǎng)絡(luò)和改進目標(biāo)損失函數(shù)對目標(biāo)檢測算法的影響,筆者采用對比實驗進行驗證。第一組為YOLOv3網(wǎng)絡(luò)分別采用MSE(meansquarederror)、IoU和GIoU邊界框回歸損失函數(shù)進行對比;第二組為均采用IoU損失函數(shù)的改進網(wǎng)絡(luò)與YOLOv3網(wǎng)絡(luò)進行對比;第三組為改進網(wǎng)絡(luò)采用GIoU邊界損失函數(shù)與YOLOv3網(wǎng)絡(luò)采用IoU進行對比,對比結(jié)果如表2所示。
表2 邊界框回歸損失函數(shù)Table 2 Bounding-box regression loss function
由表2可知,第一組YOLOv3網(wǎng)絡(luò)采用GIoU邊界框回歸損失函數(shù)相比采用MSE和IoU作為損失函數(shù),檢測準(zhǔn)確率mAP分別提升了7.1% 和1.7%,說明采用GIoU損失函數(shù)可以提升網(wǎng)絡(luò)檢測性能。第二組對比實驗中,改進網(wǎng)絡(luò)的mAP提升了0.4%,說明改進網(wǎng)絡(luò)也能提升網(wǎng)絡(luò)性能。第三組實驗將改進網(wǎng)絡(luò)采用GIoU邊界框回歸損失函數(shù)與YOLOv3采用IoU邊界框回歸損失函數(shù)相比,mAP提升了4.6%。說明改進網(wǎng)絡(luò)結(jié)構(gòu)與改進邊界框回歸損失函數(shù)可以進一步提升網(wǎng)絡(luò)的性能。不同網(wǎng)絡(luò)與不同邊界框損失函數(shù)訓(xùn)練過程如圖5所示。
圖5 對比實驗變化Figure 5 Comparative experimental change
改進網(wǎng)絡(luò)采用GIoU和YOLOv3網(wǎng)絡(luò)采用IoU兩種邊界框回歸損失函數(shù)對自制數(shù)據(jù)集的檢測效果如圖6所示。其中藍色為改進網(wǎng)絡(luò)采用GIoU邊界框回歸損失函數(shù),紅色為YOLOv3網(wǎng)絡(luò)采用IoU損失函數(shù)。由圖6可知,藍色框不僅檢測精度略高于紅色框,還能更準(zhǔn)確地框住待檢測的人體目標(biāo),一定程度上減少因框住人體目標(biāo)不完整而造成待檢測人體信息缺失的問題。
圖6 邊界框檢測對比效果Figure 6 Bounding-box contrast effect
訓(xùn)練過程中采用多尺度訓(xùn)練的方法,可以增強模型對不同分辨率檢測的魯棒性。筆者使用YOLOv3網(wǎng)絡(luò)采用IoU損失函數(shù)和改進網(wǎng)絡(luò)采用GIoU損失函數(shù)對測試集中4組不同尺寸圖片進行對比實驗,實驗結(jié)果以平均mAP為指標(biāo),對比結(jié)果如表3所示。
由表3可知,首先從不同尺寸圖像上的檢測指標(biāo)上看,改進網(wǎng)絡(luò)使用GIoU損失函數(shù)比YOLOv3使用IoU損失函數(shù)要高。其次,采取增大輸入照片尺度能夠提升人體目標(biāo)檢測性能。最后采用多尺度訓(xùn)練能夠使模型對不同尺寸圖像具有魯棒性。改進網(wǎng)絡(luò)使用GIoU回歸損失函數(shù)檢測效果如圖7所示。
表3 目標(biāo)敏感性分析Table 3 Performance comparison of different algorithms
圖7 改進網(wǎng)絡(luò)檢測效果Figure 7 Improved network detection effect
開放平臺對人體目標(biāo)屬性檢測的過程為:先檢測圖片中的人體目標(biāo)再檢測人體屬性,平均一張監(jiān)控圖片的檢測時間在2.9 s,不能滿足檢測實時性要求。因此,為滿足檢測任務(wù)實時性要求,采用改進網(wǎng)絡(luò)先檢測監(jiān)控視頻中的人體目標(biāo)并進行截圖后,再使用平臺對圖片中的人體目標(biāo)進行檢測,最后再對報文進行解析并保存到自制數(shù)據(jù)庫中。 當(dāng)有正面遮擋時,以截取人臉為主要存儲信息,同時其他人體信息捕捉超過檢測屬性的40%即為有效信息,避免冗余數(shù)據(jù),易于數(shù)據(jù)管理。本文方法對監(jiān)控視頻中一個人體目標(biāo)進行人體屬性檢測并顯示的平均時間為1.15 s,不僅檢測效率大幅提升了60.34%,還在一定程度上減少了計算資源的浪費。通過MATLAB構(gòu)建GUI界面進行展示的檢測效果如圖8所示。
圖8 調(diào)用分析顯示效果Figure 8 The show of call analysis
由顯示效果可知,在實時監(jiān)控下借用人臉相機應(yīng)用本文方法,既能使用人臉相機獲取人臉照片數(shù)據(jù),還能獲取目標(biāo)人體的其他屬性數(shù)據(jù)(如:性別、年齡、衣服類型、有無眼鏡、有無電話等)。并且本文方法對采集到人體數(shù)據(jù)直接解析到自建的ACCESS社區(qū)人體信息數(shù)據(jù)庫中,解決了實驗平臺中數(shù)據(jù)庫資源不能直接調(diào)用的問題,真正地實現(xiàn)了視頻數(shù)據(jù)的結(jié)構(gòu)化描述。自建的社區(qū)人體信息數(shù)據(jù)庫不僅可以實現(xiàn)大規(guī)模數(shù)據(jù)實時存儲和查詢的要求,還能提升社區(qū)對于日常監(jiān)控管理的水平。
將改進后的網(wǎng)絡(luò)與Faster R-CNN[4]、SSD[7]和YOLOv3[8]網(wǎng)絡(luò)在自制數(shù)據(jù)集上進行性能實驗對比,以mAP以及每秒刷新圖片的幀數(shù)作為檢測評價指標(biāo),對比結(jié)果如表4所示。
表4 不同算法的性能對比Table 4 Performance comparison of different algorithms
由表4可知,改進網(wǎng)絡(luò)mAP數(shù)值不但略高于Faster R-CNN,識別幀率還是其7.5倍。其次,改進網(wǎng)絡(luò)與SSD算法相比,檢測速度略低,但mAP高于后者。最后,改進網(wǎng)絡(luò)相比YOLOv3在準(zhǔn)確率和識別幀速率上都有一定的提升。綜上所述,改進網(wǎng)絡(luò)不僅兼顧了檢測準(zhǔn)確率和檢測速度,還可以較好地完成人體目標(biāo)檢測任務(wù)。
提出一種將改進YOLOv3網(wǎng)絡(luò)和調(diào)用人體信息識別模塊相結(jié)合的人體信息檢測方法。先使用自制數(shù)據(jù)集進行人體目標(biāo)信息的檢測實驗,通過改進網(wǎng)絡(luò)結(jié)構(gòu),使用新的邊界框回歸損失函數(shù)GIoU、K-means++算法進行目標(biāo)框維度聚類以及多尺度訓(xùn)練方式改進YOLOv3網(wǎng)絡(luò),再采用改進后的網(wǎng)絡(luò)實現(xiàn)監(jiān)控視頻下人體目標(biāo)的截取,最后調(diào)用人體目標(biāo)屬性檢測模塊,檢測視頻監(jiān)控下的人體信息并存儲到自建數(shù)據(jù)庫中。本文方法能夠利用現(xiàn)有人臉相機實現(xiàn)快速、準(zhǔn)確地檢測人體信息,并與視頻監(jiān)控管理系統(tǒng)進行對接,可顯著提升社區(qū)視頻監(jiān)控管理系統(tǒng)的精細化管理能力。