李德鑫 閆志剛 孫久運
(中國礦業(yè)大學(xué)環(huán)境與測繪學(xué)院,江蘇徐州221116)
傳統(tǒng)河道漂浮垃圾分布情況調(diào)查主要通過人工巡河開展,不僅耗時耗力,且無法做到實時監(jiān)測。隨著信息技術(shù)和攝影技術(shù)的發(fā)展,利用無人機(jī)、無人船航拍河道的方式逐漸代替了人工巡檢,開展了基于航拍影像和目標(biāo)檢測技術(shù)的河道漂浮垃圾識別的相關(guān)研究。
目前,較為有效的方法主要包括基于傳統(tǒng)機(jī)器學(xué)習(xí)的目標(biāo)檢測技術(shù)和基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)。傳統(tǒng)目標(biāo)檢測技術(shù)的實現(xiàn)流程為:圖像分割,按目標(biāo)的顏色、面積、紋理等在分割區(qū)域進(jìn)行特征提取,利用分類器進(jìn)行分類識別。如ALI等[1]利用采集影像時間與河道影像亮度之間的概率分布圖設(shè)置閾值,來分割水面漂浮的木屑。左建軍等[2]首先通過背景差法分割漂浮物區(qū)域,利用BP算法訓(xùn)練樣本特征,然后將特征化數(shù)據(jù)輸入分類器進(jìn)行分類?;趥鹘y(tǒng)機(jī)器學(xué)習(xí)的圖像目標(biāo)檢測雖然取得了一定進(jìn)展,但模型魯棒性較差,且中間過程需要人為干預(yù),端到端的深度學(xué)習(xí)目標(biāo)檢測算法應(yīng)運而生?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法可大致分為雙階段目標(biāo)檢測算法和單階段目標(biāo)檢測算法兩類。雙階段目標(biāo)檢測算法最具代表性的有 Fast R-CNN[3]、Faster R-CNN[4]、RFCN[5]和 Mask R-CNN[6],該系列算法檢測精度雖高,但檢測速度過慢,達(dá)不到實時性的效果,因此不適用于河道巡檢這種大型工程。單階段目標(biāo)檢測算法最具代表性的是YOLO系列[7-9]和SSD系列[10-11],因其省去了區(qū)域提取這一步驟,極大提高了檢測速度,學(xué)者們開始將單階段目標(biāo)檢測算法應(yīng)用于河道漂浮物檢測領(lǐng)域。雷李義等[12]基于SSD深度學(xué)習(xí)模型,在自制數(shù)據(jù)集上對比分析了各種特征提取網(wǎng)絡(luò),最終選擇了性能較好的Resnet-50,實現(xiàn)了水面漂浮物的分類檢測。魏莉莉[13]基于TensorFlow框架采用VGG網(wǎng)絡(luò)提取特征,對河道漂浮物進(jìn)行了分類識別。唐小敏等[14]基于SSD與Faster R-CNN深度學(xué)習(xí)模型,通過對比各特征提取網(wǎng)絡(luò),選擇了基于ResNet-101特征提取網(wǎng)絡(luò)的SSD深度學(xué)習(xí)模型,實現(xiàn)了河道漂浮物的分類檢測。單階段目標(biāo)檢測算法速度雖快,但在小目標(biāo)檢測精度以及多類別檢測精度方面還有待提高。
本研究將YOLOv5s深度學(xué)習(xí)模型應(yīng)用到河道漂浮垃圾分類檢測領(lǐng)域,為河道治理提供決策依據(jù)。顧及到漂浮垃圾在無人機(jī)影像中占比較小以及類別不均衡等問題,對YOLOv5s算法的檢測機(jī)理進(jìn)行了深入剖析,通過對模型各模塊進(jìn)行針對性改進(jìn),降低了各類別目標(biāo)檢測精度之間的差異,提高了對小目標(biāo)的檢測精度。
YOLO(You Only Look Once)算法的提出,開創(chuàng)了目標(biāo)檢測算法的新紀(jì)元。其中,YOLOv1算法省去了窮舉候選框這一步驟,檢測速度相比雙階段目標(biāo)檢測算法有了很大的提升,能夠達(dá)到實時性的效果,但是該算法對于小目標(biāo)的檢測精度并不理想。針對YOLOv1算法的不足,REDMON等[9]在兼顧實時性檢測效果的同時,提升了多尺度目標(biāo)檢測精度。在一些公開數(shù)據(jù)集的測試上,YOLO系列的v4版本在檢測精度和檢測速度方面已經(jīng)略優(yōu)于其它單階段目標(biāo)檢測算法[15]。YOLOv5在v4版本的基礎(chǔ)上采用Pytorch框架,簡化了代碼,提升了在GPU中的運行速度。因此本研究基于YOLOv5s算法開展河道漂浮垃圾檢測,該算法的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
YOLOv5s將經(jīng)過自適應(yīng)縮放至608×608大小的圖片劃分為S×S個網(wǎng)格,然后通過以上模塊中一系列的卷積、歸一化、激活等操作,將特征提取到19×19、38×38、76×76 3個不同尺寸的特征圖上來預(yù)測3種不同大小的目標(biāo)。特征圖共有3×( )1+4+B個通道,負(fù)責(zé)預(yù)測3種不同形狀的目標(biāo)。其中3代表錨框(Anchor box)個數(shù),1代表錨框置信度(Confidence)(式1),4為先驗錨框坐標(biāo)相對于預(yù)測框坐標(biāo)的偏移量(tx,ty,th,tw),B為目標(biāo)類別總數(shù)。錨框置信度C公式為
式中,P(O)為目標(biāo)中心點落在該網(wǎng)格中的概率,落在該網(wǎng)格中取1,否則,取0;I為真實框(GroundTruth Box)與預(yù)測框(Predict Box)之間的交并比(Intersec-tion Over Union,IOU),即兩個框的交集面積與并集面積之比。
若目標(biāo)中心點落在某個網(wǎng)格內(nèi),該網(wǎng)格則需要負(fù)責(zé)預(yù)測目標(biāo)屬于第i類的概率P(Ci|O)。將P(Ci|O)與置信度相乘便可得到該錨框的類別置信度,本研究用S表示。該乘積既預(yù)測了錨框?qū)儆谀骋活惖念悇e,也包含了錨框的準(zhǔn)確度。錨框的類別置信度計算公式為
對于錨框,若不加以抑制該模型最后將會在一幅圖上產(chǎn)生( )76×76+38×38+19×19 ×3=22 743個預(yù)測框。通過計算每個錨框與該類別置信度最高錨框的交并比,若大于預(yù)先設(shè)定的閾值則舍棄該錨框,然后在剩下的框中選取一個最大的框,再刪除其周圍IOU大于閾值的框,如此反復(fù)迭代得到該目標(biāo)的最終錨框,該過程稱為非極大值抑制(Non-Maximum Suppression,NMS)。
最后通過梯度下降反復(fù)迭代計算錨框與真實框(Ground Truth)的LOSS函數(shù),得到在LOSS取得最小值情況下每個錨框的類別得分和坐標(biāo)偏移量,在此基礎(chǔ)上用錨框的坐標(biāo)偏移量去微調(diào)先驗框得到預(yù)測框(Bounding Box),使得預(yù)測框不斷接近真實框。損失計算包括邊界框損失、置信度損失以及類別損失。置信度損失和類別損失采用的是二進(jìn)制交叉熵?fù)p失函數(shù)(BCELoss)(式(3)),邊界框損失采用的是GIoU損失函數(shù)(式(4))。
式中,LB為二進(jìn)制交叉熵?fù)p失函數(shù);P'為樣本的預(yù)測值;y為樣本真實類別,y=1表示是該類目標(biāo),y=0則表示不是該類目標(biāo)。
式中,LG為GIoU損失函數(shù);D為包圍真實框與預(yù)測框的最小矩形面積;B為預(yù)測框;Bg為真實框。
相較于單階段目標(biāo)檢測算法,YOLOv5s算法對在無人機(jī)影像中占比較小且存在類別不均衡的河道漂浮垃圾的檢測精度還有待提高。針對YOLOv5s算法在檢測小目標(biāo)和類別不均衡目標(biāo)方面的不足,本研究對數(shù)據(jù)增強(qiáng)預(yù)處理模塊進(jìn)行了優(yōu)化,對SPP模塊[16]以及損失函數(shù)模塊做了改進(jìn),改進(jìn)后的算法稱為YOLOv5s-enhanced。
YOLOv5s算法中數(shù)據(jù)增強(qiáng)分為Mosaic增強(qiáng)[17]和圖像增強(qiáng)[18-19]。Mosaic增強(qiáng)通過隨機(jī)縮放、裁剪、排列等方式,最多將4幅影像拼接成1幅影像,來豐富圖像的背景,進(jìn)而提高算法的檢測性能。圖像增強(qiáng)主要包括圖像的仿射、透視等,使算法能夠感受同一目標(biāo)的不同形態(tài),來減弱算法的過擬合[20]。本研究將Mosaic增強(qiáng)模塊改為最多可將9幅影像隨機(jī)拼接成1幅影像,來提高模型對小目標(biāo)的檢測性能;另外,為了消除河道上陽光反射對河流漂浮物的影響,在圖像增強(qiáng)模塊對圖像進(jìn)行了直方圖均衡化處理。圖2顯示了YOLOv5s算法與YOLOv5s-enhanced算法在訓(xùn)練過程中的數(shù)據(jù)增強(qiáng)效果(其中,“0”表示嚴(yán)重污染物,“1”表示中度污染物,“2”表示輕度污染物)。從圖2中可以看出,由9幅隨機(jī)影像拼接的圖片能夠進(jìn)一步豐富圖像背景,并相應(yīng)地提高了單批次訓(xùn)練數(shù)據(jù)的數(shù)量(batch_size);另外,經(jīng)直方圖均衡化處理后的圖像減弱了光照的影響,亮度變化單一,有利于提高模型的魯棒性。
在SPP模塊中,增加一個3×3大小的最大值池化濾波器,來提升模型的感受野,進(jìn)而提高小目標(biāo)的檢測精度。為保證SPP模塊輸出通道數(shù)與CSP2_1模塊輸入通道數(shù)保持一致,現(xiàn)將SPP模塊中第2卷積核的權(quán)重矩陣增加1/4個通道數(shù)的參數(shù)。改進(jìn)前后的SPP模塊結(jié)構(gòu)對比如圖3所示。
在YOLOv5s損失函數(shù)中,置信度和分類損失函數(shù)采用的是BCELoss,它給予每一類目標(biāo)相同的權(quán)重值,不利于正負(fù)樣本不均衡的河流漂浮物檢測。本研究采用Focal損失函數(shù)來計算置信度和類別的損失,F(xiàn)ocal損失函數(shù)式為
式中,F(xiàn)ocal_Loss代表Focal損失函數(shù);α和γ用來解決正負(fù)樣本不均衡問題的兩個協(xié)調(diào)參數(shù)。
試驗所用數(shù)據(jù)均來源于精靈四RTK大疆無人機(jī)對徐州奎河、廢黃河的傾斜攝影。通過在不同時間段下,讓無人機(jī)以不同姿態(tài)對河道進(jìn)行攝影作業(yè),來增加影像的時空多樣性,從而保證算法訓(xùn)練結(jié)果的周密性。其中,無人機(jī)攝影作業(yè)時間為7∶00~19∶00,飛行高度為15~70 m,相機(jī)與水平方向夾角(相機(jī)姿態(tài))有45°、60°和90°。圖4展示了多樣性數(shù)據(jù)集中的部分原始影像與局部放大圖,各影像獲取參數(shù)如表1所示。
對徐州市多條河道進(jìn)行實地調(diào)查發(fā)現(xiàn),河道中漂浮垃圾以農(nóng)藥袋和生活垃圾為主。依據(jù)《徐州市城市河道保潔質(zhì)量標(biāo)準(zhǔn)》并結(jié)合徐州市水務(wù)局相關(guān)水質(zhì)專家意見,本研究按照漂浮垃圾對水質(zhì)的污染程度將其分為3類:嚴(yán)重污染物(農(nóng)藥袋)、中度污染物(生活垃圾袋)、輕度污染物(玻璃瓶、硬紙箱等其它垃圾)。
本研究共采集了河道無人機(jī)影像3 011幅,去除圖像中沒有河流區(qū)域以及質(zhì)量較差的影像。最終利用標(biāo)注工具Labelme對673幅影像進(jìn)行了標(biāo)注,共標(biāo)注邊界框2 952個,并將標(biāo)注信息保存為Json格式文件。將標(biāo)注后的影像按照8∶2劃分訓(xùn)練集和測試集。表2展示了訓(xùn)練集和測試集中3類污染物的個數(shù)。圖5展示了多樣性數(shù)據(jù)集中的部分標(biāo)注影像(影像獲取參數(shù)見表1),其中嚴(yán)重污染物,中度污染物(生活垃圾袋)以及輕度污染物(玻璃瓶、硬紙箱等其它垃圾)分別由不同線框標(biāo)注。
本研究在搭建的Pytorch深度學(xué)習(xí)框架上對自制的河道漂浮垃圾數(shù)據(jù)集進(jìn)行訓(xùn)練和測試。用到的硬件設(shè)備主要有Intel(R)Core(TM)i7-8750H CPU@2.20 GHz型號的電腦CPU,NVIDIA GeForce GTX 1060型號的電腦GPU,三星DDR4 2667MHz 16GB的內(nèi)存條,大疆Phantom4 RTK無人機(jī)。軟件環(huán)境為Windows10操作系統(tǒng),Python3.6編程語言,Pytorch1.7.1深度學(xué)習(xí)框架,Labelme圖片標(biāo)注工具。
訓(xùn)練階段的超參數(shù)設(shè)置:梯度下降采用批量梯度下降法,一個批次(batch)為4,初始學(xué)習(xí)率設(shè)置為0.001,衰減系數(shù)設(shè)置為0.000 5,動量設(shè)置為0.937,F(xiàn)ocal_Loss函數(shù)中的α設(shè)置為0.25,γ設(shè)置為2。
在多分類任務(wù)中,一般采用類別均衡準(zhǔn)確率(mean average precision,mAP)來反映模型檢測精度(式(6))。考慮到數(shù)據(jù)集中各類別樣本數(shù)量差異較大,傳統(tǒng)的類別均衡準(zhǔn)確率只能反映模型的總體檢測精度,不能較好地反映各類樣本檢測精度之間的差別,本研究引入各類別均衡準(zhǔn)確率的方差(smAP)來衡量模型性能,如式(7)所示。
式中,mAP為多個樣本查準(zhǔn)率和查全率曲線下面積的均值;mapi為數(shù)據(jù)集中各種類目標(biāo)的類別均衡準(zhǔn)確率;P為查準(zhǔn)率;R為查全率;map為數(shù)據(jù)集總的類別均衡準(zhǔn)確率。
本研究在測試集上對YOLOv5s和YOLOv5s-enhanced算法的性能進(jìn)行了對比分析,結(jié)果如表3所示。
由表3可知,在本研究自制的河道漂浮垃圾數(shù)據(jù)集上,YOLOv5s-enhanced算法的mAP比YOLOv5s算法提高了3.47%;另外,YOLOv5s-enhanced算法的smAP為4.46%,YOLOv5s算法的smAP為10.4%,可見,YOLOv5s-enhanced算法對各類垃圾檢測精度的差異有所下降,這是由于Focal_Loss函數(shù)中α、γ參數(shù)所起到的調(diào)和作用所致。
分別使用YOLOv5s-enhanced算法和YOLOv5s算法對訓(xùn)練數(shù)據(jù)集開展訓(xùn)練,對兩個訓(xùn)練好的深度網(wǎng)絡(luò)模型,使用測試數(shù)據(jù)集進(jìn)行了測試。圖6展示了20 m無人機(jī)視角下河道漂浮垃圾的檢測結(jié)果,低空飛行下漂浮垃圾占據(jù)了影像的較大部分,兩種算法都能較好地識別垃圾。
圖7展示了60 m無人機(jī)視角下河道漂浮垃圾的檢測結(jié)果,高空飛行下漂浮垃圾在影像中占比較小,YOLOv5s-enhanced算法相較于YOLOv5s算法出現(xiàn)漏檢的概率要低。
兩種算法對無人機(jī)不同飛行高度、不同飛行角度、不同時間段下所采集河道影像的檢測效果如圖8所示。由圖8可知,YOLOv5s-enhanced算法對高空無人機(jī)視角下的小目標(biāo)檢測精度總體上優(yōu)于YOLOv5s算法。
基于YOLOv5s深度學(xué)習(xí)網(wǎng)絡(luò)對河道無人機(jī)影像進(jìn)行了漂浮垃圾的分類檢測。首先通過RTK-無人機(jī)采集徐州市內(nèi)廢黃河、奎河等河流的影像,依據(jù)需求利用Labelme標(biāo)注工具對影像中的河道漂浮垃圾按污染程度進(jìn)行分類標(biāo)注,建立了一個小型的河道漂浮垃圾數(shù)據(jù)集;針對單階段目標(biāo)檢測算法在檢測小目標(biāo)、類別不均衡目標(biāo)方面的不足,對YOLOv5s模型的數(shù)據(jù)增強(qiáng)、SPP以及損失函數(shù)等模塊進(jìn)行了針對性改進(jìn),其中,在SPP模塊中增加了一個3×3的卷積核來進(jìn)一步提升模型的感受野,從而提高小目標(biāo)的檢測精度;在損失函數(shù)模塊中,取代二進(jìn)制交叉熵函數(shù),使用Focal_Loss函數(shù)計算置信度和類別損失,來解決正負(fù)樣本不均衡問題;最后在測試集上對兩種算法進(jìn)行了性能測試,結(jié)果發(fā)現(xiàn)YOLOv5-enhanced模型提高了小目標(biāo)的檢測精度,另外模型的mAP比原始模型提高了3.47%。目前,該算法已經(jīng)應(yīng)用于RTK-無人機(jī)實時巡檢系統(tǒng),該系統(tǒng)通過讀取RTK-無人機(jī)的實時位置,來分析河道漂浮物污染程度的位置分布。