馮 媛,李敬兆
(安徽理工大學 電氣與信息工程學院,安徽 淮南 232001)
近年來深度學習相關理論快速發(fā)展,優(yōu)秀的神經(jīng)網(wǎng)絡模型層出不窮,基于深度學習的目標識別模型在準確性和實時性方面都明顯優(yōu)于傳統(tǒng)的人工設計特征的檢測算法[1]。深度學習也被廣泛應用到行人檢測中,并逐漸成為計算機視覺領域的研究熱點之一[2]。
傳統(tǒng)的行人檢測方法大多集中在人工特征的提取和分類方面,但此類方法存在特征維度高、泛化能力差等缺點,對傳統(tǒng)方法的改進通常是建立在梯度直方圖(HOG)[3]、Haar特征、局部二值模式(LBP)[4]等基礎上。
目前,目標檢測領域的深度學習方法主要分為兩類:區(qū)域提名算法和端到端算法。區(qū)域提名算法通常是結合候選區(qū)域(region proposal,RP)和卷積神經(jīng)網(wǎng)絡來進行目標檢測,代表性的網(wǎng)絡有R-CNN系列[5-7]等;端到端算法,代表性的網(wǎng)絡有SSD[8]、YOLO系列[9-11]。相較于區(qū)域提名算法,SSD和YOLO算法舍棄了RP階段,犧牲了一定的檢測精度,但提高了檢測速度。何愷明等提出了ResNet[12],引入新思路進行神經(jīng)網(wǎng)絡優(yōu)化。DenseNet[13]在ResNet的思想上再做創(chuàng)新,使各層間連接更加緊密,其網(wǎng)絡結構不復雜,卻非常有效。
近年來,神經(jīng)網(wǎng)絡的輕量化一直是業(yè)界的發(fā)展趨勢,YOLO系列雖然具有較好的檢測準確率和實時性,但其對電腦的GPU等硬件配置要求較高。因此,本文提出了一種融合DenseNet和YOLOV3的行人檢測方法,改良后的Dense-YOLO網(wǎng)絡擁有更少的卷積層、更快的檢測速度以及較好的檢測精度,更適合應用在行人檢測的場景中。
現(xiàn)有的YOLO系列神經(jīng)網(wǎng)絡模型雖然在目標檢測方面已達到了較好的效果,但是面對行人檢測場景,YOLO系列神經(jīng)網(wǎng)絡并不完全適合,所以需對YOLO算法進行改進,使其更適合行人檢測工作。目前有研究者提出基于Faster-RCNN的行人檢測方法,該方法通過聚類和構建區(qū)域候選網(wǎng)絡(region proposal network,RPN),快速生成可能感興趣的框,從而將含有行人的區(qū)域提取出來[14]。也有通過改進Tiny-YOLO的網(wǎng)絡結構來實現(xiàn)行人檢測的輕量化模型[15]。針對行人檢測,本文提出了一個融合了YOLOV3和DenseNet的輕量化行人檢測算法,利用卷積神經(jīng)網(wǎng)絡提取低層圖像特征,并調節(jié)IOU(交并比)和學習率的閾值來改善行人重疊或遮擋的問題,通過k均值聚類算法 (k-means) 提取可能含有行人的區(qū)域。針對畫面中行人大小不一,尺寸不同的情況,利用特征金字塔網(wǎng)絡(feature pyramid networks,F(xiàn)PN)[16]來做高低層的行人的特征融合,不同尺寸的行人特征圖對應不同大小的行人會有更好的預測效果。較小的特征圖對尺寸較大的行人會有較好的預測能力,較大的特征圖對尺寸較小的行人或者是被遮擋的行人具有更好的預測能力。再利用Dense Block的結構對行人檢測的網(wǎng)絡進行輕量化完善,提升行人檢測網(wǎng)絡的實時性,改進后的模型結構如圖1所示。
圖1 Dense-YOLO結構
為了讓本文的行人檢測方法能夠獲得更全面的行人特征,使特征提取的效果更好,從輸入圖像這方面著手,本文做出以下兩點改進:
(1)在卷積神經(jīng)網(wǎng)絡訓練時,對部分輸入圖像的大小進行隨機變換,放大倍數(shù)區(qū)間為(0.25,2)。同時,為了讓行人檢測模型的魯棒性更好,采取了對圖片隨機添加偏移量的操作。為了讓行人檢測模型適用于任何光照強度的情景,減少圖片明暗度對行人檢測結果造成的影響,本文額外進行了圖片隨機旋轉和隨機扭曲HSV顏色空間模型的操作,HSV是一種較為直觀的顏色模型,在許多圖像編輯工具中應用廣泛。HSV模型中顏色的參數(shù)分別是:色調(hue,H),飽和度(saturation,S),明度(value,V)。進行隨機扭曲HSV,如圖2所示,在灰度圖像下,標定框里的行人顏色發(fā)生了變化,這就相當于改變了行人的明暗程度,不僅增強了數(shù)據(jù)集的豐富度,也使神經(jīng)網(wǎng)絡具有更好的泛化性,后續(xù)實驗結果表明,此舉有效提高了行人檢測的準確率和召回率。
圖2 隨機扭曲HSV顏色空間模型
(2)據(jù)現(xiàn)有的行人檢測實驗研究表明,圖像中行人身高和寬度通常為3∶1的定值,也就意味著行人的橫向特征比縱向特征表達少[17]。因此,本文中采用9∶16的輸入圖片的長寬比,與原網(wǎng)絡輸入圖像大小416×416相比,增加了圖像的寬度,增強了行人橫向特征的表達,豐富了行人特征信息。
值得關注的是YOLO系列借鑒了Faster R-CNN的思想,在網(wǎng)絡中使用了anchor boxes,用k-means的思想來確定初始候選框。YOLOV2和YOLOv3初始候選框的個數(shù)分別是在PASCAL VOC數(shù)據(jù)集和COCO數(shù)據(jù)集使用聚類算法確定的,YOLOV2有5個anchor boxes,YOLOV3有9個anchor boxes。YOLOV3結合FPN的多尺度融合思想,將9個anchor boxes平均分到3個尺寸的網(wǎng)絡層實行預測。COCO以及PASCAL VOC數(shù)據(jù)集含有的物體種類很多,因此原有anchor boxes的參數(shù)也不太適和應用于行人檢測。為了對行人的定位進行更準確的預測,本文在INRIA行人數(shù)據(jù)集上進行k均值聚類,根據(jù)該數(shù)據(jù)集的大小和行人的特征,確定最優(yōu)的anchor boxes的參數(shù)。傳統(tǒng)的k-means測距通常用的是歐氏距離算法,但這樣會出現(xiàn)“大框優(yōu)勢”的問題,即較大的邊界框比小的邊界框會產(chǎn)生更大的距離誤差。IOU是產(chǎn)生的候選框與原邊界框的重疊率,且IOU的大小與原邊界框尺寸無關,因此使用IOU參與距離計算可以避免這一問題,計算距離如式(1)所示,b表示k均值聚類的結果,c表示聚類中心
D(b,c)=1-IOU(b,c)
(1)
通過k值和平均IOU的關系,選擇最適合網(wǎng)絡的k值,二者關系如圖3所示。
圖3 平均IOU的k曲線
如圖3所示,k=6是曲線的斜率慢慢減小的點,為了加快網(wǎng)絡的識別速度,Dense-YOLO網(wǎng)絡會在兩個尺度的預測層上進行預測,可采取每層分配3個anchor boxes的策略,因此采用k=6的聚類結果。
Dense Block這一概念來自于CVPR2017最佳論文所提出的DenseNet。在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡中,神經(jīng)網(wǎng)絡的層數(shù)通常等于連接的數(shù)量,但在DenseNet中,其每一層的輸入都是來自前面所有層輸出的并集,層與層之間的連接變得更緊密。DenseNet的網(wǎng)絡比傳統(tǒng)的卷積神經(jīng)網(wǎng)絡寬度窄很多,這歸功于它的Dense Block中的子模塊Bottleneck layer和Translation layer結構。DenseNet提出K值的概念,K代表網(wǎng)絡成長率(Growth rate),它被用來控制網(wǎng)絡的寬度。Dense Block結構如圖4所示。
圖4 Dense Block結構
如圖4所示,假設x0是輸入,H1的輸入是x0,H2的輸入是x0和x1(x1是H1的輸出),以此類推。具體概念體現(xiàn)在式(2)中,[x0,x1……xl-1] 表示將0到l-1層的輸出特征圖做通道的合并,Hl包括BN,ReLU和3×3的卷積,經(jīng)過Hl處理之后輸出的特征圖的數(shù)量都為K,便于控制網(wǎng)絡的寬度(特征圖的通道數(shù))。如果神經(jīng)網(wǎng)絡有l(wèi)層,那么第l層有K(l-1)+K0個輸入特征圖,K0是輸入圖片的通道數(shù)
xl=Hl([x0,x1……xl-1])
(2)
因為DenseNet的層層緊密連接,當網(wǎng)絡層數(shù)加深時,特征圖的通道數(shù)也會變得很大,即特征圖數(shù)量變多。因此在每個Dense Block的3×3卷積前面都加入了一個1×1的卷積操作,即Bottleneck layer,這個操作不僅是為了減小輸入的特征圖的數(shù)量,也是為了可以融合各個通道特征,從而達到降維和減少計算量的目的。另外,為了進一步壓縮參數(shù),DenseNet在每兩個Dense Block之間又增加了1×1的卷積操作,即Translation layer,調節(jié)參數(shù)reduction(范圍是0到1),通常默認為0.5,如此一來傳遞給下一個Dense Block的時候通道的數(shù)量就會減少一半,在一定程度上減少了參數(shù)量。由于這幾個機制的加入,使得DenseNet的每個卷積層的輸出特征圖的數(shù)量都很小。這種緊密連接的方式使得特征和梯度的傳遞更加有效,減輕了梯度消失的情況,網(wǎng)絡也變得更加容易訓練。
本文在YOLOV3的基礎上,將YOLOV3原有的主網(wǎng)絡DarkNet換成DenseNet,不但減少了神經(jīng)網(wǎng)絡的層數(shù),而且達到了降低網(wǎng)絡參數(shù)數(shù)量的目的,將YOLOV3原有的殘差模塊替換成Dense Block。
結合圖5簡述網(wǎng)絡的訓練策略,以輸入尺寸為480×270的圖片為例,先經(jīng)過一層卷積層,圖片大小不變,通道數(shù)變?yōu)?4。激活函數(shù)選用Leaky Relu是因為其在負軸有一個小斜率傾斜,當激活函數(shù)進入負半軸時依然能令神經(jīng)元繼續(xù)保持學習的狀態(tài)。經(jīng)過最大池化(max polling,MP)層,MP對特征圖進行(270/3,480/4)的處理,在保留主要特征的同時還可以起到降低參數(shù)數(shù)量的作用。之后進入DB(dense block)層,對于模塊中每一層的輸入特征圖的層數(shù)是不斷增加的,每次增加的個數(shù)設為K,為了網(wǎng)絡不變寬,K值不宜過大,本實驗中取K=32。 但僅憑K的控制網(wǎng)絡寬度還不夠,隨著Dense Block模塊深度的加深,由于層層緊密連接,后面的輸入特征圖的維度會越來越大。為了解決這個問題,在Dense Block模塊中加入了Bottleneck模塊,采用1×1卷積進行降維,輸出維度都被降到4K維,可以起到降維減參的功效。Translation Layer模塊再次采用1×1卷積做降維,默認輸出特征圖的數(shù)量為上一個DB模塊的輸出特征圖的一半,運算量和參數(shù)再次被減少。
圖5 網(wǎng)絡流程
結合FPN的思想,基于神經(jīng)網(wǎng)絡的一貫特性,小尺度特征圖可以更好表征大目標,大尺度的特征圖可以更好表征小目標。為了對不同大小的行人檢測的效果更好,在Dense-YOLO的輸出端分為兩個尺度做預測。在經(jīng)過第一個Dense Block之后的特征圖大小為30×30,這作為第一個尺度特征圖輸出。之后再經(jīng)過兩個Dense Block后,得到大小為15×15的特征圖,其特征通道數(shù)為15。其中15×15對應將輸入圖像分為15×15個柵格,共設置6個預測框,兩個尺度的各個柵格都要預測3個邊界框,各個邊界框都需要預測x、y、wide、hight、置信度以及框內是n類待檢測物體中哪些類的條件概率。
本實驗中只存在行人這一目標,為了加快檢測速度,可以不用顯示行人標簽,即n=0,直接標出預測框。所以每一個柵格對應的特征維數(shù)是3×(4+1)=15,最后Reshape成(15,15,3,5)的特征向量,再用非極大值抑制算法(non-maximum suppression,NMS)去除多余(交叉重復)的窗口,找到最佳行人檢測位置。
本實驗中訓練用到的數(shù)據(jù)集皆為國際公認的行人檢測數(shù)據(jù)集:INRIA數(shù)據(jù)集和Caltech數(shù)據(jù)集。目前使用度最高的行人檢測數(shù)據(jù)集就是INRIA數(shù)據(jù)集,其中雖然包含了正負樣本,但是本實驗中對于神經(jīng)網(wǎng)絡的訓練只是用數(shù)據(jù)集中的正樣本,該數(shù)據(jù)集清晰度較高,行人拍攝情況多樣化,存在行人遮擋情景下的圖片,平均像素為279左右,其訓練數(shù)據(jù)集中有正樣本614張(包含2416個行人),測試數(shù)據(jù)集有正樣本288張(包含1126個行人)。Caltech數(shù)據(jù)集是由加州理工等高校組成的視覺小組整理的,他們從10小時的車載攝像頭視頻中選取了137 min(約250 000張圖像),2300個行人,作者標注了350 000個邊界框,Caltech數(shù)據(jù)集很好的標注了行人被遮擋情況,這有利于神經(jīng)網(wǎng)絡對行人遮擋問題做出改進,本文挑選了Caltech數(shù)據(jù)集中行人較多的2000張圖片進行訓練。實驗在INRIA數(shù)據(jù)集和Caltech數(shù)據(jù)集混合數(shù)據(jù)集中進行,圖6展示了實驗中測試集中部分測試結果的圖片。
圖6 實驗測試結果
本文采用深度學習架構YOLOV3和DenseNet搭建實驗運行環(huán)境,并配置CUDA 9.2環(huán)境進行GPU并行加速計算,本文的實驗平臺軟硬件配置見表1。
表1 實驗平臺軟硬件配置
深度學習的神經(jīng)網(wǎng)絡結構的搭建只是第一步,超參數(shù)的選擇對于神經(jīng)網(wǎng)絡的成功起到至關重要的作用,合理的設置網(wǎng)絡超參數(shù),可以達到更好的訓練神經(jīng)網(wǎng)絡模型的目的。設置學習率、動量系數(shù)、迭代次數(shù)等參數(shù)能夠優(yōu)化超參數(shù),讓神經(jīng)網(wǎng)絡達到更好的預測效果。多次實驗后,本文選取網(wǎng)絡訓練效果最好的一組值為最終的超參數(shù)。訓練時模型的初始學習率設為0.01,學習率為0.1,權值衰減系數(shù)為0.0010,動量系數(shù)為0.9,成長率(K)設為32,批大小為32,epochs為10 000。為了增強網(wǎng)絡的泛化性,在網(wǎng)絡訓練時還會進行隨機調整圖片大小、將圖片旋轉某些角度以及隨機明暗度調節(jié)等操作。
2.3.1 強化行人特征圖像處理模塊測試
在行人測試數(shù)據(jù)集上,將加入強化行人特征圖像處理模塊的網(wǎng)絡模型和未加入該模塊的網(wǎng)絡模型進行測試與比較,實驗結果如表2所示,與不加該圖像處理模塊的方法相比,本文提出的方法使mAP提高了3.87%,召回率提升了3.39%。
表2 強化行人特征處理模塊的測試結果
2.3.2 行人檢測網(wǎng)絡的輕量化實現(xiàn)
為了驗證Dense-YOLO網(wǎng)絡模型的輕量化,從模型的計算需求量、訓練參數(shù)的數(shù)量、網(wǎng)絡模型的大小3個方面與YOLOV3和Tiny-YOLOV3網(wǎng)絡進行比較,具體的比較結果見表3。Dense-YOLO網(wǎng)絡模型的計算需求量是YOLOV3的1/118,訓練參數(shù)數(shù)量是YOLOV3的1/120,模型大小是YOLOV3的1/107,與YOLOV3的輕量化模型Tiny-YOLOV3相比,Dense-YOLO在實現(xiàn)網(wǎng)絡輕量化方面也有很大進步。
表3 網(wǎng)絡模型規(guī)模比較
2.3.3 速度測試
本實驗采用的檢測速度的評判標準為FPS(frames per second),F(xiàn)PS是圖像領域中的定義,是指畫面每秒傳輸?shù)膸瑪?shù),FPS值反映了保存以及顯示動態(tài)視頻的信息數(shù)量。FPS越大,表示每秒鐘的幀數(shù)越多,所顯示的視頻就會越流暢。為了滿足行人檢測的實時性要求,F(xiàn)PS的值越大越好。將DenseNet與傳統(tǒng)行人檢測算法HOG+SVM、YOLOV3以及輕量化神經(jīng)Tiny-YOLOV3等方法比較,具體的比較結果見表4,Dense-YOLO的檢測速度比HOG+SVM方法快35倍,比Tiny-YOLOV3快1.75倍,比YOLOV3快8倍,結果表明,Dense-YOLO的實時檢測速度實現(xiàn)了大幅提升。
2.3.4 精度測試
mAP(mean average precision)的定義式如式(3)所示,其含義是h類目標物體的平均精度的均值
(3)
表4 目標檢測速度各方法對比實驗結果
召回率(Recall)的定義如式(4)所示,其表示測試數(shù)據(jù)集的全部目標(NAll)中有多少被正確檢測到,正確檢測到的比例占多少
(4)
具體的測試結果見表5,Dense-YOLO的mAP相較于YOLOV3提升了2.91%,相較于Tiny-YOLOV3的mAP提升了29.09%。Dense-YOLO的召回率相較于YOLOV3提升了3.93%,相較于Tiny-YOLOV3提升了15.68%。YOLOV3由于主網(wǎng)絡是DarkNet,存在著網(wǎng)絡層數(shù)過多,容易造成梯度消失等問題,導致網(wǎng)絡學習過早停滯;Tiny-YOLOv3又因為網(wǎng)絡層數(shù)過少,行人特征學習的不夠充分,而Dense-YOLO 在網(wǎng)絡層數(shù)和準確率上做到了更好的平衡。
表5 不同網(wǎng)絡模型測試的結果
本文基于YOLOV3和DenseNet提出一種輕量化的行人檢測模型,在公開行人檢測數(shù)據(jù)集INRIA數(shù)據(jù)集以及Caltech數(shù)據(jù)集上對網(wǎng)絡模型進行了訓練,并通過對輸入神經(jīng)網(wǎng)絡的圖片進行隨機變化處理,增強網(wǎng)絡的泛化性,利用維度聚類分析選擇合適的k值,改進網(wǎng)絡結構,提出了一種基于Dense-YOLO網(wǎng)絡的行人檢測模型。
(1)與現(xiàn)有的行人檢測算法和YOLO系列算法相比,Dense-YOLO網(wǎng)絡更為輕量化,在保證一定準確率的前提下,其具有更快的檢測速度,提高了行人檢測的實時性,借鑒特征金字塔的思想,Dense-YOLO網(wǎng)絡對不同尺寸的行人也具有更好的檢測效果。
(2)通過Dense-YOLO與復雜網(wǎng)絡的對比實驗可以看出,Dense-YOLO網(wǎng)絡提升了目標檢測速度,但由于行人檢測中依然存在遮擋、對小目標行人檢測效果較差等問題。如何在保證高速檢測的前提下對網(wǎng)絡的準確率以及召回率進行提升,將會是下一步研究的重點。