許競翔,歐陽建,邱 懿,邢博聞
(上海海洋大學工程學院,上海 201306)
近年來,中國水產養殖業得到快速發展,現已成為世界第一大水產養殖國。隨著中國社會經濟的不斷發展,越來越多的人員投入到水產養殖中[1]。細菌性魚病作為水產養殖的主要病害之一,具有暴發范圍大、流行季節長以及死亡率高等特點,對漁業養殖戶造成嚴重的經濟損失[2-3]。例如腸型點狀氣單胞菌、豚鼠氣單胞菌等會造成魚腸充血發炎,肛門紅腫等[4];弧菌等會造成對蝦急性肝胰腺壞死病等[5-6]。因此,監測養殖池中魚病病原細菌質量濃度對預防細菌性魚病具有十分重要的意義。
養殖池中魚病細菌的檢測需要通過取水樣、病原菌分離、細菌培養、顯微鏡觀察和人工計數等步驟確定魚病細菌的種類和數量,傳統的細菌計數方法分為間接培養計數法和直接計數法[7],都需要利用人工進行觀察和統計數量,而細菌都具有目標小、數量多等特點,在進行人工計數時存在工作量大、效率低、誤差大,結果受主觀影響等問題[8]。借助深度學習來檢測和計數該類目標的方法不受主觀因素的影響,并且具有效率高、錯誤率小等優點,逐漸發展為小目標檢測和計數的熱門研究領域。在深度學習模型中,YOLO (You Only Look Once)系列屬于端到端的網絡,因具有檢測速度快的特點而被廣泛使用。譚潤旭等[9]針對血細胞數據的特點,基于YOLOv3設計了一種低密度血細胞計數方法,平均準確率均值較其他檢測方法均提高了7%以上;燕江云等[10]利用YOLOv3網絡檢測腦脊液中分枝桿菌,識別結果接近人工識別的水平,識別精確率達到88.0%;侯建平等[11]基于YOLOv3設計了YOLOv3-tiny算法,并與Resnet50模型相結合,對白帶顯微鏡中的白細胞等檢測效果較好,檢測精確率達到95.94%;Wang等[12]應用SSD(Single Shot MultiBox Detector)和YOLO兩種目標檢測方法對白細胞進行識別和檢測,平均精度為90.09%;YOLOv3和YOLOv4模型對細胞這類小目標的檢測具有較好的精度,但是由于模型參數量和計算量較大,不適用應用在嵌入式或移動式設備上。對此王靜等[13]提出一種基于YOLOv5的白細胞檢測算法,通過增加160×160的檢測層,使用四尺度特征檢測,添加坐標注意力機制等方法使得平均精度均值較YOLOv5算法提升了3.8%。
以上研究所針對的小目標都是生物學細胞,對于魚病病原細菌檢測的研究很少,本研究將深度學習引入到水產養殖領域中,對魚病病原細菌這類小目標進行檢測,實現魚病病原細菌數量的自動化統計,解決了人工計數魚病病原細菌時效率低、誤差大等問題。雖然YOLOv5在模型參數量和訓練速度上優于YOLO系列的其他網絡,但是對于細菌這類小目標的檢測效果并不是很理想,漏檢率和錯檢率較高。本研究提出了一種改進YOLOv5的魚病病原細菌檢測算法YOLOv5_final,通過增大輸入魚病病原細菌圖像的尺寸、添加空間和通道注意力機制、添加檢測層與主干特征提取網絡進行特征融合以及增加多尺度檢測等方法,提升對魚病病原細菌這種小目標的檢測精度。由于魚蝦卵等小目標的特征與魚病病原細菌十分相似,該方法可以擴展應用在魚蝦卵的檢測和計數上,根據計數結果合理投放飼料和供應氧氣等[14]。
隨著不斷發展和改進,YOLO系列已經更新到了YOLOv5,YOLOv5在準確率和檢測速度上都得到了提升。而YOLOv5s在YOLOv5系列中深度最小、識別速度最快,但是相對而言,平均精度AP是最低的。因此選取YOLOv5s作為本研究的基礎模型[15-16],下文簡稱YOLOv5。
YOLOv5網絡主要由主干特征提取網絡(Backbone)、路徑聚合網絡(Neck)以及預測網絡(Prediction)組成。主干特征提取網絡主要包括輸入層(Input)、切片層(Focus)、卷積層(Conv)、瓶頸層(CSP)以及空間池化層(SPP)[17]。
路徑聚合網絡主要作用是特征融合,采用一系列上采樣和下采樣聯合的方式進行特征融合,這種方式能對多尺度特征更好地融合[18]。將融合后的特征層傳入預測層,通過非極大值抑制的方式消除大量冗余的候選框,得到置信度較高的預測類別,并返回目標的寬高信息和坐標點信息[19-20]。
Anchors是提前在圖像中預設好的不同大小和寬高比的預選框。Anchors的設置一般都是通過人工計算。目前大部分目標檢測算法都采用了先驗框方法,如RetinaNet[21]、SSD[22]等。Anchors將不同尺度的目標劃分為幾個方塊,該方法降低了訓練難度和學習難度。因此,選取合適的Anchors尺度對模型的訓練效果有一定的影響[23]。本研究網絡在Neck部分增加了152×152的特征圖分支,所以將聚類得到的Anchors數量由9組增加為12組,通過對訓練集進行K-means聚類的方法得到和特征圖更加匹配的先驗框[24],從而提升模型的準確率和召回率[25]。K-means聚類算法的主要思想是:首先在細菌數據集中隨機選擇K個聚類中心點,計算這K個聚類中心點到其他樣本的距離并且按照距離大小劃分到不同的類中,最后以每個類的質心作為新的聚類中心點,重復上述過程直到聚類中心的位置保持不變。K-means聚類得到的12組Anchors尺寸分別為(24,28)、(32,23)、(32,31)、(28,42)、(44,27)、(40,35)、(36,50)、(55,33)、(53,49)、(42,72)、(77,50)、(64,80)。
注意力機制能夠使網絡更加關注圖像中的目標區域、抑制目標之外的區域,從而能夠更好地提取出大量有價值的信息。目前常見的注意力機制有SE Net[26]、CBAM[27]以及Non-local block[28]。本研究選取CBAM模塊,該模塊是將空間和通道的注意力機制結合起來,對空間和通道兩個維度分別依次導出映射特征圖,然后將兩個特征圖分別基于空間和通道做concat操作,并與輸入特征做乘法操作得到最終的輸出特征[29]。
由原始YOLOv5網絡結構可以知道,在主干特征提取網絡Backbone中,有3層CSP結構、4層Conv結構和1層SPP結構,而只有最后2層CSP模塊的輸出在Neck結構中被利用。如圖1紅色虛線所示,為了能更好地利用主干特征提取網絡提取的特征信息,借鑒Neck結構中的上采樣,添加1層上采樣并和Backbone結構中的第1層CSP輸出的特征圖進行特征融合,并且作為1層輸出和原來的3層輸出構成4個尺度的輸出層。為了進一步細化主干特征提取網絡的特征,在Backbone中的每一個CSP模塊前面添加CBAM注意力機制,強化模型對重要特征通道的敏感性,提取更強有力的特征,對Conv提取的特征更好地利用,如圖1中紅框所示。

圖1 網絡結構
由于K-means聚類的初始聚類中心點是通過隨機產生的,聚類中心的選擇會影響最終的聚類結果。針對這個問題,本研究采用K-means++聚類算法對細菌數據集的先驗框進行聚類。K-means++聚類算法能夠使初始聚類中心點之間保持一定距離,首先在細菌數據集中隨機確定第一個初始聚類中心點,計算剩下所有樣本點距離該初始聚類中心點的距離記為D(x),根據公式(1)計算該初始聚類中心點能夠作為下一個聚類中心點的概率Px,通過輪盤法選出新的聚類中心點,重復上述步驟直到選出了K個聚類中心點[30]。K-means++聚類算法計算出的結果能更好地減小誤差,從而得到更合適的先驗框。
(1)
K-means++聚類得到的12組Anchors尺寸分別為(9,8)、(10,12)、(14,9)、(15,13)、(12,17)、(21,13)、(17,17)、(15,23)、(29,14)、(22,21)、(19,32)、(33,21)。K-means++聚類生成的新Anchors尺寸總體偏小并且差異較小,更加符合細菌的真實尺寸,從而能夠提升模型檢測的準確率。
選用的操作系統為centos7,64位,所有試驗基于Pytorch框架,顯卡型號為NVIDIA GeForce RTX 3090,CUDA版本為11.4。數據集為顯微鏡下的細菌圖像,初始細菌圖一共200張,通過旋轉、平移、翻轉、增加對比度等數據擴增方式得到800張細菌數據集,共21 424個細菌目標,label保存為.txt格式。將數據集按照9∶1劃分為訓練集和測試集。將最小批次設置為16,權重衰減設置為5×10-4,初始學習率設置為0.01,訓練輪次設為600次。
選取共聚焦顯微鏡下的細菌圖作為試驗數據集,細菌性魚病病原細菌主要表現為形狀短小,呈桿狀或者逗點狀。流程圖如圖2所示。當輸入圖像大小超過1 080×1 920時,圖像中像素點小于37的目標將無法學習特征信息。由圖2的輸入圖可以看出,顯微鏡下獲取的細菌圖分辨率過大,并且細菌在圖像中的位置偏小,因此對輸入細菌圖進行處理。由于YOLOv5網絡將輸入圖像規定到了固定尺寸,所以首先擴大原始細菌圖像的大小,然后進行100份等份切分,切分后的圖像大小為416×416。這樣處理能夠使細菌的特征信息全部學習,一定程度上提高了小目標的檢測精度,也可以避免小目標漏檢[31]。

圖2 預處理流程圖
對模型檢測效果的評價指標有很多,選取精確率(Precision)、召回率(Recall)以及平均準確率均值mAP(mean Average Precision)[32]來評定網絡訓練好壞。精確率表示所有被預測為正的樣本中實際為正的樣本的概率;召回率表示在實際為正的樣本中被預測為正樣本的概率;平均精度均值是將所有類別的aP值進行平均求得的,而aP值是PR曲線與橫坐標所圍成的面積,交并比為0.95。
(2)
(3)

(4)
(5)
式中:TP表示細菌被正確識別為細菌;FP表示非細菌被錯誤識別為細菌;FN表示細菌被錯誤識別為非細菌;P表示所有被預測為細菌的目標中實際為細菌的目標的概率;R表示在實際為細菌的目標中被預測為細菌的概率;map表示mAP,即平均準確率均值。
首先利用原始的YOLOv5模型對細菌圖進行訓練和識別,識別效果圖如圖3所示。從圖3可以看到,在細菌圖的邊緣部分存在很多漏檢,如圖3中紅框所示,對細菌這類小目標的檢測效果較差。

圖3 原始YOLOv5檢測效果
針對細菌漏檢問題,對原始YOLOv5的路徑聚合網絡進行優化,增加1層上采樣層,并且和主干特征提取網絡的第1層CSP模塊進行特征融合,加強特征信息的提取,將該網絡記為YOLOv5_4layer。為了證明該操作對提高細菌檢測精度的有效性,將原始YOLOv5網絡和增加上采樣后的YOLOv5_4layer網絡進行對比,從訓練精度Train_Loss和平均精度mAP兩個方面來討論。從圖4訓練損失對比圖可以看到,增加上采樣之后的網絡訓練損失下降得更快,并且一直低于原始YOLOv5網絡,說明添加上采樣之后的網絡輸出的預測值和真實值之間的差異最小。

圖4 YOLOv5和YOLOv5_4layer的訓練損失
為了對比網絡模型的訓練精度,本文對比兩種模型訓練過程中平均精度mAP值的變化曲線如圖5所示。在訓練到120個epoch之前,兩個模型的mAP值變化起伏情況旗鼓相當,在120個epoch之后,原始網絡的mAP值一直位于增加上采樣之后的網絡上方,說明訓練精度比原始YOLOv5模型較差,因此對其進行進一步改進,提高平均檢測精度。

圖5 YOLOv5和YOLOv5_4layer的mAP值
為了能夠提高模型的平均檢測精度,在Backbone結構中加入基于空間和通道的注意力機制模塊CBAM,將其嵌入至Backbone中的每個CSP模塊之前,使其能更好地對卷積模塊Conv提取的特征信息進行細化,并將該網絡記為YOLOv5_final。從圖6可以看到,YOLOv5_final網絡在訓練過程中收斂的最快,并且一直處于最低位置,對模型的影響最小。

圖6 不同網絡的訓練損失
為了更好地驗證改進模型YOLOv5_final的有效性,對比mAP值的變化如圖7所示。

圖7 不同網絡的mAP值
從圖7可以看到,YOLOv5_final網絡模型最終所能達到的mAP值最高,具有更好地檢測精度。這是因為CBAM模塊能夠更好地將卷積模塊提取到的特征進行進一步細化,使得改進后算法的輸出值和真實值之間的差異最小,得到的預測精度達到最高。
為了對比3種網絡對細菌小目標的檢測效果,隨機選取一張圖片進行效果測試,結果如圖8所示。如圖8中的紅色框所示,增加上采樣層后的網絡YOLOv5_4layer在邊緣部分有較好的檢測效果,并且本研究優化后的最終網絡YOLOv5_final能夠檢測出一些更小的細菌目標,識別準確率較高,這證實了注意力機制CBAM的有效性,能夠對提取到的特征進行進一步細分。為了進一步量化分析3種網絡的檢測精度,將3種網絡的mAP值、準確率和召回率[33]統計如表1所示。

圖8 細菌識別效果對比圖
從表1可以看到,增加檢測層之后的網絡比原始網絡的mAP提高了0.56%,精確率和召回率分別提升了2.4%和2.5%。添加注意力機制后,網絡的mAP值相比于沒有添加注意力機制的網絡提升了1.78%,精確率和召回率也有所提升。從訓練精度和損失值來看,添加了檢測層之后的網絡訓練損失收斂的最快,加入CBAM模塊之后,不管是模型收斂程度還是訓練精度都有很明顯的提升,邊框回歸的更加準確。驗證了檢測層和注意力模塊的有效性。

表1 不同網絡的檢測結果對比
針對魚病病原細菌這種微小目標檢測,Backbone中的每個CSP模塊都有提取到特征信息,因此借鑒Neck結構的上采樣,添加一層上采樣,并與Backbone中的第1層CSP模塊提取到的特征信息進行Concat融合,該方法能夠充分利用Backbone主干特征提取網絡提取到的信息。在CSP模塊前添加注意力機制CBAM,注意力機制能夠對卷積模塊提取到的特征信息進一步的細化,并且不會增加模型的參數量。從訓練損失Train_Loss、平均精度mAP以及檢測效果3個方面來驗證增加上采樣層和注意力機制CBAM的有效性。通過結果對比能夠得知,上采樣層和注意力機制都能夠有效地檢測細菌,準確地回歸出預測框,在交并比為0.95的情況下,本研究改進后的YOLOv5算法比原始YOLOv5算法在平均準確率均值上提升2.34%,漏檢率和錯檢率也有所下降。說明本文算法對于魚病病原細菌這類小目標的檢測具有很好的效果。
本研究將深度學習引入魚病病原細菌的檢測和識別上,并達到較好的檢測效果,對魚病病原細菌的數量統計和質量濃度計算等實現自動化,解決了人工計數效率低、誤差大等問題。此外,該方法也可以運用到漁業養殖領域,對魚蝦卵進行檢測和識別,計算魚池中魚蝦的濃度,從而進行匹配的飼料供應和氧氣輸入,這對于漁業養殖戶預防細菌性魚病和魚類養殖等具有較大意義。
□