石露露,廖光忠
(1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430065;2.武漢科技大學 智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室,湖北 武漢 430065)
南水北調(diào)工程是目前解決國內(nèi)北方地區(qū)水資源嚴重短缺問題的特大型基礎設施項目。確保調(diào)水水質(zhì)是其成敗的關鍵,但是這項工程的沿途都是明渠,水面難免會有漂浮的垃圾,傳統(tǒng)處理明渠漂浮垃圾的方法主要是依靠人力,這種方式不僅耗時耗力,而且無法做到實時監(jiān)測。隨著無人機航拍和無人船航拍技術的興起,人工巡檢逐漸被取代,如何檢測航拍圖像上明渠漂浮垃圾成為了亟待解決的問題。
近年來,隨著深度學習的快速發(fā)展,基于深度學習的目標檢測算法成為了檢測航拍圖像上明渠漂浮垃圾的主流方法?;谏疃葘W習的目標檢測算法主要分為雙階段目標檢測和單階段目標檢測。雙階段目標檢測算法雖然檢測的準確率高,但是速度較慢,無法實現(xiàn)實時檢測。單階段目標檢測算法是直接對輸入的圖像進行卷積特征提取,不需要使用候選框,可以極大地提高檢測速度。因此,越來越多的學者開始將單階段目標檢測算法應用于河道漂浮物檢測領域。Li等[1]基于改進的YOLOv3[2]算法實現(xiàn)水面漂浮垃圾檢測,將三尺度檢測轉(zhuǎn)換成兩尺度檢測以提高檢測速度,并通過調(diào)整先前的錨框提高檢測精度。唐小敏等[3]基于ResNet-101特征提取網(wǎng)絡的SSD網(wǎng)絡模型對河道漂浮物進行目標檢測,有效地提高了網(wǎng)絡對不同尺度漂浮物的識別精度。李德鑫等[4]對YOLOv5s算法進行改進實現(xiàn)河道漂浮垃圾分類檢測,降低各類別目標檢測精度之間的差異。以上單階段目標檢測算法雖然在精度上有了一定的提升,但是小目標檢測精度仍不高。針對小目標檢測問題,國內(nèi)外學者也提出了許多算法。Benjumea等[5]提出了YOLO-z,即通過BiFPN[6](Bidirectional Feature Pyramid Network,加權雙向特征融合網(wǎng)絡)代替YOLOv5中的PANet[7](Path Aggregation Network,路徑聚合網(wǎng)絡),擴大Neck層等一系列方法促進中淺層的特征融合,從而提升小目標的檢測性能。Zhu等[8]提出了TPH-YOLOv5,在YOLOv5的基礎上增加一個預測頭用于檢測不同尺度的目標,還通過集成CBAM[9](Convolutional Block Attention Module)注意力機制來尋找對象密集場景下的注意力區(qū)域,有效地提升了小目標的檢測性能。目前現(xiàn)有的大部分小目標檢測算法應用領域比較局限,一般只在大型公共數(shù)據(jù)集上進行驗證,而現(xiàn)實場景錯綜復雜,現(xiàn)有算法仍然存在檢測精度低、難以準確檢測到小目標、速度不滿足日常需要、漏檢和誤檢等問題。
在明渠漂浮垃圾檢測的場景中,航拍圖像中的漂浮垃圾大部分尺寸都很小,占用的圖像區(qū)域都比較小,導致這些漂浮垃圾缺乏外觀信息,很難與背景區(qū)分開來,從而增加了準確檢測明渠漂浮垃圾的難度。而且水面的強光反射可能會導致圖像過度曝光,使水面漂浮垃圾不可見,增加了明渠漂浮垃圾檢測的漏檢率。此外,水面的倒影會對漂浮垃圾檢測造成干擾,容易產(chǎn)生誤檢。
為了解決以上問題,該文采用的方法如下:
(1)通過隨機剪裁、水平翻轉(zhuǎn)、加入高斯噪聲、改變對比度等圖像處理操作進行數(shù)據(jù)增強來擴充數(shù)據(jù)集;
(2)借鑒BiFPN的結構對YOLOv5s原有的Neck 部分進行改進,修改特征融合的過程,提高小目標檢測檢測精度和檢測速度;
(3)進行模型優(yōu)化,在Neck和Head部分之間添加3個改進的CBAM注意力機制,增強信息的特征提取和定位;同時增大網(wǎng)絡的輸入分辨率,使圖像信息更加豐富和精確。
2020年6月,Ultralytics團隊Glenn等人提出了YOLOv5模型,雖然在性能方面與YOLOv4[10]不分伯仲,但是推理速度有非常大的提升,可以滿足實時檢測的要求。YOLOv5包括YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x四種網(wǎng)絡結構[11]。該文主要是基于YOLOv5s進行改進的。為了可以在提高檢測精度的同時,也能保證檢測速率,以實現(xiàn)實時檢測,YOLOv5s模型主要由Input、Backbone、Neck、Head四部分組成。
Input部分主要包括自適應計算錨框、Mosaic數(shù)據(jù)增強和自適應縮放圖片三個部分。Backbone部分包括CSPNet[12](Cross Stage Partial Network,跨階段局部網(wǎng)絡)模塊和SPPF模塊,這部分的作用是為了處理輸入圖像,將圖像轉(zhuǎn)換成特征。YOLOv5s 6.0為了避免Focus切片下采樣會丟失部分圖片原始信息,將Focus換成了普通的卷積塊。此外,YOLOv5s 6.0還用SPPF替代了原先的SPP(Spatial Pyramid Pooling,空間金字塔池化),SPP的3個多尺度最大池化層是并聯(lián)連接的,而SPPF在此基礎上將3個多尺度最大池化層串聯(lián)起來,保留SPP優(yōu)勢的同時,也可以減少圖片信息的丟失。CSPNet可以緩解梯度消失的問題,避免梯度的重復計算,從而減少計算量,提升網(wǎng)絡的計算能力以及減少內(nèi)存的損耗。Neck部分包括FPN[13](Feature Pyramid Networks,特征金字塔)和PANet,這部分主要是為了充分地提取特征。Head部分主要是對圖像的特征進行預測,然后生成邊界框、預測目標的種類。同時采用了三種損失函數(shù)分別計算分類損失、定位損失和置信度損失,并通過NMS(Non-Maximum Suppression,非極大值抑制)提高網(wǎng)絡預測的準確度。
針對航拍明渠漂浮垃圾圖像存在的問題,主要從數(shù)據(jù)增強、多尺度特征融合、引入注意力機制、增加網(wǎng)絡的輸入尺度這四個方面對YOLOv5s模型進行改進和優(yōu)化,改進的YOLOv5s的網(wǎng)絡結構如圖1所示。
圖1 改進的YOLOv5s的網(wǎng)絡結構
由于目前沒有用于河道漂浮檢測的大型公共數(shù)據(jù)集,該文使用了來自FloW[14]的圖像子數(shù)據(jù)集FloW-Img子集和在線收集的2 000張數(shù)據(jù)。FloW數(shù)據(jù)集是全球第一個無人船視角的水面漂浮垃圾檢測數(shù)據(jù)集。該數(shù)據(jù)集是使用無人船在真實場景下進行拍攝收集的,但是FloW-Img數(shù)據(jù)集中的漂浮垃圾主要包括不同外觀的塑料瓶、飲料瓶、草和落葉,數(shù)據(jù)種類較少。于是在FloW-Img數(shù)據(jù)集中選取1 000張優(yōu)質(zhì)圖片,剩余1 000張則是在線收集合適的水面漂浮垃圾圖像,確保數(shù)據(jù)集具有多樣性。最后數(shù)據(jù)集包括落葉、塑料袋、瓶子、牛奶盒、塑料垃圾、草、樹枝、球8個類別,如圖2所示。
圖2 水面漂浮垃圾類別
為了避免數(shù)據(jù)集太小而出現(xiàn)過擬合問題,將通過局部剪裁、隨機翻轉(zhuǎn)、加入高斯噪聲、改變對比度等方式進行圖像處理操作,讓每張原始圖像生成5張新圖像,總共得到10 000張,但是經(jīng)過數(shù)據(jù)增強之后,有的圖片質(zhì)量變化較為嚴重,需要將質(zhì)量較差的圖像進行人工篩選和剔除,最終數(shù)據(jù)集為8 400張。在圖像處理時隨機使用1到3種方式進行變換,可以增加數(shù)據(jù)集中圖片的數(shù)量,提高圖片信息的多樣性,使模型在訓練時可以學習到更加全面的水面漂浮垃圾特征。之后,通過數(shù)據(jù)標注工具Labelimg對所有圖片進行標注,并將數(shù)據(jù)集所有圖像按照7∶2∶1的比例劃分成三個數(shù)據(jù)集,即訓練數(shù)據(jù)集、驗證數(shù)據(jù)集和測試數(shù)據(jù)集,圖片數(shù)量分別為5 880張、1 680張、840張。最后,將VOC格式的數(shù)據(jù)標注文件轉(zhuǎn)換為YOLO格式。
在卷積神經(jīng)網(wǎng)絡的多層結構中,淺層網(wǎng)絡更關注局部細節(jié)信息,如圖像邊緣、輪廓、紋理等,有利于對目標進行定位;深層網(wǎng)絡則側(cè)重于提取抽象信息,有利于對目標進行分類,但是細節(jié)信息比較缺乏。因此,將淺層網(wǎng)絡特征與深層網(wǎng)絡特征進行融合可以提高目標檢測的性能。通常,構造特征金字塔FPN是一種直接有效的融合方式,即建立一條自頂向下的通路進行特征融合,然后用融合后具有高語義信息的特征層進行預測,但是這種結構受單向信息流的限制。為了解決這個問題,PANet結構應運而生,PANet結構是在FPN結構的基礎上再添加一條自底向上的通路,這條通路主要用于將底層的位置信息也傳到預測特征層中,使預測特征層既有豐富的語義信息也有精確的位置信息,不僅可以提高目標檢測的精度,而且有利于小目標檢測,如圖3(a)所示。
(a)PANet結構 (b)Bi-PANet結構
雖然PANet可以提高目標檢測的精度,但是需要更多的參數(shù)和更大的計算量。于是,借鑒BiFPN加權雙向特征融合的思想將原先PANet的特征融合過程進行修改,如圖3(b)所示,稱為Bi-PANet。首先在PANet的基礎上去掉P5、P3中沒有進行特征融合的不必要連接,使融合更多特征的同時消耗較少的成本,減少計算量;然后將圖3(b)虛線方框里的雙向路徑作為一個特征網(wǎng)絡層,重復疊加相同的特征網(wǎng)絡層, 以實現(xiàn)更高層次的特征融合;最后,給每個輸入特征增加一個額外的權重,讓網(wǎng)絡了解它們的重要性。其中,采用的加權特征融合方法是快速歸一化融合,每個歸一化權重的值都是在0到1之間,可以提高計算速度??焖贇w一化融合的公式如下所示:
(1)
其中,ωi是可學習的權重,用激活函數(shù)ReLu來確保每個ωi≥0,該權重的值可由網(wǎng)絡訓練得到,Ii是指輸入的特征,O是指輸出特征,ε=0.000 1是避免數(shù)值不穩(wěn)定的一個小值。
Bi-PANet將主干網(wǎng)絡的P3、P4、P5作為特征的輸入。以節(jié)點P4為例,其形成2個融合特征的過程如下所示:
(2)
(3)
將YOLOv5s結構上的特征融合方式結合BiFPN進行修改不僅可以加強特征融合,提高小目標檢測的精度,解決航拍圖像中的明渠漂浮垃圾大部分尺寸都很小的問題,還可以提高檢測速度,確保明渠漂浮垃圾檢測的實時性。
為了關注圖像中待檢測的漂浮垃圾,減少潛在信息的丟失,避免水面倒影、強光反射等對漂浮垃圾檢測的干擾,加強漂浮垃圾特征的提取,該文借鑒CBAM的通道注意力機制和空間注意力機制的結構,通過保留跨三維的信息減少信息的丟失,同時使用兩個卷積層促進空間信息融合從而使網(wǎng)絡可以獲得更多信息。CBAM是一個輕量級的通用注意力機制模塊,可以直接添加到目標檢測網(wǎng)絡中進行訓練,而且?guī)淼挠嬎汩_銷也極小,不會影響實時目標檢測。CBAM注意力機制模塊包含兩個子模塊,一個是通道注意力機制模塊,另一個是空間注意力機制模塊,其結構如圖4所示,圖中?表示元素級乘法。
圖4 CBAM注意力機制結構
雖然CBAM可以使特征圖能夠更多地包含和表現(xiàn)有效信息,但是它忽略了空間和通道之間的相互作用,會造成跨維信息的丟失。于是,對CBAM的通道注意力機制和空間注意力機制進行修改,稱為T-CBAM。首先在通道注意力機制模塊中使用3D排列[15]來保留跨三維的信息,從而利用每一對三維通道、空間寬度和空間高度之間的注意力權重來減少信息的丟失,提高檢測精度;然后在空間注意力機制模塊中使用兩個卷積層實現(xiàn)空間信息融合,從而可以關注到更多的空間信息。其具體實現(xiàn)過程如下:
主干網(wǎng)絡的特征進行特征融合之后,進入通道注意力機制,先將輸入的特征圖在通道、空間寬度和空間高度的3個維度上實現(xiàn)全局平均池化和最大池化,并將池化得到的權重矩陣傳入權重共享的多層感知器MLP(Multi-Layer Perception)中進行特征相加,最后通過Sigmoid激活函數(shù)得到通道注意力特征圖Mc(F)。T-CBAM的通道注意力機制如圖5所示。
圖5 T-CBAM的通道注意力機制
之后,通道注意力機制輸出的特征圖將作為輸入的特征圖進入空間注意力機制,同樣在通道、空間寬度和空間高度的3個維度上實現(xiàn)全局平均池化和最大池化,并將結果串聯(lián)連接起來,然后采用兩個7×7的卷積核進行卷積操作,保留更多空間信息,最后通過Sigmoid激活函數(shù)得到空間注意力特征圖Ms(F),實現(xiàn)特征細化。T-CBAM的空間注意力機制如圖6所示,其中r是通道注意力機制中MLP使用的壓縮比。
圖6 T-CBAM的空間注意力機制
特征融合之后引入T-CBAM注意力機制的總體過程可以概括為:
(4)
其中,?表示元素級乘法,F'表示經(jīng)過通道注意力機制輸出的特征圖,F''表示經(jīng)過通道注意力機制和空間注意力機制最終輸出的精化特征圖。
該文經(jīng)過Neck部分的特征融合之后引入3個T-CBAM,這樣會減少潛在信息的丟失,使特征表現(xiàn)更加充分,加強特征提取,抑制無用信息,從而更好地提高檢測性能。引入T-CBAM注意力機制可以實現(xiàn)集中對水面漂浮垃圾特征的提取,避免水面倒影及無害漂浮物干擾水面漂浮垃圾檢測,而且加強特征提取也會減少水面強光反射對明渠漂浮垃圾檢測的影響。
小目標本身像素點少,自身攜帶的特征信息少,有時很難被發(fā)現(xiàn),導致位置信息獲取困難,最直接的解決辦法就是增大網(wǎng)絡輸入分辨率,這樣可以使圖像具有更加豐富的細節(jié)信息和更加精確的位置信息,有利于小目標特征信息的提取。于是,該文將輸入尺度從640×640增大到1 280×1 280,增大后的預測分支分辨率則變?yōu)?2×32,64×64,128×128。這樣不僅可以提高目標檢測的檢測精度,還可以提高小目標的檢測精度,也有利于解決航拍圖像中的明渠漂浮垃圾大部分尺寸都很小的問題。
為了訓練和評估所提出的模型,實驗使用的是CentOS Linux 7.9系統(tǒng),并采用深度學習框架Pytorch。所有模型都是在GPU上進行訓練的,其中GPU型號為Tesla V100-SXM2-16GB。實驗環(huán)境為Python3.8,Pytorch 1.8.1,CUDA10.1,Cudnn7.6.5。實驗使用的數(shù)據(jù)集是FloW-Img數(shù)據(jù)集的擴充數(shù)據(jù)集,即通過剪裁、翻轉(zhuǎn)、加入高斯噪聲、改變對比度等方式進行圖像處理從而增加數(shù)據(jù)集的數(shù)量。實驗采用的是Adam(Adaptive moment estimation)優(yōu)化器,總共迭代300次,其中批量大小設置為16,初始學習率設為0.01,動量為0.937,權重衰減系數(shù)為0.000 5。
為了評價模型的性能,主要采用精確度P(Precision)、召回率R(Recall)、平均精度均值mAP(mean Average Precision)、運行時間(Times)、檢測速度FPS(Frames Per Second)、浮點運算量GFLOPs(Giga Floating-point Operations Per Second)和參數(shù)量Params(Parameters)作為模型性能的評價指標。
精確度表示正確分類的樣本占總樣本的比例,如式(5),精確度越大表示檢測越精確,在一定程度上也可以反映誤檢越少。召回率表示正確的正樣本占總正樣本的比例,如式(6),召回率越大表示檢測越全面,反之,說明了漏檢越少。mAP表示所有類別的平均精度AP(Average Precision),如式(7),mAP越大表示模型檢測精度越大。其中AP是指在不同召回率下精確度的均值,也就是以召回率為橫坐標、精確度為縱坐標的P-R曲線與坐標軸圍成的面積,如式(8)。mAP_0.5表示IoU閾值為0.5時所有目標類別的平均檢測精度。IoU(Intersection over Union,交并比)計算的是預測邊框與真實邊框的重疊率。運行時間表示模型進行檢測消耗的時間,單位為毫秒(ms)。FPS表示模型每秒能檢測多少張圖像,單位為f·s-1,用于衡量模型的實時性,FPS越大表示檢測速度越快,即模型越具有實時性。GFLOPs表示每秒10億次的浮點運算,用于衡量訓練模型時的計算復雜度,GFLOPs越大表示模型越復雜。參數(shù)量表示模型訓練需要的參數(shù)總數(shù),參數(shù)量越大所需的內(nèi)存越大。
(5)
(6)
(7)
(8)
式(5)和式(6)中,TP(True Positives)表示明渠漂浮垃圾被正確檢測為漂浮垃圾的個數(shù);FN(False Negatives)表示明渠漂浮垃圾沒有被檢測出來的個數(shù),即漏檢的個數(shù);FP(False Positives)表示將其他的物體檢測成漂浮垃圾的個數(shù),即誤檢的個數(shù)。公式(7)中,n表示類別,N表示總類別。公式(8)中,p(r)表示以召回率為橫坐標、精確度為縱坐標的P-R曲線。
3.3.1 添加CBAM模塊與T-CBAM模塊對比
將直接添加CBAM模塊與添加T-CBAM模塊的檢測結果進行對比。它們的檢測效果如表1所示,其中YOLOv5s-CBAM表示添加CBAM模塊,YOLOv5s-T-CBAM表示添加T-CBAM模塊。在復雜度和參數(shù)方面雖然不是最佳,但是相差不大,而且從模型的檢測精度和檢測速度兩個方面分析可知,YOLOv5s-T-CBAM的檢測效果更好,精確度、召回率和平均精度均值都是最高的,且檢測速度仍可以達到89 f·s-1,可以保持較好的實時性。
表1 添加CBAM模塊與T-CBAM模塊結果對比
3.3.2 與其他目標檢測算法的對比
為了驗證改進后算法的優(yōu)越性,還將改進的YOLOv5s算法與YOLOv3、YOLOv4、SSD、YOLOX、DETR、YOLOv7等目標檢測算法進行對比。由表2分析可知,在檢測精度方面,改進的YOLOv5s算法明顯優(yōu)于其他算法,mAP_0.5可以達到0.899,而且還兼顧高精確度和高召回率,既保證了檢測的準確性,還減少了檢測的誤檢和漏檢;在運行時間和檢測速度方面,改進的YOLOv5s算法的檢測速度達到了96 f·s-1,且運行時間最短,滿足實時性的要求;在復雜度和參數(shù)方面,改進的YOLOv5s算法僅次于YOLOv5s,且相差不大,以最小的犧牲提高了目標檢測的精度和速度。因此,改進的YOLOv5s算法優(yōu)于其他目標檢測算法。
表2 改進后算法與其他目標檢測算法的對比
為了驗證各個改進模塊優(yōu)化的作用,該文進行了消融實驗,一共設計了5組實驗,其實驗結果如表3所示。其中原YOLOv5s表示輸入圖像的尺寸為640×640,YOLOv5s表示輸入圖像的尺寸為1 280×1 280。由表3分析可知,在檢測精度和速度方面,增加網(wǎng)絡的輸入尺度提升了檢測精度,但是檢測速度會有所下降;修改特征融合過程不僅可以大大提升檢測精度、精確度和召回率,還可以提高檢測速度,彌補增加網(wǎng)絡輸入尺度時造成的速度損失;引入T-CBAM提升了檢測精度和精確度,但是檢測速度會降低;在增加網(wǎng)絡的輸入尺度的同時,既修改網(wǎng)絡融合過程,又增加T-CBAM模塊,即提出的改進算法,它不僅最大程度地提升了檢測精度,使精確度和召回率到達最高,而且檢測速度也有了一定提升。在復雜度和參數(shù)方面,增加網(wǎng)絡的輸入尺度不會改變模型的復雜度,參數(shù)量也不會增加,但是修改特征融合過程和引入T-CBAM都會影響模型復雜度,增加參數(shù)量,通過具體數(shù)據(jù)對比分析可知,改進YOLOv5s算法的GFLOPs僅比原YOLOv5s算法增加了0.3,且參數(shù)量變化不大,以最小的犧牲提升了模型的檢測性能。由圖7分析可知,改進YOLOv5s的平均精度每次都比原YOLOv5s高,保持實時性的同時在精度方面有很大的提升。
表3 消融實驗
圖7 原YOLOv5s與改進YOLOv5s的mAP_0.5對比
為了驗證改進的YOLOv5s算法的可行性,分別使用原YOLOv5s算法和改進的算法對測試集上航拍圖像的漂浮垃圾進行檢測,以檢測瓶子為例,如圖8為原YOLOv5s算法和改進的YOLOv5s算法在不同干擾場景下的檢測結果對比圖,其中,左圖為原YOLOv5s算法的檢測結果,右圖為改進YOLOv5s算法的檢測結果。圖8(a)表示水面漂浮垃圾較小的檢測,可以看到左圖會漏檢掉遠處較小的漂浮垃圾,而右圖可以檢測到遠處的小漂浮垃圾;(b)表示水面倒影干擾的檢測,左圖將岸邊物體在水面的倒影誤檢成漂浮垃圾,右圖則檢測正常;(c)表示水面強光干擾的檢測,左圖受強光干擾,存在漏檢,右圖不僅將每個漂浮垃圾檢測都出來了,而且檢測的精度比左圖高。綜上,改進的YOLOv5s算法更優(yōu)于原YOLOv5s算法,原YOLOv5s算法在復雜檢測場景的干擾下檢測性能較差,容易出現(xiàn)漏檢和誤檢的情況,并且相較于改進的YOLOv5s算法,其目標定位精度偏低。因此,改進的YOLOv5s性能更優(yōu)越,定位精度更準確。
圖8 不同干擾場景下算法檢測結果對比
針對明渠漂浮垃圾檢測存在的一系列問題,如:相關數(shù)據(jù)集較少,航拍圖像中的明渠漂浮垃圾尺寸較小,明渠漂浮垃圾檢測易受水面倒影和強光反射影響,基于原始的YOLOv5s進行改進優(yōu)化。首先,通過數(shù)據(jù)增強進行數(shù)據(jù)集擴充,避免數(shù)據(jù)集太小出現(xiàn)過擬合的問題;然后,在借鑒BiFPN加權雙向特征融合的思想修改特征融合過程,提高小目標的檢測精度和速度;并且在Neck和Head部分之間添加3個改進的CBAM注意力機制,能夠有效降低檢測的漏檢率和誤檢率,提高檢測精度;最后,增大網(wǎng)絡輸入的分辨率,使圖像具有更加精確的位置信息和更加豐富的細節(jié),有利于小目標特征信息的提取。由實驗結果可知,所提方法在保持實時性的同時,檢測的平均精度達到了89.9%,具有較好的應用價值。但是,如何將算法部署到嵌入式平臺使無人機和無人船能夠?qū)σ曇爸械哪繕诉M行實時識別是未來亟待解決的問題。