劉宇航,馬健霄,王羽塵,白瑩佳,謝征俊
(南京林業(yè)大學(xué)汽車與交通工程學(xué)院,南京 210037)
良好的森林管護(hù)是減少林木盜伐、改善森林發(fā)展環(huán)境的必要條件。為做好森林管護(hù)工作,減少人力物力的消耗,可以利用快速發(fā)展的行人檢測算法,對非法闖入的行人進(jìn)行檢測與甄別。當(dāng)檢測出行人時立刻上報(bào)林業(yè)管理部門,對人員進(jìn)行甄別,并對盜伐事件及時處理。為了實(shí)現(xiàn)對盜伐事件的快速響應(yīng),算法必須快速準(zhǔn)確地檢測出林區(qū)的行人[1]。
由于林區(qū)植被茂盛,在采集圖像時極易出現(xiàn)不同程度的遮擋情況,行人的特征并不完整,并且大多數(shù)盜伐者著裝迷彩服,與背景的色調(diào)相似度很大,所以林區(qū)行人檢測難度較大,需要對現(xiàn)有的檢測算法進(jìn)行優(yōu)化。傳統(tǒng)的行人檢測方法主要基于人為設(shè)計(jì)的特征提取器。周劍宇等[2]使用基于先驗(yàn)知識的Haar-Like特征,通過檢測行人的上半身來確定行人的位置;Dalal等[3]使用局部歸一化的方向梯度直方圖(histogram of oriented gradien,HOG)表征行人的特征并檢測;Ahonen等[4]通過劃分圖像區(qū)域并提取局部二值模式特征來檢測行人。這種傳統(tǒng)的方法要求研究人員根據(jù)不同的檢測任務(wù)進(jìn)行調(diào)整,設(shè)計(jì)特定的特征提取器,泛化能力較差,很難達(dá)到林區(qū)行人檢測的要求。
近年來,隨著計(jì)算機(jī)硬件設(shè)備的提升,深度學(xué)習(xí)技術(shù)快速發(fā)展。卷積神經(jīng)網(wǎng)絡(luò)可以替代傳統(tǒng)的人為設(shè)計(jì)特征,具有特征表達(dá)能力和魯棒性較強(qiáng)的特點(diǎn),在圖像分類、目標(biāo)檢測等計(jì)算機(jī)視覺領(lǐng)域取得了巨大的成果,出現(xiàn)了大量基于深度學(xué)習(xí)的檢測算法。Girshick等[5]引入了兩階段法并提出R-CNN,使用選擇性搜索生成感興趣區(qū)(region of interest),從圖像中提取每個區(qū)域后由卷積神經(jīng)網(wǎng)絡(luò)處理來檢測;此外,Girshick[6]又設(shè)計(jì)了ROI池化,提出了Fast-RCNN。Ren等[7]通過引入?yún)^(qū)域提案網(wǎng)絡(luò)(region proposal networks,RPN),提出了Faster-RCNN,該網(wǎng)絡(luò)使用一組預(yù)先設(shè)定的候選框進(jìn)行檢測,提高了檢測行人的效率。隨后,Redmon等[8]消除了ROI池化并提出了YOLO,引入了單階段的方法直接從圖像中預(yù)測邊界框坐標(biāo);Redmon等[9-10]調(diào)整了其網(wǎng)絡(luò)結(jié)構(gòu),提出了YOLO9000和YOLOv3。Bochkovskiy等[11]利用數(shù)據(jù)增強(qiáng)技術(shù)、特征增強(qiáng)模型和增大感受野等改進(jìn)YOLOv3,提出了YOLOv4。Lin等[12]提出了RetinaNet,解決了單階段方法由于正負(fù)候選框的巨大不平衡導(dǎo)致的檢測精度不足。但現(xiàn)階段大多數(shù)研究都是基于候選框,參數(shù)過多,冗余的計(jì)算量巨大,而在實(shí)際情況下,需要快速而準(zhǔn)確地檢測出行人,從而及時采取措施制止林木盜伐的行為。同時,檢測設(shè)備一般配備功耗較低的單模塊超級計(jì)算機(jī),將模型應(yīng)用在邊緣位置訓(xùn)練和計(jì)算,快速有效的算法可以提高訓(xùn)練效率,減少能源的消耗。
針對上述問題,筆者基于CornerNet-Lite算法[13]框架,從行人的關(guān)鍵點(diǎn)預(yù)測出發(fā)進(jìn)行檢測,優(yōu)化算法的損失函數(shù),通過改進(jìn)熱力層損失預(yù)測行人位置框角點(diǎn)的位置,改進(jìn)嵌入層的損失來匹配同一目標(biāo)的角點(diǎn),計(jì)算偏置層損失,減少圖像尺度變化過程中由于取整丟失的精度信息,提出一種林區(qū)行人目標(biāo)實(shí)時檢測算法CornerNet-P,并與YOLOv4對比,對模型的檢測速度和檢測精度進(jìn)行驗(yàn)證。
林區(qū)盜伐者大多著裝迷彩服,與背景的色調(diào)相似度很大。根據(jù)林區(qū)行人的檢測特點(diǎn),算法首先對輸入圖像進(jìn)行預(yù)處理,使用沙漏網(wǎng)絡(luò)(hourglass network)作為主干網(wǎng)絡(luò)[14],提取行人的特征信息,避免相似的特征導(dǎo)致行人的錯檢和誤檢。同時,林區(qū)由于植被茂盛,在采集行人圖像時容易出現(xiàn)不同程度的遮擋,采集到的行人特征也并不完整,所以本研究將行人的位置預(yù)測簡化為2個角點(diǎn)的預(yù)測,即左上角點(diǎn)和右下角點(diǎn)。對沙漏網(wǎng)絡(luò)輸出的特征進(jìn)行角池化處理,獲得角點(diǎn)的位置特征信息。預(yù)測熱力圖來檢測行人的角點(diǎn)位置;預(yù)測角點(diǎn)的嵌入層損失,使2個角點(diǎn)嵌入到同一對象的距離更小,損失更低;預(yù)測網(wǎng)絡(luò)偏置層的損失,調(diào)整角點(diǎn)的位置,以生成更緊密的邊界框,如圖1所示。
圖1 CornerNet-P算法的網(wǎng)絡(luò)結(jié)構(gòu)
算法使用7×7的卷積網(wǎng)絡(luò)和2個殘差塊(residual network)對輸入的林區(qū)行人圖像進(jìn)行預(yù)處理[13],將分辨率降到64×64,提高本算法的訓(xùn)練速度,整體流程如圖2所示。
圖2 輸入圖像的預(yù)處理
算法使用2個堆疊的沙漏網(wǎng)絡(luò)進(jìn)行特征提取,輸出的特征圖分辨率為64×64。沙漏網(wǎng)絡(luò)由2個3×3卷積層和1個跳躍連接的殘差塊構(gòu)成,但網(wǎng)絡(luò)參數(shù)過多,檢測時間較長。在本沙漏網(wǎng)絡(luò)中著重減少像素的處理量,結(jié)合SqueezeNet[15]的思想,使用1個輕量級的網(wǎng)絡(luò)fire module,如圖3所示。主要使用2種降低網(wǎng)絡(luò)復(fù)雜度的方法:1)使用1×1卷積核處理圖像,改變圖像的維度,減少網(wǎng)絡(luò)的參數(shù),節(jié)省計(jì)算量;2)通過1個由1×1和3×3卷積核組成的擴(kuò)展層來提供結(jié)果。
圖3 fire module的網(wǎng)絡(luò)結(jié)構(gòu)
為解決林區(qū)行人遮擋和著裝與背景色調(diào)相似的問題,可以將行人位置簡化為左上角點(diǎn)和右下角點(diǎn)。但在不同的行人上,角點(diǎn)位置無規(guī)律可循,采用普通池化操作,預(yù)測角點(diǎn)的位置會比較困難。針對左上角點(diǎn)的右邊有目標(biāo)頂端的特征信息,角點(diǎn)的下邊有目標(biāo)左側(cè)的特征信息,采用角池化網(wǎng)絡(luò)提取圖片的特征信息,預(yù)測行人的位置。
角池化層是通過對主干網(wǎng)絡(luò)輸出的特征圖進(jìn)行水平方向從右向左的最大池化,得到特征圖;再從下到上做最大池化,得到另一個特征圖;將這2個特征圖的每個像素值相加,得到角點(diǎn)的位置特征信息,如圖4所示。
圖4 角池化過程
整個網(wǎng)絡(luò)的損失分為3個部分,分別為熱力圖、嵌入層和偏置層損失。本研究為提高整體模型的迭代速度,引入Adam優(yōu)化整個損失[16],將α設(shè)置為0.5,β設(shè)置為0.5,γ設(shè)置為1,則:
L=Lheat+αLpull+βLpush+γLoff
(1)
式中:L是整個網(wǎng)絡(luò)的總損失;Lheat是預(yù)測角點(diǎn)時的誤差;Lpull是預(yù)測同一目標(biāo)2個角點(diǎn)的損失;Lpush是預(yù)測不同目標(biāo)2個角點(diǎn)的損失;Loff是在取整計(jì)算時丟失的精度信息。
1.4.1 熱力層
基于焦點(diǎn)損失(focal loss)[12],改進(jìn)熱力層損失,預(yù)測角點(diǎn)的位置:
(2)
式中:pcij是通道c在坐標(biāo)(i,j)的預(yù)測概率;ycij是通道c在坐標(biāo)(i,j)的真實(shí)標(biāo)記;C是通道數(shù);H是高度;W是寬度;N是物體個數(shù);β=4;a=2。
1.4.2 嵌入層
為匹配同一個行人目標(biāo)的左上角點(diǎn)和右下角點(diǎn),使Lpull預(yù)測同一目標(biāo)的兩角點(diǎn)損失盡可能小,Lpush預(yù)測不同目標(biāo)的兩角點(diǎn)損失盡可能大,在此網(wǎng)絡(luò)中改進(jìn)Lpull損失:
(3)
(4)
式中:etk是左上角點(diǎn)的熱力向量;ebk是右下角點(diǎn)的熱力向量;ek是etk和ebk的均值;ej是ek向量互換二三列。
1.4.3 偏置層
采用的沙漏網(wǎng)絡(luò)存在下采樣和重新上采樣的過程,網(wǎng)絡(luò)會根據(jù)取整后的下采樣坐標(biāo)計(jì)算,映射到原始圖像中的坐標(biāo),整個過程會產(chǎn)生精度損失[17]:
(5)
(6)
(7)
式中:οk是偏移量;xk是角點(diǎn)k的x軸坐標(biāo);yk是角點(diǎn)k的y軸坐標(biāo);n是下采樣的倍數(shù);SmoothL1Loss(·)是損失函數(shù);?x」是不大于x的最大整數(shù)。
由于沒有開源的林區(qū)行人數(shù)據(jù)集,所以模型使用COCO2014數(shù)據(jù)集,從中提取行人數(shù)據(jù)集。其中,訓(xùn)練集45 174張,測試集21 634張,共計(jì)66 808 張,每張圖片中的行人數(shù)量不等,尺度不一,共計(jì)273 469個行人樣本。
試驗(yàn)環(huán)境為:IntelXeonGlod 5217 CPU 3 GHz,64 GB 內(nèi)存,NvidiaTITANRTX 24G,Ubuntu 18.04,64位操作系統(tǒng)。
選擇主流的深度學(xué)習(xí)框架pytorch作為試驗(yàn)平臺。訓(xùn)練過程的參數(shù)設(shè)置:批大小為8,學(xué)習(xí)率為0.000 1,65萬次迭代后衰減1次學(xué)習(xí)率,衰減因子為0.1,共進(jìn)行73萬次的迭代。網(wǎng)絡(luò)的輸入大小為511×511,輸出大小為64×64。
選用行人檢測的平均準(zhǔn)確率(A)作為評價指標(biāo)[18],該式表達(dá)如下:
(8)
(9)
(10)
式中:P是準(zhǔn)確率;R是召回率;Tp是預(yù)測行人目標(biāo)正確的正樣本數(shù);Fp是預(yù)測行人目標(biāo)錯誤的正樣本數(shù);Fn是預(yù)測行人目標(biāo)錯誤的負(fù)樣本數(shù)。
在計(jì)算準(zhǔn)確率和召回率時,本研究設(shè)定行人目標(biāo)的標(biāo)注框和預(yù)測的邊界框的交并比大于0.5時為正例,其余均為負(fù)例,并依次增加0.05到交并比大于0.95時為正例,其余均為負(fù)例,計(jì)算10次結(jié)果的均值,即為AP[19-20]。其中,小尺度目標(biāo)(區(qū)域面積<32像素×32像素)的評價指標(biāo)為APs,中等尺度目標(biāo)(32像素×32像素<區(qū)域面積<96像素×96像素)的評價指標(biāo)為APm,大尺度目標(biāo)(區(qū)域面積>96像素×96像素)的評價指標(biāo)為APl。則交并比(δ)為:
(11)
式中:Apre是網(wǎng)絡(luò)預(yù)測的邊界框;Atrue是行人的標(biāo)注框。
使用COCO2014行人數(shù)據(jù)集訓(xùn)練本研究提出的算法CornerNet-P。訓(xùn)練集共計(jì)184 951個行人樣本,最終整個算法訓(xùn)練過程的損失變化曲線如圖5所示,經(jīng)過73萬次迭代后本研究的模型達(dá)到了收斂,損失在1~4之間小幅震蕩。
圖5 損失函數(shù)曲線圖
為了驗(yàn)證改進(jìn)算法的可行性和先進(jìn)性,與YOLOv4算法在COCO2014行人數(shù)據(jù)集上訓(xùn)練得到的模型進(jìn)行比較。CornerNet-P和YOLOv4在同一測試數(shù)據(jù)集上的檢測效果如表1所示。
表1 2種算法的評價指標(biāo)
與常用的主流目標(biāo)檢測算法YOLOv4相比,CornerNet-P對所有行人樣本檢測的平均準(zhǔn)確率提高了1.7%,檢測速度提高了5.1%。CornerNet-P的編程語言雖然為Python,語言的運(yùn)算速度比C語言慢,但CornerNet-P的整體檢測速度和檢測精度都優(yōu)于C語言編寫的YOLOv4算法。針對不同尺度行人目標(biāo)的檢測結(jié)果如下:
1)對于小尺度和大尺度的行人目標(biāo),CornerNet-P算法對于APs和APl的平均準(zhǔn)確率比YOLOv4算法分別提高了3.9%和7.0%,其檢測精度明顯優(yōu)于YOLOv4;
2)對于中等尺度的行人目標(biāo),CornerNet-P算法對于APm的平均準(zhǔn)確率比YOLOv4算法降低了11.0%,檢測效果略有不足。
同時,測試集中包含496張真實(shí)的林區(qū)行人圖像,選取其中幾張具有代表性的圖像,分別利用CornerNet-P和YOLOv4算法進(jìn)行檢測,檢測結(jié)果如圖6所示。其中,左側(cè)圖片均為利用改進(jìn)的CornerNet-P算法獲得的檢測結(jié)果,右側(cè)圖片均為利用YOLOv4獲得的檢測結(jié)果。
圖6 算法檢測結(jié)果對比
由圖6a可以看出,2種算法在正常尺度下的林區(qū)行人檢測性能相當(dāng),都能準(zhǔn)確地檢測出圖像中的行人位置;圖6b中當(dāng)行人目標(biāo)尺度較小時,CornerNet-P算法能準(zhǔn)確地檢測出2個行人的位置,而YOLOv4算法也同樣可以檢測出;圖6c中當(dāng)檢測多目標(biāo)且目標(biāo)著裝與背景相似時,CornerNet-P算法能準(zhǔn)確地檢測出大部分行人,但仍漏檢1人;圖6d、e中當(dāng)行人出現(xiàn)遮擋時,CornerNet-P算法檢測效果也較好??傮w來說,CornerNet-P算法在林區(qū)行人檢測性能上優(yōu)于YOLOv4算法。
為解決林區(qū)行人遮擋和著裝與背景色調(diào)相似的檢測問題,本研究基于CornerNet-Lite算法,從行人的關(guān)鍵點(diǎn)預(yù)測出發(fā),通過改進(jìn)模型的損失函數(shù)得到CornerNet-P算法,以達(dá)到實(shí)時檢測林區(qū)行人的目的。與YOLOv4相比,在COCO2014行人數(shù)據(jù)集上該檢測算法的平均檢測準(zhǔn)確率提高了1.7%,檢測速度提高了5.1%,并且在真實(shí)的林區(qū)行人圖像上檢測效果較好,但在人物出現(xiàn)遮擋的情況下仍會出現(xiàn)漏檢,算法的檢測準(zhǔn)確性還有提升的空間。下一步將對算法進(jìn)行改進(jìn),加入盜伐者和護(hù)林者等人員的分類器,并且如果林區(qū)未來全面實(shí)行機(jī)器自動識別,尤其是林區(qū)中收集到海量的行人數(shù)據(jù)時,算法識別效果將會得到大幅度的提高。