?

基于改進YOLOv5的魚群小目標檢測優化算法

2024-01-04 23:58汪沛潔諶雨章王詩琦周雯
湖北大學學報(自然科學版) 2024年1期
關鍵詞:魚群注意力精度

汪沛潔,諶雨章,王詩琦,周雯

(湖北大學計算機與信息工程學院, 湖北 武漢 430062)

0 引言

隨著世界各國對海洋資源利用水平的不斷提升,世界范圍內的學者更加關注水下圖像檢測問題。如何利用深度學習方法替代魯棒性差、檢測精度低的傳統目標檢測算法,從而達到更高的檢測速度和檢測精度,逐漸成為研究熱點。目前,通用的目標檢測技術雖然比較成熟,但在不同的水下場景中,魚類目標的種類、形狀、大小、數量等存在差異,對檢測精度和速度的要求也不同,它給水下環境中的目標檢測任務帶來了挑戰。目前,基于深度學習的魚群目標檢測已經取得了較高的準確率,然而,它在復雜的水下環境中還存在著很多挑戰,主要有以下幾個方面:

1)現有的目標檢測算法是針對中/大目標而設計的,對于水下小目標的檢測的效果較差。

2)小目標易受環境干擾,水下的條件復雜,光照不均勻導致小目標的特征信息難以被網絡檢測到。

3)各魚群尺寸大小不一,小目標魚群的可利用像素較小,網絡很難提取到較好的特征信息,并且隨著網絡層數的增加,小目標特征信息及位置信息極易丟失,從而導致小目標魚群目標的漏檢。

近年來研究人員在水下小目標魚群檢測方面做了大量的工作,并取得了一定的成果。在實際自然場景中,由于光線、水質、水下環境等自然條件的原因,水下采集的圖片分辨率低,且魚群在圖像中容易與背景顏色融為一體,在這樣的條件下檢測魚群是一個較大的挑戰。當前,基于深度學習的目標檢測方法已經吸引了大量研究學者在此方向上進行研究,并在很多方面得到了進一步的擴展、完善和應用?;谏疃葘W習的目標檢測方法主要分為兩類:兩階段(Two-stage)目標檢測算法和一階段(One-stage)目標檢測算法。

兩階段目標檢測算法是將檢測問題劃分為兩個階段,首先產生候選區域,然后對候選區域進行特征提取、域分類和位置調整。這類算法的代表有R-CNN[1]及其變體Fast R-CNN[2]、Faster R-CNN[3]和R-FCN[4]等。例如,袁紅春等[5]將MSRCR算法與Faster R-CNN二次遷移學習算法引入到小規模水下魚類識別中,實現了魚類目標的檢測。Li等[6]通過改進區域卷積網絡卷積層的結構,構建了檢測魚類目標的神經網絡,在公開數據集上獲得了較高的平均精度。一般來說兩階段算法具有較高的檢測精度,但檢測速度較慢。一階段目標檢測算法實現了檢測和分類同時進行,通過回歸直接輸出物體的類別概率和位置坐標值。YOLOv1[7],YOLOv2[8]、YOLOv3[9]和SSD[10]等。例如,Xu等[11]使用YOLOv3模型檢測三種不同的魚類數據集,實現了僅使用兩個數據集進行訓練,對所有三個數據集進行測試,獲得了平均0.539 2的識別準確率; Sung等[12]基于YOLO的架構實現了一個包含24個卷積層和兩個全連接層的CNN結構,對自定義魚群數據集進行了檢測;王文成等[13]提出了一種改進SSD的魚類目標檢測算法,具有較高的準確率。一階段目標檢測雖然檢測速度較快,但是檢測精度通常低于兩階段算法。

基于深度學習的魚類目標檢測算法具有更高的精度和魯棒性,但檢測精度和速度仍有待提高。因此,結合深度學習目標檢測方法研究小魚群目標檢測算法,對提高魚群圖像檢測的精度和速度具有重要的研究價值。因此,本研究針對水下小目標魚群檢測任務,展開關于在情況復雜的水下的小目標魚群檢測研究,以實現水下小目標魚群的檢測。

1 基于多頭自注意力機制和內卷算子的YOLOv5算法

1.1 YOLOv5算法YOLOv5[14]于2020年5月提出,是一個高性能、通用的目標檢測算法。YOLOv5包含4個部分:Input部分、Backbone部分、Neck部分以及Output部分。YOLOv5結構圖如圖1所示。

圖1 YOLOv5結構圖

1.1.1 Input部分介紹 Input部分對輸入的圖片進行了Mosaic數據增強、圖片尺寸處理、自適應錨框設計系列操作。Mosaic數據增強技術豐富了樣本的多樣性,大大降低了模型進行多樣性學習的難度,該方法非常適用于小目標檢測,滿足本文水下小魚群檢測的需要[15]。圖片尺寸處理操作是將輸入圖片調整為網絡接受的標準尺寸,再輸入進網絡模型中進行訓練。自適應錨框設計是指網絡在初始錨框的基礎上輸出預測框并與真實框進行比較,計算兩者差距并反向更新,不斷迭代調整網絡參數。

1.1.2 Backbone部分介紹 Backbone部分是主干網絡, 其作用是提取特征,由Focus模塊和CSP結構組成。其中,Focus模塊為YOLOv5獨創的結構,其作用為對進入網絡的圖片進行切片操作,提高卷積速度。如圖2所示,圖像的像素尺寸與輸入網絡前相比縮小了一半,減少了卷積的計算量,提高了卷積運算速度,最重要的是同時保留了圖像完整的信息,但降低了網絡的檢測精度。本研究主要將Focus模塊替換為Conv模塊,以提高網絡的檢測精度。

圖2 Focus模塊結構示意圖

YOLOv5版本使用了兩種CSP結構,分別是CSP1_X和CSP2_X。Backbone網絡中主要使用了CSP1_X結構,Neck結構中主要使用CSP2_X結構,新版YOLOv5中,將Bottleneck CSP(瓶頸層)模塊轉變為了C3模塊,結構作用基本相同均為CSP架構,是對殘差特征進行學習的主要模塊,其結構分為兩支,如圖3所示。

圖3 C3模塊結構示意圖

1.1.3 Neck部分介紹 Neck部分是網絡中間的銜接部分,起到傳遞獲取的特征融合信息的作用。Neck部分是FPN+PAN的結構,其結構如圖4所示。FPN結構是自頂向下的,通過上采樣和融合低層信息的方式得到預測的特征圖。PAN是采用自底向上的對FPN進行補充的特征金字塔。

圖4 Neck部分結構示意圖

1.1.4 Output部分介紹 Output部分是輸出,用來輸出小目標識別的結果。YOLOv5中使用GIOU-loss作為損失函數來替換普通的IoU計算方法,有效解決了邊界框不重合的問題。YOLOv5在性能上略低于YOLOv4,但比YOLOv4更靈活、更快,所以它有一個優勢在模型部署。

1.2 多頭自注意力機制注意力機制(attention mechanism)模仿了生物觀察行為的過程[16],注意力機制可以快速提取系數數據的重要特征,通過對輸入圖像數據采用注意力機制,可以突出圖片中目標的關鍵特征并抑制次要信息,進而提高整個神經網絡模型的檢測的效率和精度,同時也會促使模型學習中再次出現類似特征時將注意力放在該圖像特征上,提高模型的學習及泛化能力[15]。注意力機制中存在查詢矩陣Q、鍵矩陣K和值矩陣V。而自注意力機制(self-attention mechanism)是注意力機制的改進,其令Q=K=V,抑制了網絡對外部信息的依賴,更關注數據或特征內部之間的聯系[16],能夠處理比常規卷積更大的感受野,提高模型的學習能力,并增強了神經網絡的可解釋性。

多頭注意力機制(multi-head attention)的本質是在參數量總體不變的情況下,將查詢Q、鍵K、值V三個參數進行h組拆分,每組拆分將參數映射到高維空間的不同子空間中執行注意力函數運算計算注意力權重, 從而能夠從多個維度提煉特征信息[16],得到最終的輸出,其結構如圖5所示。多頭自注意力以縮放點積注意力(scaled dot-product attention, SDA)為原理,如式(1)所示:

(1)

圖5 縮放點積注意力和多頭自注意力模塊結構示意圖

并行計算各個子空間的SDA,如式(2)所示:

(2)

融合所有子空間的注意力信息,如式(3)所示:

MultiHead(Q,K,V)=Concat(head1,…,headh)W0

(3)

1.3 內卷算子經典的卷積核具有空間不變性和通道獨立性,但劉文婷等[16]提出的新的神經網絡算子Involution(內卷算子)卻與之相反。Involution的示意圖如圖6所示。

圖6 Involution示意圖

Involution核H∈RH×W×K×K×G包含Spatial和Channel的反向特征變換。是專門為對應坐標(i,j)的像素Xi,j∈RC定制的,但在通道上共享,其中C表示計算通道,G表示每個組共享相同的involution核的組數,卷積核的大小取決于輸入特征映射的大小。利用involution核對輸入進行乘加運算,得到involution的輸出特征映射:

(4)

Involution核H的形狀取決于輸入特征映射X的形狀,生成以原始輸入張量為條件的Involution核,使輸出核與輸入核對齊。這里將核生成函數符號為φ,并將每個位置(i,j)的函數映射抽象為:

Hi,j=φ(Xψi,j)

(5)

從單個像素Xi,j跨越每個Involution內核Hi,j。每個像素ψi,j有核生成函數φ,其形式如式(6)所示:

Hi,j=φ(Xi,j)=W1σ(W0Xi,j)

(6)

其中,W0和W1代表兩個線性變換,共同構成Bottleneck結構,σ表示批處理歸一化后對兩個線性變換的非線性激活函數BN和ReL U?;谝陨蟽烖c,本研究將部分C3模塊中引入內卷算子即C3Inv模塊來替代部分原YOLOv5中的C3模塊,這有利于捕獲空間長距離信息和減少網絡參數的數量。

2 改進算法的結構

YOLOv5目標檢測算法本身是一個比較優秀的檢測算法,目前國內外研究仍有很大的改進空間。參考前面提到的算法理論研究對YOLOv5算法進行了改進,得到改進的YOLOv5算法——INV-YOLOv5。其結構如圖7所示,網絡整體結構如表1所示。

表1 改進YOLOv5網絡整體結構

圖7 改進YOLOv5網絡框架示意圖

考慮到圖像中存在占像素信息少的目標,更容易受到背景的影響,YOLOv5m模型算法在使用卷積網絡檢測樣本時容易漏掉小目標的部分特征信息,從而致使小目標的檢測精度不高,因此在主干模塊中,將Focus模塊替換為Conv模塊,目的是提高網絡的檢測精度。C3模塊被Involution參與的C3Inv模塊所取代,部分C3模塊被多頭注意力機制參與的C3TR模塊所取代,這有利于特征提取,可以捕獲空間上更遠距離的信息,告訴模型需要注意哪些位置和信息,進一步提高檢測的準確率,可以減少網絡參數量。同時,將Concat修改為加權的Weightconcat(加權的Concat),給特征圖不同的權重然后再合并在一起,如式(7)所示:

(7)

(8)

3 實驗結果與分析

3.1 數據集的選取與建立

3.1.1 數據集介紹 本文中使用的公開數據集有Labeled Fishes in the Wild數據集[17]和WildFish數據集[18]。Labeled Fishes in the Wild數據集是從部署在遙控車輛(ROV)上的攝像機系統記錄的水下視頻中提取的,它包括兩類(魚和非魚)和1 329張圖像。WildFish是魚類檢測和識別領域最大的數據集。WildFish由1 000種魚類和54 459張圖像組成,圖片來自FishBase[19]、專業網站(如海洋中心和博物館)和谷歌圖像搜索。圖片經過篩選、清洗以及標注等步驟,增加了許多小目標和密集目標的數量,可以提高對小目標和密集目標的檢測率。圖8所示為Labeled Fishes in the Wild數據集的分析可視化結果圖示例,圖8(a)中橫縱坐標表示中心點x,y坐標的位置,圖8(b)中橫坐標width物體的寬,縱坐標height代表物體的高。最終得到的數據集總共有6 765張圖片,將數據集按照按照8∶2的比例分為兩部分:訓練集和測試集。其中訓練集5 412張圖片,測試集1 353張圖片。圖9是來自兩數據集的示例圖像。

圖8 數據集分析

圖9 來自數據集的示例圖像

3.1.2 數據集標記 經過LabelImg標注的數據集是PASCAL VOC格式的.xml文件,由于本研究使用了算法YOLOv5m,所以需要將其轉換為YOLO格式的.txt格式文件,其公式如下:

x=(xmax+xmin)/dw

y=(ymax+ymin)/dh

w=(xmax-xmin)/dw

h=(ymax-ymin)/dh

(9)

.xml文件中物體位置坐標的左上角坐標和右下角坐標為xmax、xmin、ymax、ymin.dw、dh表示圖片的高和寬。數據集標注示例如圖10所示。

圖10 數據集標注示例

3.2 實驗配置本實驗在Windows10操作系統中進行,采用Python語言編程實現,如表2所示,列舉了實驗硬件配置和所搭建的程序環境。

表2 改進YOLOv5識別小魚程序環境

3.3 評價指標的選取本實驗在Windows10操作系統中進行,采用Python語言編程實現,如表2所示,列舉了實驗硬件配置和所搭建的程序環境。

本實驗使用精確率(Precision)、召回率(Recall)、平均精度AP(average precision)、平均精度均值mAP(mean average precision)來評價模型。其中,ture positives(TP) 是指將魚群的圖片識別成正樣本;ture negatives(TN) 是指背景的圖片沒有被識別出來,或者是背景被正確分類成背景;false positives(FP) 是指將背景圖片識別成了魚群;false negatives(FN) 是指將魚群的圖片識別為背景[20]。

精確率(Precision)表示所有被識別出來的魚群中正確識別的魚群所占的比例:

(10)

召回率(Recall)是被正確識別出來的魚群數量與測試集中所有的魚群數量的比值:

(11)

平均精度AP(average precision)指的是以召回率Recall為橫軸以精確率Precision為縱軸組成的曲線圍成的面積,公式如下:

(12)

實驗中平均精度均值mAP(mean average precisin)是指數據集中所有類別的平均精度的均值,公式如下:

(13)

其中,m表示測試集中的樣本個數。

3.4 結果分析為了更好地展現該改進模型的優勢,實驗將改進的YOLOv5m算法即INV-YOLOv5算法與YOLOv5m、YOLOv4、SSD、CenterNet在Labeled Fishes in the Wild和WildFish兩種數據集上進行對比,模型使用相同實驗環境來進行訓練、驗證,并將實驗結果進行分析。

表3所示為各個模型在數據集Labeled Fishes in the Wild上在mAP、Recall和實時檢測FPS(frames per second)的對比結果。從表3 的實驗結果可以看出,在Labeled Fishes in the Wild這個數據集上,INV-YOLOv5與YOLOv5m相比,mAP高出了6%,與YOLOv4、SSD、CenterNet相比,mAP提升了9.1%、10.8%和13.6%。

表3 數據集Labeled Fishes in the Wild實驗數據

表4所示為各個模型在數據集WildFish上在mAP、Recall和實時檢測FPS的對比結果。從表4 的實驗結果可以看出,在Labeled Fishes in the Wild這個數據集上,INV-YOLOv5與YOLOv5m相比,mAP提升了14.5%,與YOLOv4、SSD、CenterNet相比,mAP均有提升,說明改進的YOLOv5算法INV-YOLOv5檢測準確率優于目前先進算法,并且FPS相差不大。同時處理速度有較大提升。

表4 數據集WildFish實驗數據

表5所示為各個模型在數據集Labeled Fishes in the Wild上復雜度對比的對比結果。從表5的實驗結果可以看出,在數據集Labeled Fishes in the wild上YOLOv5檢測算法中的YOLOv5m模型與一階段檢測模型SSD和YOLOv4還有CenterNet相比較,YOLOv5m屬于輕量級的模型。本文中提出的方法在YOLOv5m輕量級的基礎上更減少了模型的參數量,由原本的41.9 MB減少到了35.41 MB。

表5 不同網絡復雜度對比

為了更直觀地分析檢測結果,圖11可視化了YOLOv5m與INV-YOLOv5在Labeled Fishes in the Wild數據集上的檢測結果。圖12可視化了YOLOv5m與INV-YOLOv5在WildFish數據集上的檢測結果。綜合模型大小、mAP、FPS及可視化結果來看,本文中方法INV-YOLOv5在魚群小目標檢測上具有較好的性能。

圖11 Labeled Fishes in the Wild數據集可視化結果

圖12 WildFish數據集可視化結果

3.5 消融實驗為了進一步驗證改進算法的有效性,對算法所提的替換Focus模塊、使用C3Inv、使用C3TR和使用Weightconcat模塊等方法在WildFish數據集上設計了5組消融實驗,每組實驗所使用的環境和訓練技巧相同。實驗結果可從表6得到。其中YOLOv5m-A表示在原始YOLOv5m的主干網絡中將Focus模塊替換為Conv模塊;YOLOv5m-B表示在YOLOv5m-A基礎上將網絡中一部分的C3模塊替換為有Involution參與的C3Inv模塊;YOLOv5m-C表示在YOLOv5m-B的基礎上將網絡中的另一部分C3模塊替換為被多頭注意力機制參與的C3TR模塊;INV-YOLOv5表示本研究所提出的模型,在YOLOv5m網絡的基礎上同時替換Focus模塊、使用C3Inv、使用C3TR和使用Weightconcat模塊。通過對比平均精度可以看出,在原始YOLOv5m的主干網絡中將Focus模塊替換為Conv模塊提高了模型4.8%的mAp,證明Conv模塊能夠提高網絡的檢測精度。提出的C3Inv模塊讓模型的mAp提升2.3%。C3TR模塊對于特征提取有顯著效果,mAP提高5.7%,證明該模塊能夠增強特征的表達能力,有利于特征提取捕獲空間上更遠距離的信息,告訴模型更需要注意哪些位置和信息,進一步提高檢測的準確率。Concat修改為加權的Weightconcat(加權的Concat),給特征圖不同的權重然后再合并在一起,能夠豐富特征圖的信息,對于模型檢測的mAp提高1.7%。實驗表明,對于模型檢測小目標魚群,所提方法都改善了對小目標的檢測效果。

表6 INV-YOLOv5消融實驗

4 結束語

INV-YOLOv5模型在Labeled Fishes in the Wild數據集和WildFish數據集上實驗驗證表明,該方法的平均精度(mAP)分別為81.7%和83.6%,通過綜合分析認為可以實現對小魚群目標的檢測, 不僅擁有較高的識別率并且更加輕量化,模型大小與YOLOv5m網絡相比減少了6 M(Mega)左右,達到了在復雜環境下對小目標檢測的要求。根據分析結果,今后可在水下獲取更多小目標魚群影像,擴充數據集,進行補充訓練,進一步提高識別率。

猜你喜歡
魚群注意力精度
讓注意力“飛”回來
基于DSPIC33F微處理器的采集精度的提高
魚群漩渦
“揚眼”APP:讓注意力“變現”
A Beautiful Way Of Looking At Things
GPS/GLONASS/BDS組合PPP精度分析
基于改進魚群優化支持向量機的短期風電功率預測
基于人工魚群算法的光伏陣列多峰MPPT控制策略
改進的Goldschmidt雙精度浮點除法器
多子群并行人工魚群算法的改進研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合