劉 麒,尹 港,王 影,葉 澤
(吉林化工學(xué)院 信息與控制工程學(xué)院,吉林 吉林 132022 )
近年來,隨著我國綜合國力的快速發(fā)展,湖泊廢棄物問題已經(jīng)引起了研究人員和公眾的關(guān)注.水面漂浮物如塑料水瓶、牛奶盒、漁網(wǎng)等,容易對水體中的生物造成一定的危害[1].因此,為保護(hù)水中生物的安全,需要對水面的垃圾進(jìn)行清理.如今依然靠人工駕駛大型船只清理水面垃圾,這需要消耗大量的人力和物力.所以,采用水面垃圾清理機(jī)器人對水面的垃圾進(jìn)行檢測和清除成為一種有效的方式.
目標(biāo)識別工具包括合成孔徑雷達(dá)、紅外成像傳感器和攝像頭等[2-3].隨著計(jì)算機(jī)技術(shù)的提高和基于深度學(xué)習(xí)檢測算法的發(fā)展,攝像頭識別目標(biāo)物成為一種流行的方式,視覺系統(tǒng)提供的關(guān)于物體外觀的數(shù)據(jù)可以得到更好地利用.為了水面垃圾清理機(jī)器人能夠?qū)崟r(shí)且準(zhǔn)確識別,用攝像頭配合深度學(xué)習(xí)檢測目標(biāo)物是高效的解決方案.
YOLO算法是Joseph Redmon等人在2016年發(fā)表的[4-5],隨著計(jì)算機(jī)技術(shù)的進(jìn)步和深度學(xué)習(xí)框架的發(fā)展,YOLO算法已經(jīng)發(fā)展到第五代.YOLOv5目標(biāo)檢測算法是Ultralytics公司于2020年發(fā)布的,YOLOv5有4個(gè)版本,包括YOLOv5s,YOLOv5m,YOLOv5l,YOLOv5x.由于要將算法配置在樹莓派上,要求檢測速度要快,所以選擇了模型較小的YOLOv5s.圖1是YOLOv5目標(biāo)識別算法的結(jié)構(gòu)圖.
YOLOv5基于CSP-Darknet網(wǎng)絡(luò),輸入一張608*608三維度的圖像,經(jīng)過主干網(wǎng)絡(luò)對圖像進(jìn)行卷積和切片等操作,將主干網(wǎng)絡(luò)的信息傳到Neck網(wǎng)絡(luò).Neck網(wǎng)絡(luò)將這些圖像信息進(jìn)行融合、上采樣和下采樣等,然后輸出3種尺度的圖像,76*76*255尺度的圖像用來預(yù)測小目標(biāo);38*38*255尺度的圖像用來預(yù)測中等目標(biāo);19*19*255尺度的圖像用來預(yù)測大目標(biāo)[6].
輸入端主要對輸入的圖片進(jìn)行修改,進(jìn)行模糊處理,幾張圖片進(jìn)行縫合,或?qū)D片進(jìn)行隨機(jī)排列,使得輸入的圖片統(tǒng)一縮放到某個(gè)標(biāo)準(zhǔn)尺度,然后再送入檢測網(wǎng)絡(luò).主干網(wǎng)絡(luò)主要包括CSP-Darknet網(wǎng)絡(luò),有減少網(wǎng)絡(luò)計(jì)算量以及對顯存的占用,同時(shí)保證網(wǎng)絡(luò)的能力有所提升的優(yōu)點(diǎn)[7].Neck模塊主要包括改進(jìn)的SPP結(jié)構(gòu)和CSP-PAN結(jié)構(gòu),其中改進(jìn)的SPP結(jié)構(gòu)是將輸入串行通過多個(gè)5*5大小的最大池化層,進(jìn)一步增大特征圖的感受野.CSP-PAN結(jié)構(gòu)使得物體在不同尺度下輸入時(shí)可以檢測得較好.輸出端對檢測框和目標(biāo)框進(jìn)行損失函數(shù)的計(jì)算,采用非極大值抑制用于預(yù)測框的篩選,然后輸出帶有預(yù)測框的圖片.
YOLOv5算法采用K-means聚類算法生成anchor boxes.原始YOLOv5算法中先驗(yàn)框的尺寸是由K-means算法在COCO數(shù)據(jù)集上聚類得到.K-means聚類算法的核心思想是:數(shù)據(jù)集中隨機(jī)生成K個(gè)聚類中心點(diǎn),計(jì)算數(shù)據(jù)集中其余點(diǎn)到聚類中心點(diǎn)的歐式距離,與聚類中心點(diǎn)距離較小的點(diǎn)劃分到一組,從而完成對數(shù)據(jù)集的聚類.但由于K-means算法對生成聚類組采用的歐氏距離計(jì)算結(jié)果并不是太好,所以本文采用的是數(shù)據(jù)集中隨機(jī)生成的聚類中心點(diǎn)的先驗(yàn)框與其余先驗(yàn)框的重合程度來表示,即IOU越大,表示距離越接近.從圖2可以看出,IOU是一個(gè)比值,即交并比.在分子中計(jì)算數(shù)據(jù)集聚類中心先驗(yàn)框與數(shù)據(jù)集中其余先驗(yàn)框的重疊區(qū)域,分母是兩個(gè)先驗(yàn)框的并集區(qū)域.改進(jìn)的K-means算法聚類由公式(1)、(2)所示.使用改進(jìn)的K-means聚類算法對數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行聚類,并經(jīng)過200次遺傳算法迭代,生成3組anchor boxes:[5,4,9,5,10,7],[15,6,15,10,24,9],[29,12,39,18,60,34],使得模型更容易收斂,提高檢測的精度.預(yù)測框與真實(shí)框的IOU表示如圖2所示.
(1)
D=1-IOU.
(2)
SE注意力機(jī)制在通道維度增加注意力機(jī)制,原理圖如圖3所示.通過自動學(xué)習(xí)的方式,使用新的神經(jīng)網(wǎng)絡(luò),獲取到特征圖的每個(gè)通道的重要程度,然后用這個(gè)重要程度去給每個(gè)特征賦予一個(gè)權(quán)重值,從而讓神經(jīng)網(wǎng)絡(luò)重點(diǎn)關(guān)注某些特征通道.提升對當(dāng)前任務(wù)有用的特征圖通道,并抑制對當(dāng)前任務(wù)用處不大的特征通道,這樣增加了參數(shù)和計(jì)算量,也增大了有效信息的權(quán)重,使得網(wǎng)絡(luò)更好訓(xùn)練[8].
在輸入SE注意力機(jī)制之前,特征圖每個(gè)通道的重要程度都是一樣的,通過SE網(wǎng)絡(luò)之后,不同顏色代表不同的權(quán)重,使每個(gè)特征通道的重要性變得不一樣了,神經(jīng)網(wǎng)絡(luò)重點(diǎn)關(guān)注某些權(quán)重值大的通道.Squeeze通過全局平均池化,將每個(gè)通道的二維特征(H*W)壓縮為一個(gè)實(shí)數(shù),將特征圖從[h,w,c]轉(zhuǎn)換為[1,1,c],如公式(3)所示.
(3)
Excitation給每個(gè)特征通道生成一個(gè)權(quán)重值,如公式(4)所示.
s=σ(W2δ(W1z)),
(4)
Scale將歸一化權(quán)重加權(quán)到每個(gè)通道的特征上,如公式(5)所示.
(5)
邊界框預(yù)測是目標(biāo)檢測中重要的任務(wù)之一,在圖像中想要得到檢測出的目標(biāo),就要對邊界框所在的位置進(jìn)行預(yù)測.邊界框預(yù)測損失函數(shù)包括IOU_loss、GIOU_loss、CIOU_loss等.其中IOU_loss主要考慮真實(shí)框和預(yù)測框的重疊面積,但是當(dāng)真實(shí)框和預(yù)測框沒有相交時(shí),這就造成邊界框損失函數(shù)計(jì)算不準(zhǔn)確.在IOU_loss的基礎(chǔ)上,GIOU_loss考慮了邊界框不相交的問題.CIOU_loss則考慮了預(yù)測框和真實(shí)框中心點(diǎn)之間的距離,用歐氏距離計(jì)算兩點(diǎn)之間的距離,另外還增加了對邊界框?qū)捀弑鹊目紤],如公式(6)所示.α-IOU通過調(diào)節(jié)參數(shù)α,使預(yù)測框有很大靈活性,對小數(shù)據(jù)集和噪聲有更強(qiáng)的魯棒性,如公式(7)所示.
YOLOV5目標(biāo)檢測算法中邊界框預(yù)測采用GIOU_loss,本文采用α-CIOU作為邊界框預(yù)測目標(biāo)的損失函數(shù).如公式(8)所示.
(6)
Lα-IOU=1-IOUα1+Ρα2(B,Bgt),
(7)
(8)
b代表了預(yù)測框的中心點(diǎn);bgt表示真實(shí)框的中心點(diǎn);ρ(·)表示兩個(gè)中心點(diǎn)之間的歐式距離;c表示預(yù)測框和真實(shí)框的對角線距離;α表示可調(diào)節(jié)參數(shù).
基于改進(jìn)YOLOv5深度學(xué)習(xí)的水面垃圾識別算法主要包括建立水面垃圾數(shù)據(jù)集、水面垃圾圖像標(biāo)注和網(wǎng)絡(luò)訓(xùn)練等環(huán)節(jié),具體流程如圖4所示.
實(shí)驗(yàn)操作系統(tǒng)為Ubuntu,CPU型號為Intel(R) Xeon(R) Gold 5320 CPU @ 2.20GHz,運(yùn)行內(nèi)存為32GB.GPU型號為RTX A4000,顯存大小為16GB.該實(shí)驗(yàn)在Pytorch 1.7.0深度學(xué)習(xí)框架、Cuda 11.0架構(gòu)上實(shí)現(xiàn),Python 3.8為基礎(chǔ)編程語言.訓(xùn)練的參數(shù):batch_size設(shè)置為32,訓(xùn)練周期設(shè)置為200,學(xué)習(xí)率設(shè)置為0.001,其他參數(shù)為默認(rèn)值.
本文使用的數(shù)據(jù)集是歐卡智能提供的公開數(shù)據(jù)集(FLOW)[9],該數(shù)據(jù)集適應(yīng)于內(nèi)陸水域復(fù)雜場景,且是從水面無人航行器的角度收集的水面漂浮物.其他數(shù)據(jù)集,如包含野外廢棄物的TACO數(shù)據(jù)集[10],用無人駕駛飛行器(UAV)拍攝的地面上真實(shí)廢棄瓶的UAV-DB數(shù)據(jù)集[11],還有在室內(nèi)拍攝的廢棄物MJU-Waste數(shù)據(jù)集[12].本文使用的數(shù)據(jù)集中超過一半的標(biāo)記漂浮物被視為小物體,與其他數(shù)據(jù)集相比,更適合對水面漂浮物識別進(jìn)行訓(xùn)練,可以促進(jìn)對水面上小物體檢測的研究.如圖5所示,(a)、(b)、(c)分別是TACO數(shù)據(jù)集、UAV-DB數(shù)據(jù)集和MJU-Waste數(shù)據(jù)集,(d)是本所使用的數(shù)據(jù)集FLOW,盡管(a)、(b)、(c)數(shù)據(jù)集對廢物分類很有價(jià)值,但是這些數(shù)據(jù)集應(yīng)用場景與內(nèi)陸水域有很大的不同.
由于原始數(shù)據(jù)集只有500張圖片,數(shù)據(jù)集的數(shù)量也是決定目標(biāo)檢測效果的一個(gè)重要因素,為了得到更好的目標(biāo)檢測效果,需要對數(shù)據(jù)集進(jìn)行擴(kuò)充.擴(kuò)充方式包括對原始圖像加入高斯模糊和旋轉(zhuǎn)180°等.經(jīng)過兩種擴(kuò)充方式之后,數(shù)據(jù)集由原有的500張圖像增加到1 500張圖像,如表1所示.原始數(shù)據(jù)集與擴(kuò)充之后的數(shù)據(jù)集對比如圖6所示.
表1 數(shù)據(jù)集擴(kuò)充數(shù)量
本實(shí)驗(yàn)引入查準(zhǔn)率(Precision)、查全率(Recall)、平均精度AP(Average Precision)和平均精度均值mAP(mean Average Precision)來評估檢測模型的準(zhǔn)確性.其中TP代表檢測到水面漂浮物,并且在實(shí)際圖片中也檢測到了水面漂浮物;FP代表檢測到水面漂浮物,但是在實(shí)際圖片中未檢測到水面漂浮物;FN代表未檢測到水面漂浮物,但是在實(shí)際圖片中檢測到水面漂浮物.
查準(zhǔn)率是模型預(yù)測的所有目標(biāo)中,預(yù)測正確的比例,如公式(6)所示:
(6)
查全率是所有真實(shí)目標(biāo)中,模型預(yù)測正確的目標(biāo)比例,如公式(7)所示:
(7)
AP(Average Precision)表示P-R曲線下的面積;mAP(mean Average Precision)表示各類別AP的平均值.因本文使用的數(shù)據(jù)集中的類別只有bottle一項(xiàng),所以mAP值與AP值相等.
原始YOLOv5模型和改進(jìn)的YOLOv5模型在訓(xùn)練過程中,均使用相同的參數(shù)設(shè)置和數(shù)據(jù)集,根據(jù)訓(xùn)練過程中的日志文件繪制出如圖7所示的損失函數(shù)曲線.將訓(xùn)練集得到的權(quán)重文件應(yīng)用到驗(yàn)證集上進(jìn)行驗(yàn)證,通過表2可以知道改進(jìn)的算法比原始算法在查準(zhǔn)率和平均精度均值分別提升了2%和4%.將改進(jìn)的YOLOv5算法與原始YOLOv5算法在除本文所使用的數(shù)據(jù)集之外的圖片上進(jìn)行對比,改進(jìn)的YOLOv5算法在誤檢率、檢測精度方面優(yōu)于原始YOLOv5算法,如圖8所示.
表2 實(shí)驗(yàn)結(jié)果
引入改進(jìn)的YOLOv5目標(biāo)識別算法,在水面漂浮物尤其是小目標(biāo)檢測方面有了較好的結(jié)果.首先,通過改進(jìn)的K-means算法對數(shù)據(jù)集的先驗(yàn)框重新聚類,提高了模型的收斂性.其次,將α-IOU損失函數(shù)與c-IOU損失函數(shù)結(jié)合,為小目標(biāo)檢測提供了更強(qiáng)的魯棒性.改進(jìn)后的YOLOv5算法與原始算法相比,在查準(zhǔn)率和平均精度均值方面分別提升了2%和4%.