劉宇航,馬健霄,王羽塵,白瑩佳,謝征俊
(南京林業大學汽車與交通工程學院,南京 210037)
良好的森林管護是減少林木盜伐、改善森林發展環境的必要條件。為做好森林管護工作,減少人力物力的消耗,可以利用快速發展的行人檢測算法,對非法闖入的行人進行檢測與甄別。當檢測出行人時立刻上報林業管理部門,對人員進行甄別,并對盜伐事件及時處理。為了實現對盜伐事件的快速響應,算法必須快速準確地檢測出林區的行人[1]。
由于林區植被茂盛,在采集圖像時極易出現不同程度的遮擋情況,行人的特征并不完整,并且大多數盜伐者著裝迷彩服,與背景的色調相似度很大,所以林區行人檢測難度較大,需要對現有的檢測算法進行優化。傳統的行人檢測方法主要基于人為設計的特征提取器。周劍宇等[2]使用基于先驗知識的Haar-Like特征,通過檢測行人的上半身來確定行人的位置;Dalal等[3]使用局部歸一化的方向梯度直方圖(histogram of oriented gradien,HOG)表征行人的特征并檢測;Ahonen等[4]通過劃分圖像區域并提取局部二值模式特征來檢測行人。這種傳統的方法要求研究人員根據不同的檢測任務進行調整,設計特定的特征提取器,泛化能力較差,很難達到林區行人檢測的要求。
近年來,隨著計算機硬件設備的提升,深度學習技術快速發展。卷積神經網絡可以替代傳統的人為設計特征,具有特征表達能力和魯棒性較強的特點,在圖像分類、目標檢測等計算機視覺領域取得了巨大的成果,出現了大量基于深度學習的檢測算法。Girshick等[5]引入了兩階段法并提出R-CNN,使用選擇性搜索生成感興趣區(region of interest),從圖像中提取每個區域后由卷積神經網絡處理來檢測;此外,Girshick[6]又設計了ROI池化,提出了Fast-RCNN。Ren等[7]通過引入區域提案網絡(region proposal networks,RPN),提出了Faster-RCNN,該網絡使用一組預先設定的候選框進行檢測,提高了檢測行人的效率。隨后,Redmon等[8]消除了ROI池化并提出了YOLO,引入了單階段的方法直接從圖像中預測邊界框坐標;Redmon等[9-10]調整了其網絡結構,提出了YOLO9000和YOLOv3。Bochkovskiy等[11]利用數據增強技術、特征增強模型和增大感受野等改進YOLOv3,提出了YOLOv4。Lin等[12]提出了RetinaNet,解決了單階段方法由于正負候選框的巨大不平衡導致的檢測精度不足。但現階段大多數研究都是基于候選框,參數過多,冗余的計算量巨大,而在實際情況下,需要快速而準確地檢測出行人,從而及時采取措施制止林木盜伐的行為。同時,檢測設備一般配備功耗較低的單模塊超級計算機,將模型應用在邊緣位置訓練和計算,快速有效的算法可以提高訓練效率,減少能源的消耗。
針對上述問題,筆者基于CornerNet-Lite算法[13]框架,從行人的關鍵點預測出發進行檢測,優化算法的損失函數,通過改進熱力層損失預測行人位置框角點的位置,改進嵌入層的損失來匹配同一目標的角點,計算偏置層損失,減少圖像尺度變化過程中由于取整丟失的精度信息,提出一種林區行人目標實時檢測算法CornerNet-P,并與YOLOv4對比,對模型的檢測速度和檢測精度進行驗證。
林區盜伐者大多著裝迷彩服,與背景的色調相似度很大。根據林區行人的檢測特點,算法首先對輸入圖像進行預處理,使用沙漏網絡(hourglass network)作為主干網絡[14],提取行人的特征信息,避免相似的特征導致行人的錯檢和誤檢。同時,林區由于植被茂盛,在采集行人圖像時容易出現不同程度的遮擋,采集到的行人特征也并不完整,所以本研究將行人的位置預測簡化為2個角點的預測,即左上角點和右下角點。對沙漏網絡輸出的特征進行角池化處理,獲得角點的位置特征信息。預測熱力圖來檢測行人的角點位置;預測角點的嵌入層損失,使2個角點嵌入到同一對象的距離更小,損失更低;預測網絡偏置層的損失,調整角點的位置,以生成更緊密的邊界框,如圖1所示。

圖1 CornerNet-P算法的網絡結構
算法使用7×7的卷積網絡和2個殘差塊(residual network)對輸入的林區行人圖像進行預處理[13],將分辨率降到64×64,提高本算法的訓練速度,整體流程如圖2所示。

圖2 輸入圖像的預處理
算法使用2個堆疊的沙漏網絡進行特征提取,輸出的特征圖分辨率為64×64。沙漏網絡由2個3×3卷積層和1個跳躍連接的殘差塊構成,但網絡參數過多,檢測時間較長。在本沙漏網絡中著重減少像素的處理量,結合SqueezeNet[15]的思想,使用1個輕量級的網絡fire module,如圖3所示。主要使用2種降低網絡復雜度的方法:1)使用1×1卷積核處理圖像,改變圖像的維度,減少網絡的參數,節省計算量;2)通過1個由1×1和3×3卷積核組成的擴展層來提供結果。

圖3 fire module的網絡結構
為解決林區行人遮擋和著裝與背景色調相似的問題,可以將行人位置簡化為左上角點和右下角點。但在不同的行人上,角點位置無規律可循,采用普通池化操作,預測角點的位置會比較困難。針對左上角點的右邊有目標頂端的特征信息,角點的下邊有目標左側的特征信息,采用角池化網絡提取圖片的特征信息,預測行人的位置。
角池化層是通過對主干網絡輸出的特征圖進行水平方向從右向左的最大池化,得到特征圖;再從下到上做最大池化,得到另一個特征圖;將這2個特征圖的每個像素值相加,得到角點的位置特征信息,如圖4所示。

圖4 角池化過程
整個網絡的損失分為3個部分,分別為熱力圖、嵌入層和偏置層損失。本研究為提高整體模型的迭代速度,引入Adam優化整個損失[16],將α設置為0.5,β設置為0.5,γ設置為1,則:
L=Lheat+αLpull+βLpush+γLoff
(1)
式中:L是整個網絡的總損失;Lheat是預測角點時的誤差;Lpull是預測同一目標2個角點的損失;Lpush是預測不同目標2個角點的損失;Loff是在取整計算時丟失的精度信息。
1.4.1 熱力層
基于焦點損失(focal loss)[12],改進熱力層損失,預測角點的位置:
(2)
式中:pcij是通道c在坐標(i,j)的預測概率;ycij是通道c在坐標(i,j)的真實標記;C是通道數;H是高度;W是寬度;N是物體個數;β=4;a=2。
1.4.2 嵌入層
為匹配同一個行人目標的左上角點和右下角點,使Lpull預測同一目標的兩角點損失盡可能小,Lpush預測不同目標的兩角點損失盡可能大,在此網絡中改進Lpull損失:
(3)
(4)
式中:etk是左上角點的熱力向量;ebk是右下角點的熱力向量;ek是etk和ebk的均值;ej是ek向量互換二三列。
1.4.3 偏置層
采用的沙漏網絡存在下采樣和重新上采樣的過程,網絡會根據取整后的下采樣坐標計算,映射到原始圖像中的坐標,整個過程會產生精度損失[17]:
(5)
(6)
(7)
式中:οk是偏移量;xk是角點k的x軸坐標;yk是角點k的y軸坐標;n是下采樣的倍數;SmoothL1Loss(·)是損失函數;?x」是不大于x的最大整數。
由于沒有開源的林區行人數據集,所以模型使用COCO2014數據集,從中提取行人數據集。其中,訓練集45 174張,測試集21 634張,共計66 808 張,每張圖片中的行人數量不等,尺度不一,共計273 469個行人樣本。
試驗環境為:IntelXeonGlod 5217 CPU 3 GHz,64 GB 內存,NvidiaTITANRTX 24G,Ubuntu 18.04,64位操作系統。
選擇主流的深度學習框架pytorch作為試驗平臺。訓練過程的參數設置:批大小為8,學習率為0.000 1,65萬次迭代后衰減1次學習率,衰減因子為0.1,共進行73萬次的迭代。網絡的輸入大小為511×511,輸出大小為64×64。
選用行人檢測的平均準確率(A)作為評價指標[18],該式表達如下:
(8)
(9)

(10)
式中:P是準確率;R是召回率;Tp是預測行人目標正確的正樣本數;Fp是預測行人目標錯誤的正樣本數;Fn是預測行人目標錯誤的負樣本數。
在計算準確率和召回率時,本研究設定行人目標的標注框和預測的邊界框的交并比大于0.5時為正例,其余均為負例,并依次增加0.05到交并比大于0.95時為正例,其余均為負例,計算10次結果的均值,即為AP[19-20]。其中,小尺度目標(區域面積<32像素×32像素)的評價指標為APs,中等尺度目標(32像素×32像素<區域面積<96像素×96像素)的評價指標為APm,大尺度目標(區域面積>96像素×96像素)的評價指標為APl。則交并比(δ)為:
(11)
式中:Apre是網絡預測的邊界框;Atrue是行人的標注框。
使用COCO2014行人數據集訓練本研究提出的算法CornerNet-P。訓練集共計184 951個行人樣本,最終整個算法訓練過程的損失變化曲線如圖5所示,經過73萬次迭代后本研究的模型達到了收斂,損失在1~4之間小幅震蕩。

圖5 損失函數曲線圖
為了驗證改進算法的可行性和先進性,與YOLOv4算法在COCO2014行人數據集上訓練得到的模型進行比較。CornerNet-P和YOLOv4在同一測試數據集上的檢測效果如表1所示。

表1 2種算法的評價指標
與常用的主流目標檢測算法YOLOv4相比,CornerNet-P對所有行人樣本檢測的平均準確率提高了1.7%,檢測速度提高了5.1%。CornerNet-P的編程語言雖然為Python,語言的運算速度比C語言慢,但CornerNet-P的整體檢測速度和檢測精度都優于C語言編寫的YOLOv4算法。針對不同尺度行人目標的檢測結果如下:
1)對于小尺度和大尺度的行人目標,CornerNet-P算法對于APs和APl的平均準確率比YOLOv4算法分別提高了3.9%和7.0%,其檢測精度明顯優于YOLOv4;
2)對于中等尺度的行人目標,CornerNet-P算法對于APm的平均準確率比YOLOv4算法降低了11.0%,檢測效果略有不足。
同時,測試集中包含496張真實的林區行人圖像,選取其中幾張具有代表性的圖像,分別利用CornerNet-P和YOLOv4算法進行檢測,檢測結果如圖6所示。其中,左側圖片均為利用改進的CornerNet-P算法獲得的檢測結果,右側圖片均為利用YOLOv4獲得的檢測結果。

圖6 算法檢測結果對比
由圖6a可以看出,2種算法在正常尺度下的林區行人檢測性能相當,都能準確地檢測出圖像中的行人位置;圖6b中當行人目標尺度較小時,CornerNet-P算法能準確地檢測出2個行人的位置,而YOLOv4算法也同樣可以檢測出;圖6c中當檢測多目標且目標著裝與背景相似時,CornerNet-P算法能準確地檢測出大部分行人,但仍漏檢1人;圖6d、e中當行人出現遮擋時,CornerNet-P算法檢測效果也較好。總體來說,CornerNet-P算法在林區行人檢測性能上優于YOLOv4算法。
為解決林區行人遮擋和著裝與背景色調相似的檢測問題,本研究基于CornerNet-Lite算法,從行人的關鍵點預測出發,通過改進模型的損失函數得到CornerNet-P算法,以達到實時檢測林區行人的目的。與YOLOv4相比,在COCO2014行人數據集上該檢測算法的平均檢測準確率提高了1.7%,檢測速度提高了5.1%,并且在真實的林區行人圖像上檢測效果較好,但在人物出現遮擋的情況下仍會出現漏檢,算法的檢測準確性還有提升的空間。下一步將對算法進行改進,加入盜伐者和護林者等人員的分類器,并且如果林區未來全面實行機器自動識別,尤其是林區中收集到海量的行人數據時,算法識別效果將會得到大幅度的提高。