?

基于改進YOLO v5的城市樹木檢測

2024-01-23 07:23竇安亮杜一君劉義亭彭宇洋
關鍵詞:樹木損失卷積

竇安亮,路 紅,杜一君,劉義亭,彭宇洋

(南京工程學院自動化學院, 江蘇 南京 211167)

隨著綠色城市建設推進,城市的綠化面積不斷增加,樹木涂白以及草坪修剪等綠化管理和養護工作量越來越大.為了降低人工成本和節約勞動力資源,涂白機器人和割草機器人等智能綠化設備的研發勢在必行.基于視覺的樹木檢測和識別作為智能化核心技術之一也成為研究的重中之重.

由于缺乏有效的圖像表示,傳統的目標檢測算法都基于手工特征構建,通過設計復雜的特征描述模型及加速算法以利用有限的計算資源[1].文獻[2]根據Hough變換以及對樹木紋理的分析提出了一種基于圖像處理的樹木檢測算法;文獻[3]通過對樹木基本測樹因子的檢測提出了一種基于HALCON的樹木檢測方法;文獻[4]結合激光腳點幾何分布特征,應用冠層高度模型CHM與拉普拉斯算子研究樹木提取及機載LiDAR樹木檢測在電力巡線中的應用;文獻[5]利用HALCON算子將RGB圖像轉換到HSV空間后進行樹木檢測算法研究,并運用MER算法生成樹木輪廓的最小外接矩形,為后續的樹木間距測量等工作奠定基礎.隨著計算機技術以及硬件算力的發展與完善,基于深度學習的樹木檢測算法開始大放異彩.文獻[6]利用車載激光雷達系統采集城市道路兩旁樹木的點云和圖像,對樹木進行各項參數的估計與分類研究,并利用Faster R-CNN網絡對城市道路多視角圖像中的樹木進行檢測和分類;文獻[7]在快速區域神經網絡目標檢測框架基礎上,通過對抗生成訓練策略學習表征樹木的最少特征信息,有效降低陰影對樹木檢測的干擾;文獻[8]出基于優化Tiny YOLO v4算法的草坪樹木檢測算法,為在算力有限的割草機器人上實現草坪樹木目標檢測提供了有效思路.

本文采用YOLO v5中體積最小的YOLO v5s目標檢測模型為基礎[9-10],通過引入BiFPN-ECA結構和GSConv卷積結構[11-13],使網絡能夠更加快速地進行特征提取及多尺度特征的融合,在大幅降低模型大小、提升模型性能的同時避免犧牲模型精度;損失函數使用SIoU[14],從匹配的方向、重疊區域、框中心間的距離、縱橫比四個方面考慮,加快了訓練過程,并且獲得了更好的樹木檢測效果.

1 改進的YOLO v5算法流程

改進的YOLO v5模型如圖1所示.模型的Backbone部分主要采用C3殘差網絡結構來增強梯度傳播,再通過SPPF空間金字塔池化結構來應對目標多尺度問題.Neck部分的作用是進行多特征融合,這里將原本的PA-Net結構替換成本文提出的BiFPN-ECA結構,引入高效通道注意力機制(efficient channel attention,ECA)增加雙向加權特征金字塔(bidirectional feature pyramid network,BiFPN)對關鍵特征的關注度,提升特征提取速度、增強特征融合質量;Neck部分的卷積采用GSConv卷積替換普通卷積以減少計算量;Head部分使用SIoU損失函數替換CIoU,加快網絡收斂,進一步提升回歸精度,分別在20×20、40×40和80×80尺度上實現大中小目標類別和位置預測.

圖1 改進YOLO v5網絡結構圖

1.1 BiFPN-ECA結構

圖2 BiFPN-ECA結構

X′=δ(Conv1d(g(X)))?X

(1)

式中:g(X)為全局平均池化;Conv1d為1×1卷積操作;δ為Sigmoid激活函數;?為逐元素相乘;X為輸入特征.

1.2 GSConv結構

模型輕量化比較常用的一種方法為使用深度可分離卷積(depth-wise separable convolution,DSC)操作替換稀疏卷積(sparse convolution,SC)操作來減少參數量[15].然而DSC操作輸入圖像的通道信息在計算過程中是分離的,這會導致特征提取和融合能力有所降低,雖然模型的推理速度大大加快,但是模型精度有不小的損失.

為了在大幅降低模型規模、提升模型性能的同時盡可能少地犧牲模型精度,本文采用GSConv卷積結構,如圖3所示,通過增加一個shuffle操作使得密集卷積SC操作生成的信息與DSC操作生成的信息充分融合.本文方法與SC、DSC的可視化對比結果如圖4所示.由圖4可見,與DSC輸出的特征圖相比,GSConv輸出的特征圖與SC輸出的特征圖更為相似,這表明使用計算量較小的GSConv結構的模型精度與使用SC輸出的原始模型精度接近.

圖3 GSConv結構

1.3 SIoU邊界框回歸損失

目標檢測網絡的訓練一般需要至少定義分類損失和邊界框回歸損失兩個損失函數,而損失函數的定義往往對檢測精度以及訓練速度產生較大的影響.本文采用SIoU損失函數,通過引入向量角度,可以盡可能減少與距離相關的變量,如圖5所示.

圖5 SIoU損失函數計算

SIoU損失函數考慮的懲罰指標包括向量角度損失Λ、中心點距離損失Δ、縱橫比損失Ω、預測框與目標框之間的重疊程度損失IoU.當向量角度α≤45°時,收斂方向沿著α減小的方向;反之,則沿著α的余角β減小的方向收斂.設:BGT為真實邊界框的面積;B為預測邊界框的面積;ρx=(cw/cx)w;ρy=(ch/cy)2;v∈[2,θ];qw為真實邊界框寬度差和高度差的絕對值與最大值之比;qh為預測邊界框寬度差和高度差的絕對值與最大值之比.各指標計算公式為:

(2)

(3)

(4)

預測框與目標框之間的重疊程度損失計算公式為:

(5)

最終整個SIoU的計算公式為:

LSIoU=1-IoU+(Δ+Ω)/2

(6)

2 試驗與結果分析

2.1 自建試驗數據集

實地采集校園內以及學校附近常見的綠化樹木(梧桐樹、銀杏樹、玉蘭樹等)的圖像和視頻,對收集的視頻采用幀差法將視頻的每一幀圖像由RGB色彩空間轉化到LUV色彩空間(如圖6所示),取幀間差分強度為極大值的幀作為視頻的關鍵幀進行樣本提取,連續幀的平均差分強度計算式為:

圖6 關鍵幀提取

(7)

式中:fn(x′,y′,r)、fn-1(x′,y′,r)分別為第n幀和第n-1幀像素坐標(x′,y′)處的r分量強度,r={L,U,V};W、H分別為每一幀圖像的寬度和高度.

通過Python軟件在網絡上爬取一些其他城市、城鎮以及鄉村街道上的綠化樹木圖像.將實地采集、視頻抽幀、網絡爬取獲得的圖像篩選后共獲取到2 000幅圖像,為了進一步提升數據集的豐富性和抗干擾性,通過旋轉、HSV偏移以及添加噪聲等方法進行圖像增強.旋轉采用固定步長旋轉,計算式為:

(8)

式中:(x0,y0)為圖像初始坐標;(x1,y1)為旋轉后的圖像坐標;Hrotate為旋轉矩陣;i為旋轉的次數,i∈[1,2,3,…,n];θ為每次旋轉的步長.

如圖7所示,最終獲得5 000幅圖像的數據集,按照8∶1∶1的比例劃分本文改進的YOLO v5模型所需要的訓練集、驗證集和測試集,即4 000幅圖像為訓練集,500幅圖像為驗證集,500幅圖像為測試集.運用Labelimg軟件對數據集進行YOLO格式的標注,類別除了需要的正樣本已涂白的樹(painted tree)和未涂白的樹(unpainted tree),還增加了道路上容易產生誤識別的強干擾物的標簽,如指示牌(indicator)、路燈(street lamp)、電線桿(telegraph pole)等,同時還包含行人(people)、車輛(car)等常見類別.

圖7 城市樹木數據集

2.2 模型訓練與結果

試驗環境為:Windows操作系統;GeForce GTX 3080顯卡進行運算;顯存大小為10 GB;CPU配置為Intel(R)Core(TM)i7-12700F,CUDA版本為11.4.0;Pytorch版本為1.10.2;Python語言環境為3.7.4.試驗總迭代次數為300次,迭代批量大小設置為4,優化器選擇SGD,并設置早停機制,防止數據過擬合.

圖8為改進后模型訓練結果.由圖8可見,大概在150個迭代周期后,模型趨于收斂,收斂速度較快.本文采用常用評價指標準確率、召回率、平均精度均值mAP_0.5等進行目標檢測,改進后的YOLO v5模型的mAP_0.5達到了40.1%,比原始YOLO v5模型的mAP_0.5提高了約5%.

(a) 訓練回歸框損失

改進后算法的樹木檢測結果如圖9所示.由圖9(a)和圖9(b)可見,在白天光照不足(如逆光)的情況下,本文方法可以識別出涂白的樹木及未涂白的樹木,并且準確區分路燈、指示牌等街道上常見的強干擾物;由9(c)可見,在樹木比較密集以及多尺度的情況下,本文檢測方法可以準確識別遠處以及近處的樹木,同時發現樹木之間的行人,從而可以避開行人,保證安全;由圖9(d)可見,在夜間光照不足、樹木多尺度的情況下,本文檢測方法能夠準確識別出密集的樹木以及路燈等強干擾物.

(a) 場景1

為了直觀地驗證改進后算法的優越性、體現改進前后算法的差異性,選擇更加復雜的場景對改進前后的算法進行檢測結果對比.如圖10所示,在夜間、復雜背景下(檢測目標具有多尺度變化情形),原YOLO v5算法出現了漏檢、誤檢等問題,而改進后的算法依然可以準確地識別.

(a) 原YOLO v5算法

2.3 消融試驗

為了進一步確認每個改進點的有效性,進行消融試驗,試驗結果如表1所示.表1中模型A為原YOLO v5算法;模型B為在模型A的基礎上引入BiFPN-ECA結構,模型B的平均精度均值mAP_0.5較模型A提升了3%,而模型參數量只增加了0.4 MB;模型C為在模型B的基礎上引入GSConv結構,雖然損失了一點模型精度,但是模型的參數量約減小為原來的50%;模型D為在模型C的基礎上引入SIoU損失函數,對模型有3%的mAP_0.5提升以及0.3 MB的參數量減少,模型的幀率也增加到了52.63幀/s.試驗結果表明,BiFPN-ECA結構、GSConv卷積操作以及SIoU損失函數均可以提升樹木檢測算法的檢測效果,最終改進后的方法相比于原YOLO v5(模型A)平均精度均值提升了5%,模型參數量減少了接近50%,模型的幀率提升了5幀/s.

表1 消融試驗結果

3 結語

針對目前城市道路環境復雜、草坪樹木密集等引起的樹木誤檢、漏檢以及模型較大不易部署在邊緣計算設備上等問題,提出一種基于改進YOLO v5的城市樹木檢測算法.改進算法包括:設計一種BiFPN-ECA結構,增強特征融合質量;利用改進GSConv卷積結構,提升特征提取能力并減少運算量;引入SIoU損失函數,加快網絡收斂,進一步提升回歸精度.采集城市常見綠化樹木圖像和視頻,建立城市綠化樹木樣本集進行模型對比試驗,試驗結果表明:改進后方法的mAP_0.5相比于原YOLO v5模型的提升了5%,模型參數量減少了接近50%,模型的幀率提升了5幀/s.改進后的算法能夠在滿足樹木檢測的精度的前提下保證檢測的實時性.本文所提出方法和試驗結果對推進綠色城市建設和城市綠化智能化設備的落地具有一定的理論和研究意義.

猜你喜歡
樹木損失卷積
基于3D-Winograd的快速卷積算法設計及FPGA實現
胖胖損失了多少元
樹木之最
從濾波器理解卷積
玉米抽穗前倒伏怎么辦?怎么減少損失?
基于傅里葉域卷積表示的目標跟蹤算法
辨認樹木
樹木也睡覺
一般自由碰撞的最大動能損失
樹木之最
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合