?

基于YOLOv5的違章建筑檢測方法

2021-10-28 06:01娟,羅
計算機工程與應用 2021年20期
關鍵詞:卷積損失函數

于 娟,羅 舜

福州大學 經濟與管理學院,福州 350108

隨著我國經濟的的不斷發展,城市規模日益擴大,對城市管理也提出更高的要求,其中就包括違章建筑的檢察。城市違章建筑是指不符合土地規劃和城市管理相關法律法規,擅自改變建筑樣式的建筑,例如彩鋼瓦房、破舊平房等。城市違章建筑占用城市發展空間,破壞城市形象,甚至危害到人民的生命財產安全,是我國城市管理發展路程上迫切需要解決的路障。目前,我國城市管理中的違章建筑檢測主要依賴效率低下的人工訪查方式。隨著無人機航拍科技的不斷普及和深度學習方法的日益成熟[1],違章建筑的自動檢測成為可能。

目前,城市違章建筑物的拍攝方式主要有兩種:衛星遙感和無人機航拍。在基于衛星遙感影像的違章建筑檢測方面,文獻[2-3]采用多時相影像和變化檢測相結合的方法對違章建筑進行監測,通過對比不同時期的圖像得到區域的變化圖斑,并以人工解譯的方式判斷變化區域,定位違章建筑。文獻[4]改進形態學標記分水嶺算法,強化違章建筑的提取效果,將結果與定位數據進行疊加與匹配,得出最終的檢測結果。由于衛星必須在規定的軌道上行進,其拍攝范圍受到約束,且其拍攝結果易受到外部條件的干擾,所以衛星遙感影像不適用于城市違章建筑的實時檢測。另一方面,無人機航拍科技近幾年飛速發展,具有靈活、成本低、操作簡單等優點,且其影像分辨率高,能夠清晰地反映建筑物的基本特征,更適用于地面小目標的檢測。因此,本文采用無人機航拍圖像作為數據源研究城市違章建筑的自動檢測方法。

同時,深度學習方法在圖像目標檢測問題上表現相當出色。2012年,Krizhevsky等[5]提出了一個卷積神經網絡(Convolutional Neural Networks,CNN)結構——AlexNet,使用非線性激活函數ReLu[6]與Dropout[7]方法,在減少過擬合方面取得了卓越的效果。自此,基于深度學習的圖像目標檢測方法研究迅速發展,目前已形成兩類主要的檢測流程。其中一類是基于候選區域的深層卷積網絡,首先生成可能包含檢測目標的候選區塊,再用CNN對候選區塊進行分類和位置回歸并得到檢測框,其代表模型有R-CNN(Region CNN)[8]、Fast R-CNN(Fast Region-Based CNN)[9]和Faster R-CNN(Faster Region-Based CNN)[10]等。另一類為基于回歸計算的深層卷積網絡的目標檢測。這類方法將目標定位整合在單一CNN網絡中,只需進行向前運算就能預測不同目標的類別與位置。第二類方法的準確度較低,但檢測速度比前一類快,其標志性模型有YOLO(You Only Look Once)[11]、SSD(Single Shot MultiBox Detector)[12]和YOLOv4(YOLO Version 4)[13]等。

YOLOv5屬于目前比較優秀的檢測算法,學者們將它應用于不同對象的檢測中,并提出不同的改進方案。對于牛日常行為的實時檢測,文獻[14]改進YOLOv5,構建牛特征部位的空間關系向量,對圖像中的多目標和重疊目標取得較優的檢測效果;文獻[15]對YOLOv5網絡的卷積層進行降維并使用非極大值抑制提高了噴碼字符的檢測精度。雖然改進后的YOLOv5在各個數據集上取得了較優的檢測結果,但是不能直接運用于城市違章建筑的檢測,因為違章建筑多為小目標且有許多被部分遮擋的目標,而YOLOv5的網絡參數過多,使得訓練時間變長,難度變大,圖像的檢測時間也會變長,難以同時滿足檢測中準確性和實時性的要求。

綜上,本文提出一種基于YOLOv5卷積神經網絡模型,對無人機航拍的城市建筑圖像進行處理,改進YOLOv5的批量標準化模塊、損失函數與網絡結構,自動定位其中的違章建筑,以提高城市違章建筑檢測的準確率和速度。

1 違章建筑數據集預處理

1.1 數據來源

本文研究的違章建筑圖像來自無人機航拍的城鎮建筑影像,尺寸為3 992像素×2 442像素,共107張。圖像為白天晴天航拍,包括彩鋼瓦房和其他疑似違章建筑,其中包括單目標圖像、多目標圖像以及違章建筑被電線桿等異物遮擋的特殊圖像。圖1為幾種典型的違章建筑示例圖。

圖1 數據集中的城市違章建筑的主要類型Fig.1 Main types of urban illegal constructions in data set

1.2 數據集構建

原本的航攝圖片尺寸較大,如果用原尺寸作為訓練所用數據集會導致參數過多的現象,所以首先通過像素變換的方式將原來所有的航拍圖片尺寸統一縮小為608像素×608像素。并且在原圖的基礎上對圖像進行旋轉變化、裁剪變換、對比度變換等,使得違章建筑圖像有不同的表現形式和尺度,這樣有助于避免過擬合現象的產生,從而提高訓練網絡的泛化能力[16]。圖2為不同表現形式的預處理圖片。

圖2 預處理圖片示意圖Fig.2 Schematic diagram of preprocessing picture

通過預處理后最終得到1 000張城市違章建筑圖片,模仿VOC2007數據集格式,利用LabelImg標注軟件依次對這些圖片中的違章建筑進行標注外圍框,轉化為訓練所需要的xml格式[17]。LabelImg是使用Python語言編寫用于深度學習的圖片數據集制作的標注工具,用來標注圖片中目標的類別名稱與位置的信息。

1.3 數據集分析

1 000幅存在城市違章建筑的圖像中,共有2 062個城市違章建筑目標,其邊界框分布如圖3所示,縱坐標表示標記框高度占原圖高度的比例,橫坐標為寬度占比。由圖3可知,目標框大小具有多樣性,但總體占原圖像比例較小,屬于小目標,背景信息較多。

圖3 邊界框分布圖Fig.3 Boundary box distribution

2 YOLOv5目標檢測算法及改進

2.1 YOLOv5算法概述

Ultralytics LLC公司提出的YOLOv5(You Only Look Once version 5),為基于YOLOv4的改進版本,是目前從準確性以及檢測速度效果來說比較優秀的單階段(one-stage)檢測網絡[18]。在吸取了之前版本以及其他網絡的優點之后,YOLOv5改變了之前YOLO目標檢測算法的檢測速度較快但精度不高的特點,YOLOv5目標檢測算法在檢測準確度以及實時性上都有所提高,滿足視頻圖像實時檢測需求,同時結構也更加小巧,其網絡模型分為4個部分,分別為Input(輸入端)、Backbone(骨干網絡)、Neck(多尺度特征融合模塊)和Prediction(預測端),其網絡結構如圖4[19]所示。

圖4 YOLOv5網絡結構示意圖Fig.4 Network structure diagram of YOLOv5

2.1.1 Input端

Input端包含Mosaic數據增強、自適應錨框計算和自適應圖片縮放三個部分。YOLOv5的輸入端采用了和YOLOv4一樣的Mosaic數據增強的方式,使用隨機裁剪、隨機縮放和隨機分布的方式對圖像進行拼接,將4張圖片拼接,豐富了檢測數據集,讓網絡的魯棒性更好,并且減少了GPU的計算,增加了網絡的普遍適用性;自適應錨框計算針對不同的數據集設定初始的錨框,因原錨框已達到較好效果,本文實驗的錨框參數不變,錨框參數分別為[116,90,156,198,373,326]、[30,61,62,45,59,119]、[10,13,16,30,33,23],并在初始錨框的基礎上輸出預測框,與真實框進行比對,計算差距后再反向更新,不斷迭代網絡參數,其過程如圖5所示;自適應圖片縮放則是將圖像統一縮放成統一尺寸。

2.1.2 Backbone

Backbone包括Focus結構和CSPNET(Cross Stage Partial Network,跨級部分網絡)結構。Focus將輸入的608×608×3的圖像進行切片操作,得到304×304×12的特征圖,然后再經過32個卷積核的卷積后得到304×304×32的特征圖,其過程如圖6所示。

圖6 Focus結構中切片和卷積得到的特征圖Fig.6 Feature maps obtained by slicing and convolution in focus structure

YOLOv5借鑒YOLOv4主干網絡中的CSP結構,設計了CSP1_X和CSP2_X兩種CSP結構,2者結構如圖4中所示,其中Backbone中包含CSP1_X模塊,Neck中包含CSP2_X模塊。

2.1.3 Neck

Neck使用FPN(Feature Pyramid Networks,特征金字塔網絡)+PAN(Pyramid Attention Network,金字塔注意力網絡)結構,其結構如圖7所示,FPN自頂向下將高層的特征信息通過上采樣的方式進行傳遞融合,傳達強語義特征,PAN為自底向上的特征金字塔,傳達強定位特征,兩者同時使用加強網絡特征融合能力。

圖7 Neck結構示意圖Fig.7 Neck structure diagram

2.1.4 Prediction

Prediction包括Bounding box損失函數和NMS(Non-Maximum Suppression,非極大值抑制)。YOLOv5使用GIOU_Loss作為Bounding box的損失函數,有效解決邊界框不重合的問題,并且提高了預測框回歸的速度和精度。在目標檢測預測階段使用加權NMS,對于多目標和有遮擋的目標增強了識別能力,獲得最優目標檢測框。

2.2 YOLOv5算法改進

2.2.1 批量標準化改進

批量標準化(Batch Normalization,BN)已成為現代神經網絡穩定訓練的默認組件,在BN中,中心化和縮放操作以及均值和方差統計用于批量維度上的特征標準化。BN的批依賴性使得網絡具有穩定的訓練和更好的表示,同時不可避免地忽略了實例之間的表示差異。為了對BN進行特征校正,借鑒代表性批量標準化的思想,將原來的BN模塊進行改進,在BN的原始標準化層的開始和結束處分別添加了中心和縮放校準[20]。首先對特征進行中心校準,如式(1)所示:

式中,X cm為中心校準后的特征圖,X為輸入的特征圖,滿足X∈RN×C×H×W(N、C、H、W分別表示批量大小batch size、通道數channel、輸入特征圖高度和輸入特征圖寬度);w m為可學習的權重向量,滿足w m∈R1×C×1×1,其數值隨網絡層數的變化如圖8(a)中所示,大多數層中的數值接近于0,并且其絕對值隨著層數的增加而增加,因為層數越高網絡就具有更多特定于實例的特征;⊙是點積運算器,它將兩個特征傳播成同一形狀,然后進行點積運算。為了更好地展示其效果,對網絡中的特征圖進行提取,其結果如圖9所示,可以看出最右邊經過中心校準后的特征圖比中間輸入的特征圖的特征分布更加顯著。

圖8 可學習權重變量折線圖Fig.8 Line chart of learnable weight variables

圖9 中心校準效果圖Fig.9 Centering calibration renderings

再對X cm進行中心化:

式中,E(X cm)表示X cm的均值。再對中心化后得到的X m進行縮放,得到式(3):

式中,Var(X cm)表示X cm的方差,ε為避免方差為0而設置的大于0的常數。接著在原本的縮放操作上,再添加縮放校準操作:

式中,w v,w b∈R1×C×1×1為可學習的權重向量,如圖8(b)中所示,與w m類似,大多數層中趨近于0且其絕對值隨著層數的增加而增加,R()為受限函數,可以定義為多種形式,這里將它定義為tanh函數,Xcs為縮放校準后得到的值,其效果和圖9相似。最后如式(5)所示,將訓練好的可學習尺度因子γ和偏差因子β作線性變換得到最終的代表性批量標準化結果Y:

通過在BN的原始標準化層的開始和結束處分別添加了中心和縮放校準,增強有效特征并形成更穩定的特征分布,加強了網絡模型的特征提取能力。

2.2.2 損失函數改進

YOLOv5算法對于目標框坐標回歸過程中采用的是均方誤差(Mean Square Error,MSE),使用交叉熵作為置信度和類別的損失函數。但MSE作為目標框損失函數,其損失值對目標框較為敏感,為了進一步提高收斂穩定性,本文在對置信度設計損失函數時將交叉熵損失替換為基于KL散度的分布損失函數。KL散度也被稱為相對熵[21],對于同一個連續變量的2個概率分布p和Q而言,KL散度的定義式為:

本文使用?表示模型對n個輸入樣本的坐標預測概率分布和真實標簽分布之間的KL散度最小化的參數變化過程,表達式如式(7)所示:

式中,Q D(x)表示真實標簽坐標概率分布,P?(x)表示預測坐標概率分布,定義Q D(x)和P?(x)均為高斯分布函數。真實標簽坐標概率分布和預測坐標概率分布越接近越好,因此將邊界框回歸損失函數定義如式(8)所示:

根據高斯分布函數性質推導,得到如下公式:

狄拉克函數的定義如式(10)所示,由于高斯分布在標準差接近0時為狄拉克函數的近似,于是將式(9)根據式(11)中的狄拉克函數的篩選性質推導,得到式(12):

由于常數項對于求導沒有影響,因此可以將不含參數的項舍去,得到如下公式:

式中,σ的初始值如果較大,很容易導致網絡在訓練的初始階段產生梯度爆炸現象從而導致模型無法正常收斂,且ln在數學計算中存在輸入受到限制的問題,因此本文在模型訓練的預測階段令變量α和σ滿足關系式(14),再將式(14)帶入式(13)中,得到損失函數如式(15)所示:

為了進一步增強模型的魯棒性,本文將KL損失函數進行平滑化處理,當|x g-x e|>1時,得到模型邊界框回歸損失函數:

在模型訓練過程中,經過平滑處理后的損失函數對噪聲大的樣本數據不會產生驟變,從而降低其在反向傳播過程中受到的干擾,模型收斂也更加穩定。

2.2.3 網絡結構改進

原YOLOv5中的CSPNET結構將基礎層的特征層劃分為兩部分,然后使用跨階段層次結構將兩者合并,使得網絡能夠實現更豐富的梯度組合信息,然而這也更容易導致信息損失與梯度混淆。因此,本文借鑒mobileneXt網絡[22]的思想,使用類沙漏狀模塊LSandGlass替代YOLOv5網絡中的Res unit殘差模塊。LSandGlass模塊的結構如圖10所示,不同于中間具有深度空間卷積的瓶頸結構,本文將3×3深度空間卷積層Dwise移動到具有高維表示的殘差路徑的兩端,并將YOLOv5的兩個基本組件CBL置于中間。兩次的深度卷積可以編碼更多的空間信息,并且使得更多的梯度跨多層傳播,減少了信息損失。圖11展示了使用LSandGlass模塊的前后比對,圖11左邊的兩張圖為未使用LSandGlass模塊,連續使用6次卷積的結果,可以看出沒有很好地提取出建筑的邊緣特征,信息丟失嚴重,圖11右邊的兩張圖為使用LSandGlass改進后的特征提取結果,建筑的邊緣特征信息得到了更好的提取,背景信息與特征信息也有更加明顯的區別。

圖10 LSandGlass模塊示意圖Fig.10 Schematic diagram of LSandGlass module

圖11 改進前后對比Fig.11 Comparison before and after improvement

在原版YOLOv5的輸入中,因為其卷積層后邊的全連接層特征數固定,使得本文的輸入圖像的大小會固定在608像素×608像素,由此得到的特征層網絡的尺寸分別是19×19、38×38、76×76。特征層尺寸越小,說明其神經元感受野越大,也就意味著語義層次更豐富,但會出現局部與細節特征丟失。與之相反,當卷積神經網絡較淺,感受野變小,特征圖中的神經元會偏向于局部與細節[23]。為了減少語義丟失,去除主干特征提取網絡里的19×19特征層,保留其他兩個特征層。這樣不僅減少了語義丟失,還減少了網絡的參數量。圖12展示了剔除低分辨率特征層后的檢測結果,可以看出右邊剔除低分辨率特征層后的檢測結果比剔除前更好,減少了語義丟失從而降低了漏檢率。

圖12 剔除前后對比Fig.12 Comparison before and after cutting

圖13展示了改進后的YOLOv5網絡的完整結構圖,其中LSG表示LSandGlass模塊,RBN表示改進后的BN模塊。

圖13 改進后的YOLOv5網絡結構示意圖Fig.13 Network structure diagram of improved YOLOv5

3 實驗結果與分析

3.1 實驗環境

本文采用違章建筑數據集進行訓練,搭建OpenCV深度學習平臺,具體測試環境:顯卡為Nvidia Tesla V100,顯存為16 GB,CUDA版本10.1,cuDNN版本7.6.5,編譯語言為Python3.8,batch size設置為16,一共訓練200個epochs。

3.2 評價標準

涉及目標檢測領域,通常使用召回率(Recall)、精準率(Precision)和綜合前兩者的mAP(mean Average Precision)對目標檢測算法性能進行評價[24]。召回率針對樣本,用于描述在所有正例的樣本中,有多少在預測中被檢測出來,其計算公式如下:

式中,R表示召回率;TP表示算法將樣本正類預測為正類的個數;FN表示將樣本正類預測為負類的個數,即遺漏檢測的個數;精準率針對最后的預測結果,用于描述預測出來的正例占所有正例的比率,計算公式如下:

式中,P表示精準率,FP表示將樣本中負例預測為正例的個體數量,即檢測錯誤的目標。但一般情況下召回率和精準率很難都維持在高水平,由此就需要一個參數來綜合這兩個參數,使用mAP值來衡量檢測網絡的算法性能,其適用于多標簽圖像分類,計算公式如下:

式中,N表示test集中的樣本個數,P(k)是精準率P在同時識別k個樣本時的大小,ΔR(k)表示召回率R在檢測樣本個數從k-1個變為k個時的變化情況,C則是多分類檢測任務重類別的個數。

3.3 對比實驗

首先為了驗證應用基于KL散度的損失函數是否能夠對網絡收斂能力有所提升,在相同數據集上對改進損失函數前后的網絡分別進行相同epoch數量的訓練,損失曲線圖如圖14所示,帶點曲線和不帶點曲線分別表示原YOLOv5網絡損失曲線和單獨改進損失函數后網絡的損失曲線。由圖可知改進后的損失函數降低了其在反向傳播過程中受到的干擾從而使得初始損失值更小,模型收斂速度也快于原網絡,說明將原損失函數置信度中的交叉熵替換為基于KL散度的損失函數后提高了網絡的收斂能力。

圖14 改進損失前后損失曲線圖Fig.14 Loss curve graph before and after improving loss

接著對改進后網絡整體的收斂性進行分析,為了比較改進后的YOLOv5網絡與標準YOLOv5網絡,將對它們進行相同epoch數量的訓練,同時,加入YOLOv4網絡做多元對比。為了方便比對,將改進后的模型稱為YOLOv5-Building。首先對比各模型之間損失下降的情況,圖15為三種模型的loss圖,橫坐標為epoch個數,縱坐標為損失量,實線、虛線和點線分別代表三種不同的模型??梢钥吹?,YOLOv5-Building的loss下降速度比YOLOv5和YOLOv4的loss下降速度更快,說明改進后的YOLOv5-Building的損失網絡收斂速度更快。收斂后YOLOv5-Building的損失波動范圍在0.1~0.2之間,YOLOv5在0.3~0.5之間,YOLOv4則在0.7~0.9之間,本文提出的改進模型的損失值更趨近于0且更為平滑。

圖15 損失曲線對比圖Fig.15 Loss curve comparison chart

另外在YOLOv4、YOLOv5和YOLOv5-Building進行對比分析的同時,結合YOLOv3和雙階段檢測網絡Faster RCNN的測試結果進行多元分析[25],結果如表1所示。

表1 綜合指標測試結果Table 1 Test results of comprehensive index

表1中FPS(Frame Per Second)代表檢測速度,即算法在每秒鐘里能夠檢測圖片的數量。分析表1的數據可得知,YOLOv5-Building的檢測精度指標相較于原來的YOLOv5網絡有所提高,mAP提高了4.57個百分點,說明YOLOv5-Building準確檢測城市違章建筑的能力有所提升,并且改進后網絡的檢測速度也有較大提升,FPS提高了9.61。Faster RCNN采取了雙階段檢測機制,二次微調了anchor區域,但其mAP較其他算法只超過了YOLOv3,但檢測速度卻遠低于后者。從整體參數規模來看,改進后的網絡代表整體參數規模的網絡權重從14.1 MB減少為13.2 MB,而且遠小于其他網絡的權重,由此可以看出改進后的YOLOv5-Building網絡在提高了檢測準確性的同時提高了檢測實時性,并且減少了對電腦硬件的要求,可以部署于更多環境。

進一步對本文提出的改進YOLOv5模型進行消融實驗以驗證各模塊的有效性。對部分網絡模塊進行替換,其結果如表2所示,其中CUT表示剔除低分辨率特征層操作。由表中數據可知,RBN模塊、LSG模塊和KL散度損失函數的使用均提高了檢測的精度與速度,而改進網絡結構的操作提高了檢測速度,但檢測精度有所下降。RBN模塊由于其強化了網絡的特征提取能力,明顯對于檢測的精度與速度有較大的提升,分別提高了1.35個百分點和3.21;KL散度損失函數降低了噪聲干擾,mAP提高了1.87個百分點,但對于檢測速度沒有明顯影響;LSG模塊減少了梯度下降過程中的信息損失,對于檢測的精度與速度也有一定的提升;剔除低分辨率特征層的網絡由于比沒有剔除低分辨率特征層的網絡少了一層特征層,同時減少了卷積和拼接等操作,使得網絡檢測速度有比較明顯的提升,但也因此降低了檢測的精度,由此也顯示出了RBN模塊、LSG模塊和KL損失函數對于模型檢測精度提高的必要性。

表2 消融實驗測試結果Table 2 Test results of ablation

3.4 檢測結果分析

改進YOLOv5網絡前后的檢測結果如圖16所示。由于無人機拍攝角度等問題,原圖中有部分圖像中的目標與圖16(a)、(b)最左邊圖像一樣被遮擋。從圖16(a)、(b)最左邊圖像的對比中可以看出,原YOLOv5對于存在遮擋目標的圖像存在漏檢的現象,而YOLOv5-Building在目標被遮擋導致部分圖像特征丟失的情況下依然檢測出了目標,說明YOLOv5-Building提高了圖像特征的提取能力;從圖16(a)、(b)中間和右邊存在多目標的圖像對比中可以看出,原YOLOv5存在部分目標漏檢的情況,而改進后的YOLOv5-Building能夠準確檢測出圖像中所有的違章建筑目標,說明改進后的網絡減少了圖像信息損失從而獲取了更多的信息,提高了有效信息完整性,使得漏檢問題得到有效改善。

圖16 改進YOLOv5與原YOLOv5檢測結果對比Fig.16 Improved YOLOv5 and original YOLOv5 detection results comparison

4 結語

針對人工檢測城市違章建筑費時費力的問題,本文在YOLOv5的基礎上,提出改進的YOLOv5城市違章建筑目標自動檢測方法。本文方法采用無人機航拍的城市違章建筑圖像,經過預處理構建數據集,在YOLOv5網絡中使用改進的代表批量標準化替代原有BN模塊,并使用平滑化處理后的KL散度損失函數替代交叉熵損失函數,最后用LSandGlass模塊代替殘差網絡并剔除低分辨率特征層,得到更適用于違章建筑檢測的YOLOv5-Building模型。對比實驗的結果表明,YOLOv5-Building的損失函數收斂速度更快,并且與YOLOv5相比FPS提高了9.61,mAP提高了4.57個百分點。

通過將改進YOLOv5網絡應用到無人機航拍違章建筑圖像檢測領域,說明深度學習在違章建筑的自動監察方面具有可行性,能夠用于支持城市建筑管理。并且,由于YOLOv5-Building對建筑中的違章建筑有較好的檢測速度和精度,其還可用于其他類型的建筑異常檢測等方面。

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