許競翔,歐陽建,邱 懿,邢博聞
(上海海洋大學(xué)工程學(xué)院,上海 201306)
近年來,中國水產(chǎn)養(yǎng)殖業(yè)得到快速發(fā)展,現(xiàn)已成為世界第一大水產(chǎn)養(yǎng)殖國。隨著中國社會經(jīng)濟(jì)的不斷發(fā)展,越來越多的人員投入到水產(chǎn)養(yǎng)殖中[1]。細(xì)菌性魚病作為水產(chǎn)養(yǎng)殖的主要病害之一,具有暴發(fā)范圍大、流行季節(jié)長以及死亡率高等特點(diǎn),對漁業(yè)養(yǎng)殖戶造成嚴(yán)重的經(jīng)濟(jì)損失[2-3]。例如腸型點(diǎn)狀氣單胞菌、豚鼠氣單胞菌等會造成魚腸充血發(fā)炎,肛門紅腫等[4];弧菌等會造成對蝦急性肝胰腺壞死病等[5-6]。因此,監(jiān)測養(yǎng)殖池中魚病病原細(xì)菌質(zhì)量濃度對預(yù)防細(xì)菌性魚病具有十分重要的意義。
養(yǎng)殖池中魚病細(xì)菌的檢測需要通過取水樣、病原菌分離、細(xì)菌培養(yǎng)、顯微鏡觀察和人工計數(shù)等步驟確定魚病細(xì)菌的種類和數(shù)量,傳統(tǒng)的細(xì)菌計數(shù)方法分為間接培養(yǎng)計數(shù)法和直接計數(shù)法[7],都需要利用人工進(jìn)行觀察和統(tǒng)計數(shù)量,而細(xì)菌都具有目標(biāo)小、數(shù)量多等特點(diǎn),在進(jìn)行人工計數(shù)時存在工作量大、效率低、誤差大,結(jié)果受主觀影響等問題[8]。借助深度學(xué)習(xí)來檢測和計數(shù)該類目標(biāo)的方法不受主觀因素的影響,并且具有效率高、錯誤率小等優(yōu)點(diǎn),逐漸發(fā)展為小目標(biāo)檢測和計數(shù)的熱門研究領(lǐng)域。在深度學(xué)習(xí)模型中,YOLO (You Only Look Once)系列屬于端到端的網(wǎng)絡(luò),因具有檢測速度快的特點(diǎn)而被廣泛使用。譚潤旭等[9]針對血細(xì)胞數(shù)據(jù)的特點(diǎn),基于YOLOv3設(shè)計了一種低密度血細(xì)胞計數(shù)方法,平均準(zhǔn)確率均值較其他檢測方法均提高了7%以上;燕江云等[10]利用YOLOv3網(wǎng)絡(luò)檢測腦脊液中分枝桿菌,識別結(jié)果接近人工識別的水平,識別精確率達(dá)到88.0%;侯建平等[11]基于YOLOv3設(shè)計了YOLOv3-tiny算法,并與Resnet50模型相結(jié)合,對白帶顯微鏡中的白細(xì)胞等檢測效果較好,檢測精確率達(dá)到95.94%;Wang等[12]應(yīng)用SSD(Single Shot MultiBox Detector)和YOLO兩種目標(biāo)檢測方法對白細(xì)胞進(jìn)行識別和檢測,平均精度為90.09%;YOLOv3和YOLOv4模型對細(xì)胞這類小目標(biāo)的檢測具有較好的精度,但是由于模型參數(shù)量和計算量較大,不適用應(yīng)用在嵌入式或移動式設(shè)備上。對此王靜等[13]提出一種基于YOLOv5的白細(xì)胞檢測算法,通過增加160×160的檢測層,使用四尺度特征檢測,添加坐標(biāo)注意力機(jī)制等方法使得平均精度均值較YOLOv5算法提升了3.8%。
以上研究所針對的小目標(biāo)都是生物學(xué)細(xì)胞,對于魚病病原細(xì)菌檢測的研究很少,本研究將深度學(xué)習(xí)引入到水產(chǎn)養(yǎng)殖領(lǐng)域中,對魚病病原細(xì)菌這類小目標(biāo)進(jìn)行檢測,實(shí)現(xiàn)魚病病原細(xì)菌數(shù)量的自動化統(tǒng)計,解決了人工計數(shù)魚病病原細(xì)菌時效率低、誤差大等問題。雖然YOLOv5在模型參數(shù)量和訓(xùn)練速度上優(yōu)于YOLO系列的其他網(wǎng)絡(luò),但是對于細(xì)菌這類小目標(biāo)的檢測效果并不是很理想,漏檢率和錯檢率較高。本研究提出了一種改進(jìn)YOLOv5的魚病病原細(xì)菌檢測算法YOLOv5_final,通過增大輸入魚病病原細(xì)菌圖像的尺寸、添加空間和通道注意力機(jī)制、添加檢測層與主干特征提取網(wǎng)絡(luò)進(jìn)行特征融合以及增加多尺度檢測等方法,提升對魚病病原細(xì)菌這種小目標(biāo)的檢測精度。由于魚蝦卵等小目標(biāo)的特征與魚病病原細(xì)菌十分相似,該方法可以擴(kuò)展應(yīng)用在魚蝦卵的檢測和計數(shù)上,根據(jù)計數(shù)結(jié)果合理投放飼料和供應(yīng)氧氣等[14]。
隨著不斷發(fā)展和改進(jìn),YOLO系列已經(jīng)更新到了YOLOv5,YOLOv5在準(zhǔn)確率和檢測速度上都得到了提升。而YOLOv5s在YOLOv5系列中深度最小、識別速度最快,但是相對而言,平均精度AP是最低的。因此選取YOLOv5s作為本研究的基礎(chǔ)模型[15-16],下文簡稱YOLOv5。
YOLOv5網(wǎng)絡(luò)主要由主干特征提取網(wǎng)絡(luò)(Backbone)、路徑聚合網(wǎng)絡(luò)(Neck)以及預(yù)測網(wǎng)絡(luò)(Prediction)組成。主干特征提取網(wǎng)絡(luò)主要包括輸入層(Input)、切片層(Focus)、卷積層(Conv)、瓶頸層(CSP)以及空間池化層(SPP)[17]。
路徑聚合網(wǎng)絡(luò)主要作用是特征融合,采用一系列上采樣和下采樣聯(lián)合的方式進(jìn)行特征融合,這種方式能對多尺度特征更好地融合[18]。將融合后的特征層傳入預(yù)測層,通過非極大值抑制的方式消除大量冗余的候選框,得到置信度較高的預(yù)測類別,并返回目標(biāo)的寬高信息和坐標(biāo)點(diǎn)信息[19-20]。
Anchors是提前在圖像中預(yù)設(shè)好的不同大小和寬高比的預(yù)選框。Anchors的設(shè)置一般都是通過人工計算。目前大部分目標(biāo)檢測算法都采用了先驗(yàn)框方法,如RetinaNet[21]、SSD[22]等。Anchors將不同尺度的目標(biāo)劃分為幾個方塊,該方法降低了訓(xùn)練難度和學(xué)習(xí)難度。因此,選取合適的Anchors尺度對模型的訓(xùn)練效果有一定的影響[23]。本研究網(wǎng)絡(luò)在Neck部分增加了152×152的特征圖分支,所以將聚類得到的Anchors數(shù)量由9組增加為12組,通過對訓(xùn)練集進(jìn)行K-means聚類的方法得到和特征圖更加匹配的先驗(yàn)框[24],從而提升模型的準(zhǔn)確率和召回率[25]。K-means聚類算法的主要思想是:首先在細(xì)菌數(shù)據(jù)集中隨機(jī)選擇K個聚類中心點(diǎn),計算這K個聚類中心點(diǎn)到其他樣本的距離并且按照距離大小劃分到不同的類中,最后以每個類的質(zhì)心作為新的聚類中心點(diǎn),重復(fù)上述過程直到聚類中心的位置保持不變。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)。
注意力機(jī)制能夠使網(wǎng)絡(luò)更加關(guān)注圖像中的目標(biāo)區(qū)域、抑制目標(biāo)之外的區(qū)域,從而能夠更好地提取出大量有價值的信息。目前常見的注意力機(jī)制有SE Net[26]、CBAM[27]以及Non-local block[28]。本研究選取CBAM模塊,該模塊是將空間和通道的注意力機(jī)制結(jié)合起來,對空間和通道兩個維度分別依次導(dǎo)出映射特征圖,然后將兩個特征圖分別基于空間和通道做concat操作,并與輸入特征做乘法操作得到最終的輸出特征[29]。
由原始YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)可以知道,在主干特征提取網(wǎng)絡(luò)Backbone中,有3層CSP結(jié)構(gòu)、4層Conv結(jié)構(gòu)和1層SPP結(jié)構(gòu),而只有最后2層CSP模塊的輸出在Neck結(jié)構(gòu)中被利用。如圖1紅色虛線所示,為了能更好地利用主干特征提取網(wǎng)絡(luò)提取的特征信息,借鑒Neck結(jié)構(gòu)中的上采樣,添加1層上采樣并和Backbone結(jié)構(gòu)中的第1層CSP輸出的特征圖進(jìn)行特征融合,并且作為1層輸出和原來的3層輸出構(gòu)成4個尺度的輸出層。為了進(jìn)一步細(xì)化主干特征提取網(wǎng)絡(luò)的特征,在Backbone中的每一個CSP模塊前面添加CBAM注意力機(jī)制,強(qiáng)化模型對重要特征通道的敏感性,提取更強(qiáng)有力的特征,對Conv提取的特征更好地利用,如圖1中紅框所示。
圖1 網(wǎng)絡(luò)結(jié)構(gòu)
由于K-means聚類的初始聚類中心點(diǎn)是通過隨機(jī)產(chǎn)生的,聚類中心的選擇會影響最終的聚類結(jié)果。針對這個問題,本研究采用K-means++聚類算法對細(xì)菌數(shù)據(jù)集的先驗(yàn)框進(jìn)行聚類。K-means++聚類算法能夠使初始聚類中心點(diǎn)之間保持一定距離,首先在細(xì)菌數(shù)據(jù)集中隨機(jī)確定第一個初始聚類中心點(diǎn),計算剩下所有樣本點(diǎn)距離該初始聚類中心點(diǎn)的距離記為D(x),根據(jù)公式(1)計算該初始聚類中心點(diǎn)能夠作為下一個聚類中心點(diǎn)的概率Px,通過輪盤法選出新的聚類中心點(diǎn),重復(fù)上述步驟直到選出了K個聚類中心點(diǎn)[30]。K-means++聚類算法計算出的結(jié)果能更好地減小誤差,從而得到更合適的先驗(yàn)框。
(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尺寸總體偏小并且差異較小,更加符合細(xì)菌的真實(shí)尺寸,從而能夠提升模型檢測的準(zhǔn)確率。
選用的操作系統(tǒng)為centos7,64位,所有試驗(yàn)基于Pytorch框架,顯卡型號為NVIDIA GeForce RTX 3090,CUDA版本為11.4。數(shù)據(jù)集為顯微鏡下的細(xì)菌圖像,初始細(xì)菌圖一共200張,通過旋轉(zhuǎn)、平移、翻轉(zhuǎn)、增加對比度等數(shù)據(jù)擴(kuò)增方式得到800張細(xì)菌數(shù)據(jù)集,共21 424個細(xì)菌目標(biāo),label保存為.txt格式。將數(shù)據(jù)集按照9∶1劃分為訓(xùn)練集和測試集。將最小批次設(shè)置為16,權(quán)重衰減設(shè)置為5×10-4,初始學(xué)習(xí)率設(shè)置為0.01,訓(xùn)練輪次設(shè)為600次。
選取共聚焦顯微鏡下的細(xì)菌圖作為試驗(yàn)數(shù)據(jù)集,細(xì)菌性魚病病原細(xì)菌主要表現(xiàn)為形狀短小,呈桿狀或者逗點(diǎn)狀。流程圖如圖2所示。當(dāng)輸入圖像大小超過1 080×1 920時,圖像中像素點(diǎn)小于37的目標(biāo)將無法學(xué)習(xí)特征信息。由圖2的輸入圖可以看出,顯微鏡下獲取的細(xì)菌圖分辨率過大,并且細(xì)菌在圖像中的位置偏小,因此對輸入細(xì)菌圖進(jìn)行處理。由于YOLOv5網(wǎng)絡(luò)將輸入圖像規(guī)定到了固定尺寸,所以首先擴(kuò)大原始細(xì)菌圖像的大小,然后進(jìn)行100份等份切分,切分后的圖像大小為416×416。這樣處理能夠使細(xì)菌的特征信息全部學(xué)習(xí),一定程度上提高了小目標(biāo)的檢測精度,也可以避免小目標(biāo)漏檢[31]。
圖2 預(yù)處理流程圖
對模型檢測效果的評價指標(biāo)有很多,選取精確率(Precision)、召回率(Recall)以及平均準(zhǔn)確率均值mAP(mean Average Precision)[32]來評定網(wǎng)絡(luò)訓(xùn)練好壞。精確率表示所有被預(yù)測為正的樣本中實(shí)際為正的樣本的概率;召回率表示在實(shí)際為正的樣本中被預(yù)測為正樣本的概率;平均精度均值是將所有類別的aP值進(jìn)行平均求得的,而aP值是PR曲線與橫坐標(biāo)所圍成的面積,交并比為0.95。
(2)
(3)
(4)
(5)
式中:TP表示細(xì)菌被正確識別為細(xì)菌;FP表示非細(xì)菌被錯誤識別為細(xì)菌;FN表示細(xì)菌被錯誤識別為非細(xì)菌;P表示所有被預(yù)測為細(xì)菌的目標(biāo)中實(shí)際為細(xì)菌的目標(biāo)的概率;R表示在實(shí)際為細(xì)菌的目標(biāo)中被預(yù)測為細(xì)菌的概率;map表示mAP,即平均準(zhǔn)確率均值。
首先利用原始的YOLOv5模型對細(xì)菌圖進(jìn)行訓(xùn)練和識別,識別效果圖如圖3所示。從圖3可以看到,在細(xì)菌圖的邊緣部分存在很多漏檢,如圖3中紅框所示,對細(xì)菌這類小目標(biāo)的檢測效果較差。
圖3 原始YOLOv5檢測效果
針對細(xì)菌漏檢問題,對原始YOLOv5的路徑聚合網(wǎng)絡(luò)進(jìn)行優(yōu)化,增加1層上采樣層,并且和主干特征提取網(wǎng)絡(luò)的第1層CSP模塊進(jìn)行特征融合,加強(qiáng)特征信息的提取,將該網(wǎng)絡(luò)記為YOLOv5_4layer。為了證明該操作對提高細(xì)菌檢測精度的有效性,將原始YOLOv5網(wǎng)絡(luò)和增加上采樣后的YOLOv5_4layer網(wǎng)絡(luò)進(jìn)行對比,從訓(xùn)練精度Train_Loss和平均精度mAP兩個方面來討論。從圖4訓(xùn)練損失對比圖可以看到,增加上采樣之后的網(wǎng)絡(luò)訓(xùn)練損失下降得更快,并且一直低于原始YOLOv5網(wǎng)絡(luò),說明添加上采樣之后的網(wǎng)絡(luò)輸出的預(yù)測值和真實(shí)值之間的差異最小。
圖4 YOLOv5和YOLOv5_4layer的訓(xùn)練損失
為了對比網(wǎng)絡(luò)模型的訓(xùn)練精度,本文對比兩種模型訓(xùn)練過程中平均精度mAP值的變化曲線如圖5所示。在訓(xùn)練到120個epoch之前,兩個模型的mAP值變化起伏情況旗鼓相當(dāng),在120個epoch之后,原始網(wǎng)絡(luò)的mAP值一直位于增加上采樣之后的網(wǎng)絡(luò)上方,說明訓(xùn)練精度比原始YOLOv5模型較差,因此對其進(jìn)行進(jìn)一步改進(jìn),提高平均檢測精度。
圖5 YOLOv5和YOLOv5_4layer的mAP值
為了能夠提高模型的平均檢測精度,在Backbone結(jié)構(gòu)中加入基于空間和通道的注意力機(jī)制模塊CBAM,將其嵌入至Backbone中的每個CSP模塊之前,使其能更好地對卷積模塊Conv提取的特征信息進(jìn)行細(xì)化,并將該網(wǎng)絡(luò)記為YOLOv5_final。從圖6可以看到,YOLOv5_final網(wǎng)絡(luò)在訓(xùn)練過程中收斂的最快,并且一直處于最低位置,對模型的影響最小。
圖6 不同網(wǎng)絡(luò)的訓(xùn)練損失
為了更好地驗(yàn)證改進(jìn)模型YOLOv5_final的有效性,對比mAP值的變化如圖7所示。
圖7 不同網(wǎng)絡(luò)的mAP值
從圖7可以看到,YOLOv5_final網(wǎng)絡(luò)模型最終所能達(dá)到的mAP值最高,具有更好地檢測精度。這是因?yàn)镃BAM模塊能夠更好地將卷積模塊提取到的特征進(jìn)行進(jìn)一步細(xì)化,使得改進(jìn)后算法的輸出值和真實(shí)值之間的差異最小,得到的預(yù)測精度達(dá)到最高。
為了對比3種網(wǎng)絡(luò)對細(xì)菌小目標(biāo)的檢測效果,隨機(jī)選取一張圖片進(jìn)行效果測試,結(jié)果如圖8所示。如圖8中的紅色框所示,增加上采樣層后的網(wǎng)絡(luò)YOLOv5_4layer在邊緣部分有較好的檢測效果,并且本研究優(yōu)化后的最終網(wǎng)絡(luò)YOLOv5_final能夠檢測出一些更小的細(xì)菌目標(biāo),識別準(zhǔn)確率較高,這證實(shí)了注意力機(jī)制CBAM的有效性,能夠?qū)μ崛〉降奶卣鬟M(jìn)行進(jìn)一步細(xì)分。為了進(jìn)一步量化分析3種網(wǎng)絡(luò)的檢測精度,將3種網(wǎng)絡(luò)的mAP值、準(zhǔn)確率和召回率[33]統(tǒng)計如表1所示。
圖8 細(xì)菌識別效果對比圖
從表1可以看到,增加檢測層之后的網(wǎng)絡(luò)比原始網(wǎng)絡(luò)的mAP提高了0.56%,精確率和召回率分別提升了2.4%和2.5%。添加注意力機(jī)制后,網(wǎng)絡(luò)的mAP值相比于沒有添加注意力機(jī)制的網(wǎng)絡(luò)提升了1.78%,精確率和召回率也有所提升。從訓(xùn)練精度和損失值來看,添加了檢測層之后的網(wǎng)絡(luò)訓(xùn)練損失收斂的最快,加入CBAM模塊之后,不管是模型收斂程度還是訓(xùn)練精度都有很明顯的提升,邊框回歸的更加準(zhǔn)確。驗(yàn)證了檢測層和注意力模塊的有效性。
表1 不同網(wǎng)絡(luò)的檢測結(jié)果對比
針對魚病病原細(xì)菌這種微小目標(biāo)檢測,Backbone中的每個CSP模塊都有提取到特征信息,因此借鑒Neck結(jié)構(gòu)的上采樣,添加一層上采樣,并與Backbone中的第1層CSP模塊提取到的特征信息進(jìn)行Concat融合,該方法能夠充分利用Backbone主干特征提取網(wǎng)絡(luò)提取到的信息。在CSP模塊前添加注意力機(jī)制CBAM,注意力機(jī)制能夠?qū)矸e模塊提取到的特征信息進(jìn)一步的細(xì)化,并且不會增加模型的參數(shù)量。從訓(xùn)練損失Train_Loss、平均精度mAP以及檢測效果3個方面來驗(yàn)證增加上采樣層和注意力機(jī)制CBAM的有效性。通過結(jié)果對比能夠得知,上采樣層和注意力機(jī)制都能夠有效地檢測細(xì)菌,準(zhǔn)確地回歸出預(yù)測框,在交并比為0.95的情況下,本研究改進(jìn)后的YOLOv5算法比原始YOLOv5算法在平均準(zhǔn)確率均值上提升2.34%,漏檢率和錯檢率也有所下降。說明本文算法對于魚病病原細(xì)菌這類小目標(biāo)的檢測具有很好的效果。
本研究將深度學(xué)習(xí)引入魚病病原細(xì)菌的檢測和識別上,并達(dá)到較好的檢測效果,對魚病病原細(xì)菌的數(shù)量統(tǒng)計和質(zhì)量濃度計算等實(shí)現(xiàn)自動化,解決了人工計數(shù)效率低、誤差大等問題。此外,該方法也可以運(yùn)用到漁業(yè)養(yǎng)殖領(lǐng)域,對魚蝦卵進(jìn)行檢測和識別,計算魚池中魚蝦的濃度,從而進(jìn)行匹配的飼料供應(yīng)和氧氣輸入,這對于漁業(yè)養(yǎng)殖戶預(yù)防細(xì)菌性魚病和魚類養(yǎng)殖等具有較大意義。
□