石 強(qiáng),葛 源,馬樹(shù)波,鄭洪龍,韓娟娟
(中國(guó)核動(dòng)力研究設(shè)計(jì)院,成都 610005)
室內(nèi)場(chǎng)景人體檢測(cè)是指在24h 不間斷對(duì)室內(nèi)環(huán)境進(jìn)行監(jiān)控中實(shí)現(xiàn)對(duì)人體的識(shí)別。室內(nèi)場(chǎng)景中,由于人體和物體或者人體和人體相互遮擋也為人體識(shí)別檢測(cè)帶來(lái)了困難。基于將候選框提取、特征提取、目標(biāo)分類(lèi)、目標(biāo)定位統(tǒng)一于一個(gè)神經(jīng)網(wǎng)絡(luò)中的YOLO v3 網(wǎng)絡(luò),構(gòu)建室內(nèi)場(chǎng)景識(shí)別數(shù)據(jù)集,聚類(lèi)anchor 的個(gè)數(shù)和規(guī)格,改進(jìn)候選框分布,以及優(yōu)化網(wǎng)絡(luò)檢測(cè)策略,提高人體識(shí)別在紅外圖片和遮擋情況下的精確度和實(shí)時(shí)性。
圖1 YOLO v3結(jié)構(gòu)圖Fig.1 Structure of Yolo v3
圖1 是YOLO v3 網(wǎng)絡(luò)的整體網(wǎng)絡(luò)架構(gòu),YOLO v3 網(wǎng)絡(luò)總共有106 層,由殘差模塊、卷積層、上采樣層,以及YOLO 層構(gòu)成。
YOLO v3 是將網(wǎng)絡(luò)中低高層的特征,通過(guò)卷積核多個(gè)矩陣的拼接工作,創(chuàng)建3 個(gè)尺度的預(yù)測(cè)輸出。殘差模塊是為了解決由于網(wǎng)絡(luò)加深導(dǎo)致的梯度爆炸和梯度消失的問(wèn)題,通過(guò)跳躍連接,它可以直接將原始信息傳送到后面的層中去,同時(shí)保證了參數(shù)的量不會(huì)太大;上采樣的作用是將特征矩陣按倍數(shù)擴(kuò)大,使用最臨近插值算法將底層特征信息和上層特征信息進(jìn)行融合;YOLO 層進(jìn)行最終的預(yù)測(cè)檢測(cè)。
YOLO v3 采用了Darknet-53 的網(wǎng)絡(luò)結(jié)構(gòu)(含有5 組殘差模塊)來(lái)提取特征。其網(wǎng)絡(luò)結(jié)構(gòu)采用了橫縱交叉結(jié)構(gòu),并采用了連串的3×3 和1×1 卷積。其中,3×3 的卷積增加通道數(shù),而1×1 的卷積在于壓縮3×3 卷積后的特征表示,同時(shí)Darknet-53 為了防止池化帶來(lái)的低級(jí)特征的丟失,采用了全卷積層,并且引入了residual 結(jié)構(gòu)。這意味著網(wǎng)絡(luò)結(jié)構(gòu)可以更好地利用GPU,從而使其評(píng)估效率更高、速度更快。Darknet-53 作為特征提取層,最終每個(gè)預(yù)測(cè)任務(wù)得到的特征大小為[3×(4+1+C)]。每個(gè)grid cell 預(yù)測(cè)3 個(gè)預(yù)測(cè)框,4 代表4 是邊界框中心坐標(biāo)bx,by,以及邊界框bw,bh,1 代表預(yù)測(cè)值,C 代表預(yù)測(cè)類(lèi)別。最終YOLO v3 可以獲取(16×10+32×20+64×40)個(gè)特征向量。
YOLO v3 網(wǎng)絡(luò)在3 個(gè)特征圖上進(jìn)行目標(biāo)預(yù)測(cè),這些特征圖上的grid cell 可以映射到原圖上的一片區(qū)域。每一個(gè)grid cell 預(yù)測(cè)3 個(gè)bounding box,在訓(xùn)練的時(shí)候,如果ground truth 中某個(gè)object 的中心坐標(biāo)落在哪個(gè)grid cell 中,那么就由該grid cell 來(lái)預(yù)測(cè)該object。在1.2 節(jié)可知,grid預(yù)測(cè)的初始3 個(gè)候選框的尺寸大小和寬高比是固定的,通過(guò)網(wǎng)絡(luò)訓(xùn)練,平移和縮放初始候選框,最終得到逼近真實(shí)值的候選框。bounding box 的坐標(biāo)預(yù)測(cè)方式由如下幾個(gè)公式?jīng)Q定,其中W、H 為圖片的寬度和高度,訓(xùn)練期間使用平方和距離誤差作為損失誤差總和。
其中,cx,cy——相對(duì)于圖像左上角的坐標(biāo);pw,ph——初始候選框的寬度和長(zhǎng)度;——需要網(wǎng)絡(luò)學(xué)習(xí)的參數(shù)。類(lèi)別預(yù)測(cè)方使用多標(biāo)簽分類(lèi),因此網(wǎng)絡(luò)結(jié)構(gòu)上采用多標(biāo)簽多分類(lèi)的邏輯回歸層。在一些復(fù)雜場(chǎng)景下,一個(gè)object 可能屬于多個(gè)類(lèi),需要用邏輯回歸層來(lái)對(duì)每個(gè)類(lèi)別做二分類(lèi)。邏輯回歸層主要用到sigmoid 函數(shù),該函數(shù)可以將輸入約束在0 ~1 的范圍內(nèi)。因此,當(dāng)一張圖像經(jīng)過(guò)特征提取后的某一類(lèi)輸出經(jīng)過(guò)sigmoid 函數(shù)約束后,如果大于0.5,就表示屬于該類(lèi)。
為了適應(yīng)室內(nèi)場(chǎng)景中的人體檢測(cè)以及解決人體檢測(cè)中人體相互遮擋的問(wèn)題,以曠世的CrowdHuman 數(shù)據(jù)集為基礎(chǔ)數(shù)據(jù)集,同時(shí)使用攝像頭在不同時(shí)段、不同角度、不同光照強(qiáng)度下對(duì)不同數(shù)量人體進(jìn)行拍攝,共得到1200 張圖片。其中,有855 張彩色圖片和345 張紅外夜視圖片,總共包含6345 個(gè)人體目標(biāo)。最終,使用其中的1000 張構(gòu)成原始訓(xùn)練集TR_A,包含5076 個(gè)人體,剩余200 張圖片構(gòu)成測(cè)試集,包含1269 個(gè)人體,構(gòu)成原始測(cè)試集TE_A。為了減小光照對(duì)圖像的影響,增加樣本圖像光照的多樣性,使用自適應(yīng)直方圖均衡化對(duì)原始訓(xùn)練集TR_A 進(jìn)行處理,最終得到TR_B。為了更好地讓網(wǎng)絡(luò)學(xué)習(xí)到人體特征,對(duì)訓(xùn)練樣本進(jìn)行擴(kuò)增,擴(kuò)增方式包括對(duì)樣本進(jìn)行±100,±200的旋轉(zhuǎn)和水平鏡像等操作,并對(duì)處理后的圖像進(jìn)行居中剪切,若處理后的圖像目標(biāo)殘缺不全則舍棄,得到樣本數(shù)據(jù)集TR_C。為了后面的對(duì)比試驗(yàn),添加了一個(gè)1000 張全部為彩色圖片的數(shù)據(jù)集TR_D。
室內(nèi)場(chǎng)景中,人體檢測(cè)的一大難點(diǎn)是對(duì)密集人群的檢測(cè),人體相互遮擋或者人體與家具相互遮擋給檢測(cè)帶來(lái)的困難。針對(duì)此種情況,提出使用訓(xùn)練樣本目標(biāo)前景區(qū)域標(biāo)注加強(qiáng)人體前景區(qū)域卷積特征學(xué)習(xí)的方法。
首先,通過(guò)手工標(biāo)注方法,對(duì)目標(biāo)背景區(qū)域的像素置零,獲得目標(biāo)前景區(qū)域樣本,并使用目標(biāo)前景區(qū)域樣本對(duì)改進(jìn)后的YOLO v3_H 網(wǎng)絡(luò)進(jìn)行訓(xùn)練,降低邊界框內(nèi)非前景特征的干擾,以增強(qiáng)網(wǎng)絡(luò)對(duì)前景特征的學(xué)習(xí),得到人體檢測(cè)網(wǎng)絡(luò)。樣本標(biāo)注時(shí),將標(biāo)注邊界框內(nèi)目標(biāo)背景區(qū)域的像素置0,而前景區(qū)域像素保持不變。本文使用matlab 和labelimg 標(biāo)注工具對(duì)訓(xùn)練集進(jìn)行標(biāo)注,首先對(duì)其中的3955個(gè)人體目標(biāo)(遮擋面積<0.5)進(jìn)行標(biāo)注,然后對(duì)剩余的1121 個(gè)相互遮擋的目標(biāo)進(jìn)行前景區(qū)域標(biāo)注,標(biāo)注完成后生成VOC 格式的xml 文件,然后將xml 文件轉(zhuǎn)換成一個(gè)yolo格式的txt 文件,最終的CrowdHuman 數(shù)據(jù)集添加部分見(jiàn)表1。最終的FHDRC 數(shù)據(jù)集為CrowdHuman 數(shù)據(jù)集+添加數(shù)據(jù)集。
表1 CrowdHuman數(shù)據(jù)集訓(xùn)練集添加部分Table 1 Added part of CrowdHuman dataset training set
YOLO v3 為了解決小目標(biāo)的檢測(cè)問(wèn)題,引入了三級(jí)預(yù)測(cè)的思想,YOLO v3 的圖像分成N×N 的網(wǎng)絡(luò),比如predict1 的特征圖為13×13,predict2 的特征圖為26×26,predict3 的特征圖為52×52,然后每一個(gè)grid cell 預(yù)測(cè)3bounding box。但是室內(nèi)中的人體成像具有自己的特點(diǎn),這一種侯選框在X 軸和Y 軸的等密度分布不適合人體檢測(cè)。為了分析室內(nèi)場(chǎng)景中人體成像的特點(diǎn),隨機(jī)在室內(nèi)數(shù)據(jù)集中抽取了200 個(gè)人體目標(biāo),然后隨機(jī)平均編入10 組,分別求出它們的寬高比的平均值。經(jīng)分析可知,每一組的人體成像的高寬比平均值都大于1,因此可以發(fā)現(xiàn)人體成像具有高寬比大的特點(diǎn),這就意味著候選框在X 軸和Y 軸的等密度分布并不有利于人體識(shí)別,在室內(nèi)人群密集的時(shí)候,會(huì)導(dǎo)致漏檢率升高。為了解決這個(gè)問(wèn)題,增加候選框在X軸上的密度,降低候選框在Y 軸的密度。最終,在predict1的特征圖修改為16×10,predict2 的特征圖修改為32×20,predict3 的特征圖修改為64×40。
YOLO v3 的候選框尺寸使用了anchor,anchor 是具有一組固定尺寸的初始候選框。YOLO v3 通過(guò)K-means 算法對(duì)數(shù)據(jù)集的標(biāo)注框進(jìn)行聚類(lèi),最終得到9 種候選框尺寸。但是對(duì)于室內(nèi)場(chǎng)景中,這些尺寸未必是最好的結(jié)果,所以對(duì)1.1 節(jié)設(shè)計(jì)的室內(nèi)人體數(shù)據(jù)集采用了k-means 算法,對(duì)手工標(biāo)注的人體目標(biāo)框進(jìn)行聚類(lèi),對(duì)候選框?qū)捀吲c單位網(wǎng)格長(zhǎng)度之比進(jìn)行聚類(lèi)。預(yù)測(cè)框和真實(shí)框的IOU 是反映預(yù)測(cè)框與真實(shí)框差異的重要指標(biāo),IOU 值越大,表明兩者差異越小,“距離”越近。
圖2 室內(nèi)場(chǎng)景人體識(shí)別數(shù)據(jù)集邊界聚類(lèi)Fig.2 Boundary clustering of human body recognition data set in indoor scene
在聚類(lèi)的時(shí)候,分別取了anchor 的個(gè)數(shù)為1,2,3,4,5。根據(jù)圖2 可知,當(dāng)anchor 個(gè)數(shù)為3 的時(shí)候,算法的精度和速度綜合效果較好,最終仍然取anchor 為3,得到了9 種 聚 類(lèi) 結(jié) 果:(15×13),(19×33),(20×43),(31×61),(62×45),(59×119),(116×90),(152×198),(375×327)。
在采集圖片和ROI 提取的過(guò)程中,難免會(huì)受到外界和設(shè)備的噪聲,為了提升人體識(shí)別效果,首先對(duì)圖像進(jìn)行去噪處理顯得十分必要。在室內(nèi)場(chǎng)景中,可見(jiàn)光下的圖片受噪聲的影響較小,因此主要討論在光照條件不足的情況下,對(duì)紅外圖片噪聲的處理。紅外噪聲的產(chǎn)生主要是在由紅外波的相互干涉,引起散斑噪聲。事實(shí)上,乘性噪聲的影響遠(yuǎn)遠(yuǎn)大于加性噪聲。因此,可以認(rèn)為紅外圖片的主要噪聲是乘性噪聲。由于一次均值去噪效果較差,為了加強(qiáng)去噪效果,采用兩次均值去噪處理。
在室內(nèi)場(chǎng)景中,對(duì)人體的檢測(cè)更關(guān)心運(yùn)動(dòng)場(chǎng)景下的人體識(shí)別。為了節(jié)省檢測(cè)時(shí)間和資源,先使用三幀差分法進(jìn)行運(yùn)動(dòng)物體識(shí)別,進(jìn)行運(yùn)動(dòng)區(qū)域ROI 提取。如果三幀差分法沒(méi)有檢測(cè)到運(yùn)動(dòng)物體區(qū)域,則間隔一段時(shí)間采集一張圖片送入訓(xùn)練好的人體檢測(cè)器進(jìn)行檢測(cè),反之如果三幀差分法檢測(cè)到運(yùn)動(dòng)目標(biāo),則找出物體所在邊界后,對(duì)邊界進(jìn)行適當(dāng)?shù)臄U(kuò)充,剪出運(yùn)動(dòng)物體區(qū)域,然后將非運(yùn)動(dòng)區(qū)域的像素置零,將剪輯的區(qū)域利用YOLO v3_H 進(jìn)行人體檢測(cè)。
圖3 紅外圖片人體檢測(cè)效果對(duì)比Fig.3 Comparison of human body detection effect in infrared images
經(jīng)過(guò)構(gòu)建人體識(shí)別數(shù)據(jù)集FHDRC,以及進(jìn)行YOLO v3_H 的網(wǎng)絡(luò)改進(jìn)訓(xùn)練,然后進(jìn)行圖片預(yù)處理后,得到室內(nèi)場(chǎng)景人體識(shí)別方法YOLO_v3_H。在檢測(cè)輸出處理過(guò)程中,采用目標(biāo)置信度閾值過(guò)濾邊界框,然后使用非極大值抑制獲取最終的目標(biāo)框,最后使用準(zhǔn)確率和召回率以及運(yùn)行時(shí)間來(lái)驗(yàn)證改進(jìn)后方法的有效性。準(zhǔn)確率用P 表示,召回率用R 表示,漏檢率用L 表示。如果是目標(biāo)窗口的判斷正確(IOU >0.6)的計(jì)數(shù)為T(mén)y,如果不是目標(biāo)窗口的判斷正確的計(jì)數(shù)為T(mén)n。采集200 張紅外夜視圖片,然后分別使用YOLO v3_H,YOLO,YOLO v3 和HOG+SVM 進(jìn)行測(cè)試,最終結(jié)果如圖3 所示。
實(shí)驗(yàn)證明,YOLO_v3_H 在室內(nèi)場(chǎng)景中,對(duì)紅外圖片的人體檢測(cè)比經(jīng)典的人體檢測(cè)算法HOG+SVM 的P 提升46.4%,同時(shí)比haar+adaboost 的P提升了56.4%,比YOLO v2P 值提高了8.2%,比YOLO v3 提高了4.1%。為了驗(yàn)證YOLO v3_H 對(duì)密集人群的人體識(shí)別效果,分別利用YOLO v3_H,YOLO v3,YOLO v2 和faster_CNN 和HOG+SVM 對(duì)FHDRC 的測(cè)試進(jìn)行檢測(cè),然后使用漏檢率進(jìn)行性能測(cè)試。實(shí)驗(yàn)證明,YOLO_v3_H 漏檢率基本和YOLO_v3 持平,但是比YOLO_v2 的漏檢率低17.9%,比f(wàn)aster_cnn 低21.3%,比傳統(tǒng)算法HOG+SVM 低42.3%。圖4 為漏檢率曲線(xiàn)。
將目標(biāo)檢測(cè)的最新研究成果YOLO v3 應(yīng)用到室內(nèi)場(chǎng)景中,為室內(nèi)人體識(shí)別制作了人體識(shí)別數(shù)據(jù)集,聚類(lèi)得出新的anchor。根據(jù)人體成像的特點(diǎn),改進(jìn)了候選框在X 軸和Y 軸的分布密度,針對(duì)常用算法在紅外圖片識(shí)別精度不佳的情況下,采取了紅外圖片和彩色圖片混合訓(xùn)練的策略,同時(shí)改進(jìn)了監(jiān)控過(guò)程中將每一張圖片放入網(wǎng)絡(luò)檢測(cè)造成的資源浪費(fèi),改進(jìn)檢測(cè)策略。在場(chǎng)景靜止的情況下,使用隔一段時(shí)間采集圖片進(jìn)行檢測(cè),如果場(chǎng)景中有運(yùn)動(dòng)物體,則采取使用運(yùn)動(dòng)算法提取ROI 進(jìn)行檢測(cè)。實(shí)驗(yàn)證明,提出的方法對(duì)場(chǎng)景中的人體檢測(cè)有著極高的識(shí)別準(zhǔn)確率和較低的漏檢率,也提高了資源利用效率。
圖4 漏檢率效果對(duì)比Fig.4 Effect Comparison of missing detection rate