康帥,章堅武,朱尊杰,童國鋒
(1.杭州電子科技大學,浙江 杭州 310018;2.紹興供電公司柯橋供電分公司,浙江 紹興 330600)
行人檢測是近年來計算機視覺領域的研究熱點,同時也是目標檢測領域中的難點。其目的是識別和定位圖像中存在的行人,在許多領域中都有廣泛的應用[1]。交通安全方面,無人駕駛汽車通過提前檢測到行人及時避讓來避免交通事故的發生;安防保護方面,通過行人檢測來防止可疑人員進入;公共場所管理方面,通過行人檢測統計人流量數據,優化人力物力等資源的分配[2]。
傳統檢測方法利用的大部分特征都是通過手工設計的。Viola和 Jones[3]在 2001年采用Haar+AdaBoost的人臉檢測框架進行行人檢測。Dalal和 Triggs[4]在2005年提出了 HOG+SVM 的框架來檢測行人。隨后研究者將局部二值模式特征與方向梯度直方圖(histogram of oriented gradient,HOG)相結合,采用隨機森林作分類,構建了能夠處理部分遮擋問題的行人檢測模型[5]。2014年有學者結合了積分直方圖、梯度直方圖和Haar-like等的特征,將聚合通道特征[6]用于行人檢測。雖然上述傳統的檢測方法對行人檢測都有了不同程度的改進,但是檢測效果的好壞取決于設計者的先驗知識,并沒有很好地利用大數據的優勢,對于復雜場景下行人目標多樣性變化的情況算法魯棒性較差。
隨著深度學習的發展,越來越多的研究者開始使用深度學習進行目標檢測。基于深度學習的檢測方法比傳統方法的檢測性能更好,可以自主地從訓練的數據集中學習不同層次的特征。該方法主要可以分成兩類:第一類是基于候選區域的方法,代表性的有2014年提出的基于區域的卷積神經網絡(R-CNN)[7]目標檢測框架,以及在此基礎上改進的快速區域卷積神經網絡(Fast R-CNN)[8]、更快速區域卷積神經網絡(Faster R-CNN)[9]。基于候選區域的檢測方法雖然準確率有所提高,但是檢測速度慢,很難達到實時性的要求。第二類是基于回歸的方法,如YOLO[10]、RetinaNet[11]、SSD[12]等方法,這類方法不再使用區域候選網絡,而將檢測轉化為回歸問題,提高了網絡的檢測速度,但是沒有候選區域方法的檢測效果好。YOLOv4作為YOLO系列算法中較新的模型,在許多方面進行了優化,實現了速度與精度的最佳平衡[13]。為了使YOLOv4算法更適用于特定目標的檢測,研究人員往往對通用的目標檢測算法進行改進。李彬等[14]針對航空發動機部件表面特征不明顯的問題,巧妙增加小卷積層來改進YOLOv4算法,提高了網絡對部件表面缺陷檢測的精度。Lee等[15]提出了一種兩階段時尚服裝檢測方法(YOLOv4 two-phase detection,YOLOv4-TPD)對服裝圖像進行檢測,效果優于原始網絡模型。Wu等[16]為使采摘機器人能夠在復雜背景下快速準確地檢測蘋果,從數據增強和YOLOv4骨干網兩方面進行改進,在降低網絡計算復雜度的同時提高了檢測性能。Fu等[17]針對自建海洋目標數據集檢測效果差的問題,在YOLOv4模型中加入卷積注意力模塊,對海洋小目標、多目標有了更好的檢測效果。本文檢測的目標是行人,主要針對現實復雜視覺場景中檢測精度不高、行人漏檢嚴重的問題,對原始YOLOv4[18]算法做了改進。
現實場景中行人檢測的難點:復雜的光照情況,過暗或者過曝導致無法檢測到行人;不同的天氣情況(如暴雨、霧霾等)影響視線,對檢測存在干擾;擁擠場景中,行人存在不同程度的遮擋,導致漏檢嚴重;行人姿態多變,大小尺寸差別大;圖像模糊、分辨率低等使檢測不準確。
為了提高復雜視覺場景下行人的檢測性能,本文采用改進的YOLOv4算法進行行人檢測的研究。首先,收集不同復雜環境情況下的圖片來構建行人數據集(包括復雜光照、不同天氣、不同程度遮擋、不同視角、低分辨率和模糊圖片等);其次,采用先驗框和聚類中心的交并比(intersection over union,IOU)作為K-means[19]算法參數,對不同尺度的錨框重新聚類,獲得先驗框;再次,在原來的CSPDarkNet53特征提取網絡中加入混合空洞卷積(hybrid dilated convolution,HDC)[20]模塊,提高行人檢測的準確度。同時提出空間鋸齒空洞卷積(spatial jagged dilated convolution,SJDC)結構,代替原算法中的空間金字塔池化(spatial pyramid pooling,SPP)[21]結構,降低復雜視覺場景下行人檢測的漏檢率;最后,使用測試集檢測本文中兩種不同改進后算法的性能,并與參考文獻[14]改進的YOLOv4算法、原YOLOv4算法以及常用的YOLOv3[22]算法進行對比。
YOLOv4算法在之前的算法基礎上增加了許多優化方法,包括骨干網絡、激活函數、損失函數、網絡訓練、數據處理等方面的優化。YOLOv4的網絡結構主要有 3個部分:骨干網絡(CSPDarkNet53)、頸部(neck)、頭部(head)[18]。
· YOLOv4骨干網絡采用的 CSPDarkNet53是 DarkNet53的改進版本,不僅解決了梯度消失的問題,增強了模型的學習能力,還減少了網絡參數,降低了模型訓練的代價。CSPDarkNet53中使用的激活函數是Mish激活函數,與傳統的負值硬零邊界的ReLU相比,Mish函數使網絡具有更好的泛化性和準確性。
· 頸部采用路徑聚合網絡 PANet[23],相比于YOLOv3中的特征金字塔網絡FPN增加了一個自底向上的特征金字塔,從主干網絡的不同層聚合不同的特征,增強網絡的特征提取能力。同時引入SPP作為附加模塊,增大了網絡的感受野,進一步將重要的上下文特征信息提取出來。
· YOLOv4網絡的頭部還是沿用YOLOv3。損失函數方面,不再使用YOLOv3的均方誤差(mean square error,MSE)作為回歸框預測誤差,而是使用 CIOU(complete intersection over union)誤差,具體如式(1)~式(3):

其中, I OU(a,b)是真實框和預測框的交并比,ρ2(actr,bctr)是真實框和預測框中心點的歐氏距離,d是包含真實框和預測框的最小框的對角線距離。wgt、w、hgt、h分別是真實框和預測框的寬、高。
對于網絡訓練的正則化方式,采用Dropblock的方式線性增加特征圖部分區域清零的比率,效果比傳統的 Dropout更好。對于數據集小、中、大目標數目不均衡的問題,YOLOv4引入了Mosaci數據增強的方式,這種方式隨機使用4張圖片進行縮放、拼接,極大地豐富了數據集。
與原YOLOv4網絡不同的是,本文在主干網CSPDarkNet53中加入HDC模塊,提高了網絡的特征提取能力。同時,提出 SJDC結構代替 SPP結構,獲取更多的細節特征。改進后的 YOLOv4網絡結構如圖1所示。

圖1 改進后的YOLOv4網絡結構
YOLOv4特征提取網絡在檢測時,淺層的網絡特征為模型提供目標的位置信息,深層的網絡特征為模型提供語義信息。淺層特征包含更多的位置信息,但感受野較深層特征更小一些。傳統的網絡中一般采用池化來增加感受野。但是采用池化的方式存在一個很大的缺點:在增加感受野的同時,往往會降低特征圖的分辨率。
為了更好地提升模型的檢測能力,引入了空洞卷積(dilated convolution,DC)[24],通過空洞卷積來增大淺層特征圖的感受野,捕獲更多尺度的上下文信息。空洞卷積與普通卷積的不同點在于卷積核中填充了0。根據空洞率的不同,填充0的個數也不同,感受野也不同,從而獲得更多不同尺度的特征信息。空洞卷積的感受野與卷積核的計算方法為:

其中,xn是空洞卷積的卷積核大小,xk是原卷積核大小,Dr為空洞率。

其中,ym為第m層每個點的感受野,ym-1是第m-1層每個點的感受野,xm是第m層卷積的卷積核大小,si是第i層卷積的步長。
因為空洞卷積有著類似棋盤的計算方式,單加入一個尺度的空洞卷積會使局部的信息丟失,并且遠距離得到的信息之間沒有關聯性,如圖2所示。因此本文在CSPDarkNet53中引入HDC模塊,將不同空洞率的空洞卷積進行融合。在不增加訓練參數以及損失特征圖分辨率的前提下,增大特征層的感受野,使特征提取網絡能夠獲得更豐富的特征信息,增強對行人目標的檢測效果。本文設計的HDC模塊如圖3所示。

圖2 空洞率為2的空洞卷積

圖3 HDC模塊
當空洞系數為Dr時,即在卷積核中加入(Dr-1)個空洞。特征圖輸入空洞卷積模塊中,采用3×3的卷積核,當Dr=2時,感受野變為7×7。再進行Dr=3的空洞卷積將感受野變為19×19。不同層的特征進行直接融合,以獲得更加廣泛的圖像特征,增強特征提取網絡對于行人目標的特征提取能力。改進后的骨干網如圖4所示。

圖4 引入HDC后的骨干網結構
YOLOv4中從主干網 CSPDarkNet53輸出的特征層經過3次卷積后進入SPP結構。在SPP結構中利用4個不同尺度的最大池化1×1、5×5、9×9、13×13進行處理,增加感受野,分離出顯著的上下文特征。但是這樣會損失掉一些細節特征信息,使模型的漏檢率過高,漏檢的行人目標過多。SPP的結構如圖5所示。

圖5 SPP的結構
本文提出SJDC結構代替SPP結構,在保持特征圖大小不變的情況下,使網絡能獲得更多的特征信息提高目標檢測的效果。SJDC網絡的設計思想類似SPP,區別在于SJDC將輸入的特征層分為4路,其中3個分別進行系數為2、5、7的鋸齒狀的空洞卷積變換,獲得不同尺度的特征信息。
同時采用Mish作為激活函數,表達式見式(6),這種自正則的非單調性平滑的激活函數可以使模型得到更好的準確性和泛化性。

考慮到如果直接將得到的多尺度信息進行融合會有許多重復的特征信息,增大了計算的成本,因此本文提出的 SJDC結構在信息融合之前進行了一個冗余信息剔除的操作,剔除后進行融合得到特征的提取結果。這種網絡結構的變化有效地降低了網絡的漏檢率,使復雜視覺場景下漏檢的行人人數大大減少。SJDC結構如圖6所示。

圖6 SJDC結構
考慮到初始的先驗框是在VOC數據集的標注框上聚類得到的,該數據集的物體種類有20種,而且物體長與寬的比例差別很大,與本文使用的行人數據集中的實際邊界框存在很大的差別。如果直接使用YOLOv4的先驗框會造成很大的漏檢率。因此,本文采用K-means聚類算法重新對訓練集中標注的行人尺寸進行聚類分析,獲取最優的聚類結果。本文自建的數據集中行人的尺寸大小差距大,使用框與框中心點的歐氏距離作為候選框和真實框之間的誤差會影響大尺寸標簽的聚類結果,所以采用先驗框和聚類中心的交并比IOU作為K-means聚類的參數,反映真實框和候選框之間的差距。計算聚類距離的公式如下:

其中,box為樣本的先驗框,center為行人類的聚類中心[25]。經過實驗,得到本文改進的YOLOv4算法候選框的初始大小為[11 29, 16 47, 24 62, 31 97, 52 119, 66 204, 109 249, 184 316, 309 381]。將寬和高歸一化到 0~1,得到聚類結果如圖7所示。

圖7 聚類結果分布
目前目標檢測常用的是 VOC2007和VOC2012[26]數據集,其中包含20個類別,從中挑選出包含行人目標的圖片。為了更符合真實復雜場景,從 USC Pedestrian Detection Test Set、Caltech Pedestrian Detection Benchmark[27]以及 CUHK Occusion Pedstrian[28]3個公開行人數據集中挑選出部分圖片加入本實驗數據集中進行擴充。USC Pedestrian Detection Test Set行人數據庫包括各種視角的行人、行人之間相互遮擋以及無相互遮擋的情況。Caltech Pedestrian Detection Benchmark行人數據庫是車載攝像頭視角下的數據集,不僅存在不同狀況的光照變化,同時行人之間也有不同程度的遮擋。CUHK Occusion Pedstrian數據集可用于擁擠場景中的行人目標檢測。對數據集進行篩選,構建出本實驗所需的行人數據集,共5 329張。由于公開數據集中的標注存在漏標和標注不符合預期的情況,因此,使用labelimge工具對數據集重新進行標注獲得新的行人數據集。
本文所選的數據集中考慮了視角、遮擋、光照,但是并沒有將復雜的天氣因素考慮進去,如霧霾、暴雨等,這些因素也會影響模型的檢測效果。為了更好地適應真實場景,本文從數據集中隨機挑選出500張圖片進行加霧、500張圖片進行加雨實現數據增強。圖8(a)、圖8(c)是未處理的圖片,圖8(b)是加霧處理后的圖片,圖8(d)是加雨處理后的圖片。將處理過后的圖片加入數據集中形成包含6 329張行人圖片的新數據集。行人數據集中各種情況分布如圖9所示。將該數據集以8:2的比例劃分,其中訓練集包括5 063張圖片,測試集包括1 266張圖片。

圖8 加霧加雨處理圖片對比

圖9 自建行人數據集中復雜視覺場景分布情況
本文在Ubuntu16.04操作系統進行實驗,計算機內存為24 GB、顯卡為TAITAN,采取從頭開始訓練的方式。每個網絡訓練 150 epochs,輸入分辨率為608 dpi×608 dpi,根據網絡參數和GPU內存大小調整batch_size為8。為防止過擬合,采用余弦退火衰減來實現訓練過程中學習率的變化。將原始的學習率設置為0.000 1,學習率的最高值設為0.001,當學習率線性增長到最高值后保持一段時間不變,然后將模擬余弦函數的下降趨勢進行衰減。余弦退火的衰減式如式(8):

其中,λmax和λmin表示學習率的最大值和最小值,Tcur表示當前執行了多少 epoch,Ti表示模型訓練的總epoch數目。
本文采用對數平均漏檢率(log-average miss rate,LAMR)、平均精度 A Pperson( average precision)對目標檢測網絡進行比較。
(1)對數平均漏檢率LAMR

LAMR可以表明數據集中測試集的漏檢情況。LAMR越大,漏檢行人數量越多,LAMR越小,漏檢行人數量越少。
(2)平均精度 A Pperson

用 A Pperson來表示行人類檢測的平均精度。N( TP)person表示正確檢測出行人的數量,N(Object)person表示該圖片中實際的行人數量,N(Images)person表示測試圖片中含有的行人數量。APperson越大,模型的誤檢和漏檢就越少。
5.2.1 HDC-YOLOv4
針對復雜視覺場景下,行人檢測中模型檢測出的目標準確度不高的問題,本文在骨干網中加入HDC網絡提高目標置信度。使用一階目標檢測領域常用的網絡YOLOv3、YOLOv4原網絡與本文加入HDC之后的YOLOv4進行對比。分別設置閾值IOU為0.5、0.6、0.7、0.8,得到相應的 A Pperson值,見表1。相比于原來的YOLOv4模型,改進HDC-YOLOv4在閾值為0.5、0.6、0.7、0.8時, A Pperson值分別提高了2.07%、2.50%、2.98%、2.44%。在不同閾值的情況下,相比YOLOv3以及原來的網絡都有了提高。主要原因是加入 HDC后更有利于行人特征的提取,能夠提高該算法對復雜場景下行人特征的識別度。

表1 3種網絡模型在不同閾值下的APperson對比
為驗證其有效性,將IOU設置為0.5,從測試集中選取2個特殊情況下的圖片進行測試,圖10和圖11是3個檢測網絡的對比。商場服裝店前的模糊圖片檢測效果對比如圖10所示,圖片比較模糊且行人與店內懸掛的衣服有很大的相似性,導致YOLOv3和YOLOv4都產生了誤檢,本文改進的 HDC-YOLOv4在復雜環境下精確地檢測出了右側的2個行人,并且置信度較高。雨天圖片過暗檢測效果對比如圖11所示,圖片光照過暗并且做了模擬下雨的圖像增強操作,對視線產生了干擾,行人幾乎與背景融為一體很難被識別檢測到,YOLOv3和YOLOv4均無法檢測出該復雜場景下的行人,改進的HDC-YOLOv4檢測出了1個行人,但距離較遠、目標更小、更模糊的也未能檢測出。因此,本文改進的算法仍然有提升的空間。總體看來,在一些特殊復雜場景下,加入HDC的YOLOv4網絡對行人檢測的準確度都有很大的提高。

圖10 服裝店前的模糊圖片檢測效果對比

圖11 雨天圖片過暗檢測效果對比
5.2.2 SJDC-YOLOv4
除了檢測準確度不高的問題以外,復雜視覺場景下行人檢測還存在嚴重的漏檢問題,本文提出SJDC結構代替SPP結構來解決行人的漏檢問題。在本文制作的數據集上使用 YOLOv3、YOLOv4和改進SJDC-YOLOv4模型進行對比,實驗結果見表2。結果表明,對于復雜情況下的行人檢測,加入SJDC結構改進后的SJDC-YOLOv4比YOLOv3、YOLOv4兩個模型的LAMR都低,相比于YOLOv4原來網絡LAMR降低了9.7%,行人目標的漏檢情況有了很大的改善。

表2 3種網絡在性能檢測漏檢情況上的對比
從數據集中分別選取行人存在嚴重遮擋和光照嚴重不足的特殊場景的圖片,分別采用YOLOv3、YOLOv4和SJDC-YOLOv4模型進行檢測,結果如圖12和圖13所示。圖12中行人之間存在嚴重遮擋并且服裝非常相似,存在“雙重錯覺”效應,容易產生漏檢。YOLOv3只檢測到了8人(漏檢4人),YOLOv4檢測到了9人(漏檢3人),SJDC-YOLOv4幾乎全部檢測出來(漏檢1人)。從右邊數第2、4、6個行人由于衣服顏色與遮擋者的完全一樣,只露出很小部分的頭部,YOLOv3和 YOLOv4對這種情況存在嚴重的漏檢,改進SJDC-YOLOv4檢測出了其中的2人。光照不足情況檢測效果對比如圖13所示,圖13中右側的陰影區中光線較暗,存在建筑物的遮擋,其中一個行人距離較遠,尺寸很小并且幾乎與背景融為一體很難被檢測到。YOLOv3只檢測到最左邊的行人,YOLOv4檢測到了 2個行人。SJDC-YOLOv4不僅能夠檢測到距離較近的兩人,而且還檢測到了圖中與背景幾乎融為一體的小尺寸行人。從圖13中的結果可以看出,SJDC-YOLOv4在復雜情況下,能夠有效減少網絡的漏檢情況。

圖12 行人重疊遮擋檢測效果對比

圖13 光照不足情況檢測效果對比
5.2.3 改進的YOLOv4算法與其他算法比較
本文針對復雜視覺場景下行人檢測的準確度不高、漏檢嚴重2個問題進行改進,在YOLOv4主干網 CSPDarkNet53中加入 DHC,以及提出SJDC結構來代替SPP提升模型的檢測性能。將本文改進的檢測模型與原YOLOv4模型、參考文獻[14]改進的YOLOv4模型以及其他典型的一階檢測模型YOLOv3網絡進行對比,使用自建行人數據集進行實驗,具體結果見表3。從測試集中選取行人存在嚴重遮擋的圖片并模擬霧霾天氣進行加霧處理,將處理后的圖片分別采用 YOLOv3、YOLOv4、參考文獻[14]改進的 YOLOv4模型以及本文改進后的YOLOv4模型進行檢測,結果如圖14~圖15所示。

圖14 霧霾天氣行人嚴重重疊檢測效果對比

圖15 模糊圖片下行人尺寸差距大且存在遮擋情況檢測效果對比
通過表3可知,在自建的行人數據集包含多種復雜環境的情況下,改進后的YOLOv4模型比原 YOLOv4模型的 APperson的值高了 7.20%,LAMR降低了13.69%。與參考文獻[14]中改進的YOLOv4算法比較APperson提高了6.08%,LAMR降低了10.64%。說明本文的改進措施可以有效地提高模型對復雜視覺場景下行人的檢測性能。

表3 4種網絡在復雜視覺場景下的行人檢測效果對比
在圖14中,首先,加霧處理對行人檢測造成了一定的困難;其次,圖片中的行人存在非常嚴重的遮擋,這種場景下很容易檢測不準確,產生漏檢。從圖14可看出,本文改進后的YOLOv4在檢測的準確度和漏檢情況上的表現都明顯優于其他3個網絡。圖15中行人尺寸大小差距大,遠距離的行人目標尺寸小且非常模糊,同時被前面的行人遮擋,在該場景下,改進后的YOLOv4檢測出了全部的行人,并且準確度較高。YOLOv3網絡存在漏檢,YOLOv4原網絡和參考文獻[14]中改進的YOLOv4網絡雖然檢測到了全部的行人,但是檢測出的行人置信度沒有改進后的YOLOv4高。
為驗證改進后的網絡對非復雜視覺場景的行人檢測是否有效,本文另外選取了2 000張非復雜場景下的行人圖片制作成數據集,并在YOLOv3、YOLOv4、參考文獻[14]改進的YOLOv4模型以及本文改進后的YOLOv4模型上重新訓練并進行實驗對比,結果見表4。

表4 4種網絡在非復雜視覺場景下的行人檢測效果對比
由表4可知,在非復雜視覺場景下,本文改進的YOLOv4檢測效果仍比其他3個網絡好,但是相較于復雜視覺場景下 APperson的提升和LAMR的降低沒有那么明顯,也更加說明了本文改進的網絡對復雜視覺場景行人檢測的有效性。
本文提出了一種基于改進YOLOv4算法的復雜視覺場景行人檢測方法。使用先驗框和聚類中心的交并比作為K-means算法參數對行人數據進行聚類得到先驗框,在主干網CSPDarkNet53中加入HDC結構,提高網絡對復雜視覺環境下行人特征的提取能力,增加模型檢測的準確度。同時,提出 SJDC網絡模塊,用來代替SPP結構,獲取更多的細節特征信息,降低模型漏檢率。實驗結果表明,改進后的方法在復雜環境下具有較好的檢測效果,行人的平均精度APperson達到了90.08%,LAMR相比原網絡降低了 13.69%,FPS為 25.84 f/s。改進后的YOLOv4網絡在滿足實時條件的情況下,檢測準確度有所提高,漏檢率大幅降低。