鄭宗生,李云飛,盧 鵬,鄒國良,王振華
(上海海洋大學(xué)信息學(xué)院,上海 201306)
魚類目標(biāo)檢測在漁業(yè)資源研究、魚類知識的科學(xué)推廣、水產(chǎn)養(yǎng)殖加工、稀有物種保護(hù)等領(lǐng)域具有廣泛的應(yīng)用前景[1-5]。魚類目標(biāo)檢測的任務(wù)是找出圖像中所有的魚類目標(biāo),確定其大小和位置并且進(jìn)一步識別其類別。目前魚類目標(biāo)檢測方法主要分為兩類,一類是傳統(tǒng)的魚類目標(biāo)檢測方法,另一類是基于深度學(xué)習(xí)的魚類目標(biāo)檢測方法。
傳統(tǒng)的魚類目標(biāo)檢測方法是人工提取魚類的形狀、大小、顏色、紋理等特征,然后把特征向量輸入到分類器中進(jìn)行分類。Strachan等[6]將魚的形狀作為特征來進(jìn)行分類。Larsen等[7]在魚類形狀特征的基礎(chǔ)上加入了紋理特征,使用線性判別分析的方法對鱈魚、黑線鱈魚、牙鱈魚進(jìn)行分類,準(zhǔn)確率為76%。Storbeck等[8]、White等[9]使用魚類不同位置的高度和寬度作為特征,將測量信息和魚類物種信息作為神經(jīng)網(wǎng)絡(luò)的輸入來進(jìn)行識別。傳統(tǒng)的魚類識別方法在形狀、紋理、顏色、高度、寬度等特征上進(jìn)行了嘗試,但是傳統(tǒng)方法使用的特征較少且很難對數(shù)據(jù)量大的數(shù)據(jù)集進(jìn)行特征提取,存在較大的局限性。
基于深度學(xué)習(xí)的魚類目標(biāo)檢測算法目前有Two-stage和One-stage兩類。Two-stage檢測是基于候選區(qū)域的目標(biāo)檢測算法,即檢測算法需要分兩步完成,首先生成候選區(qū)域,然后利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類,R-CNN[10]、Faster R-CNN[11]、Mask R-CNN[12]都是代表性的基于候選區(qū)域的目標(biāo)檢測算法。Qin等[13]使用主成分分析以及降維方法獲取圖像的特征,使用SVM(Support Vector Machine,支持向量機(jī))進(jìn)行分類,準(zhǔn)確率提高了0.07%。袁紅春等[14]把Faster R-CNN目標(biāo)檢測方法應(yīng)用到水下魚類種類識別中。One-stage檢測是基于回歸的目標(biāo)檢測算法,不需要尋找候選區(qū)域,使用預(yù)定義的候選框通過回歸直接產(chǎn)生物體的類別概率和位置坐標(biāo)。Xu等[15]將YOLO v3遷移到真實環(huán)境下3種不同的魚類數(shù)據(jù)集中,獲得平均0.539 2的識別準(zhǔn)確率;徐建華等[16]在YOLO v3的基礎(chǔ)上使用重組成與多級融合的方法進(jìn)行魚類特征提取,當(dāng)置信度設(shè)置為0.5時,mAP值達(dá)到了75.1%;王文成等[17]提出了一種改進(jìn)SSD的魚類目標(biāo)檢測算法,準(zhǔn)確率達(dá)到92%以上。相比傳統(tǒng)的魚類目標(biāo)檢測算法,基于深度學(xué)習(xí)的魚類目標(biāo)檢測算法有更高的精度和魯棒性,但在準(zhǔn)確度和速度上仍然有提升的空間。
本研究基于YOLO v4網(wǎng)絡(luò)模型,在CIOU損失函數(shù)的基礎(chǔ)上引入新的損失項,同時在9個錨點框的基礎(chǔ)上增加特定的錨點框,增強(qiáng)在特定尺寸面積上的檢測效果。研究結(jié)果表明,改進(jìn)YOLO v4模型在識別速度和準(zhǔn)確率上比原模型有較大提升,在自建數(shù)據(jù)集、Fish4Knowledge數(shù)據(jù)集和NCFM (The Nature Conservancy Fisheries Monitoring)數(shù)據(jù)集上的性能優(yōu)于ATSS等流行目標(biāo)檢測模型。
1.1.1 自建數(shù)據(jù)集
本研究建立的魚類數(shù)據(jù)集的圖像拍攝于2019年12月12日至14日實際魚類養(yǎng)殖環(huán)境下,圖像尺寸為1 920×1 080,共拍攝了20 h,采用視頻截幀的方式每10 s截取一張圖片,然后通過人工清洗,去除沒有完整魚體的圖片后共計獲得了3 595張有效圖片,拍攝的圖片如圖1所示。
圖1 自建魚類數(shù)據(jù)集示例圖片
1.1.2 Fish4Knowledge數(shù)據(jù)集
Fish4Knowledge數(shù)據(jù)集[18]是從水下實況視頻中截取的魚類畫面,是公開的數(shù)據(jù)集。該數(shù)據(jù)集包含23種魚類共計27 370張圖像,如網(wǎng)紋圓雀鯛(Dascyllusreticulatus)12 112張,克氏雙鋸魚(Amphiprionclarkii)4 049張,迪克氏固曲齒鯛(Plectroglyphidodondickii)3 683張,長棘光鰓魚(Chromischrysura)3 595張以及其他19種數(shù)據(jù)量小于1 000張的魚類。Fish4Knowledge數(shù)據(jù)集圖像如圖2所示。
圖2 Fish4Knowledge數(shù)據(jù)集示例圖片
1.1.3 NCFM數(shù)據(jù)集
NCFM數(shù)據(jù)集[19]來源于Kaggle數(shù)據(jù)競賽平臺,是公開的數(shù)據(jù)集,數(shù)據(jù)集圖像由漁業(yè)監(jiān)管組織安裝在漁船上的攝像頭拍攝,主要用來檢測非法捕撈情況。該數(shù)據(jù)集共有3 777幅魚類圖像,分為8種類別,分別為鲯鰍魚(DOL)、長鰭金槍魚(ALB)、黃鰭金槍魚(YFT)、大眼金槍魚(BET)、月魚(LAG)、鯊魚(SHARK)、其他魚類(OTHER)、無魚類(NoF),其他魚類和無魚類圖像的存在可以更好地提升訓(xùn)練模型的泛化性。
本研究使用LabelImg工具對數(shù)據(jù)集進(jìn)行標(biāo)注,LabelImg是一款常見的深度學(xué)習(xí)圖像標(biāo)注軟件。將每張圖片上的所有魚類用最小的矩形框標(biāo)定,使用魚類的英文名作為魚的類別,標(biāo)注樣例如圖3所示。
圖3 自建魚類數(shù)據(jù)集標(biāo)注示意圖
標(biāo)注后圖像中魚類的類別和所在位置的坐標(biāo)信息被保存到.xml文件中。標(biāo)注完成后,編寫腳本提取.xml文件中的類別以及位置信息作為模型的輸入,將每個數(shù)據(jù)集以3∶1∶1的比例劃分為訓(xùn)練集、測試集、驗證集。
CIoU定位損失[20]公式為:
(1)
(2)
(3)
式中:LCIoU代表CIoU損失函數(shù)值,LIoU代表真實框與預(yù)測框的交并比,d代表真實框中心點與預(yù)測框中心點的歐氏距離,c代表真實框與預(yù)測框最小閉包區(qū)域的對角線長度,v是衡量真實框與預(yù)測框?qū)捀弑纫恢滦缘膮?shù),wgt、hgt、w、h分別代表真實框的寬度、真實框的高度、預(yù)測框的寬度、預(yù)測框的高度,α是長寬比一致的權(quán)衡函數(shù)。上式的圖解如圖4所示。
圖4 CIoU預(yù)測框回歸模型
本研究在CIoU損失的基礎(chǔ)上構(gòu)建新的損失項,使得在回歸過程中預(yù)測框和真實框的相交部分按照與真實框的長寬比相同的方式進(jìn)行回歸,如圖5所示。
圖5 改進(jìn)CIoU預(yù)測框回歸框模型
圖5中A代表真實框,B代表預(yù)測框,C代表預(yù)測框和真實框的相交部分。本算法是使C的寬高比與A的寬高比保持一致,在回歸過程中保持A和C呈相似矩形,即A∽C。
(4)
(5)
(6)
式中:Lours代表改進(jìn)的CIoU損失函數(shù)值,LIoU代表真實框與預(yù)測框的交并比,d代表真實框中心點與預(yù)測框中心點的歐氏距離,c代表真實框與預(yù)測框最小閉包區(qū)域的對角線長度,v是衡量真實框與預(yù)測框?qū)捀弑纫恢滦缘膮?shù),v1代表衡量真實框與相交框?qū)捀弑纫恢滦缘膮?shù),wgt、hgt、w、h分別代表真實框的寬度,真實框的高度,預(yù)測框的寬度,預(yù)測框的高度,α與α1是長寬比一致的權(quán)衡函數(shù)。
當(dāng)真實框與預(yù)測框不相交,即相交框不存在時,添加的損失項不起作用,即
(7)
當(dāng)真實框與預(yù)測框不相交時,預(yù)測框受到其他的損失項的影響會逐漸靠近真實框,當(dāng)開始相交時添加的損失項開始起作用,如圖6a所示,會使預(yù)測框在靠近真實框的過程中在x軸和y軸的增量比例上保持與真實框的寬高比例相近,使預(yù)測框的寬高與真實框的寬高保持相同比例增長,加快模型收斂速度。
當(dāng)預(yù)測框與真實框相交但相交框與真實框的寬高比不同時,如圖6b所示,預(yù)測框受到添加的損失項的影響會先使相交框的寬高比與真實框的寬高比一致,此時在x軸上預(yù)測框逐漸靠近真實框,在y軸上預(yù)測框遠(yuǎn)離真實框,直至達(dá)到真實框與相交框的長寬比相同時這一過程結(jié)束,然后預(yù)測框會如圖6a的方式進(jìn)行回歸。
圖6 改進(jìn)損失函數(shù)的預(yù)測過程
YOLO v4的損失函數(shù)包括定位損失,分類損失以及置信度損失,損失函數(shù)的公式如下。
L=Lcls+Lobj+Lcon
(8)
式中:Lcls代表分類損失,Lobj代表定位損失,在本研究中使用的是前文中的改進(jìn)CIoU損失,Lcon代表置信度損失。
在YOLO v4模型中存在自適應(yīng)錨框,可以在訓(xùn)練前使用K-means算法對訓(xùn)練集的所有真實框的寬高進(jìn)行聚類,找出聚類最集中的9組寬高作為訓(xùn)練初始的錨框的寬高。但本研究中的3個數(shù)據(jù)集中魚類目標(biāo)的真實框?qū)捀弑容^集中,為了加強(qiáng)對特定尺寸面積目標(biāo)的檢測,本研究添加了一組寬高,使用10組寬高作為初始錨框,并且在聚類時先將所有真實框聚類為3類,將這3類中數(shù)量最多的一類再進(jìn)行聚類為4類,另外兩類數(shù)量較少的聚類為3類。
YOLO v4模型[21]作為YOLO系列[22-24]算法的延續(xù),相比于YOLO v3大幅提高了準(zhǔn)確率和檢測速度。YOLO v4模型使用CSPDarknet53作為模型的主干網(wǎng)絡(luò),作用是進(jìn)行特征提取,CSPDarknet53網(wǎng)絡(luò)是在YOLO v3模型的Darknet網(wǎng)絡(luò)中融入了CSPNet(Cross Stage Partial Network,CSPNet)模塊[25],并且使用了Mish激活函數(shù)[26];頸部網(wǎng)絡(luò)主要使用了SPP(Spatial Pyramid Pooling,SPP)模塊[27]以及PANNet[28](Perceptual Adversarial Network,PANNet)中的特征金字塔增強(qiáng)模塊(Feature Pyramid Enhancement Module,F(xiàn)PEM),用于增強(qiáng)骨干網(wǎng)絡(luò)中的特征;頭部網(wǎng)絡(luò)使用YOLO v3的頭部,作用是計算損失函數(shù)以及進(jìn)行歸一化處理。
本研究使用的數(shù)據(jù)集制作、模型的訓(xùn)練與測試均在同一服務(wù)器上進(jìn)行,具體試驗環(huán)境如表1所示。
表1 試驗環(huán)境
本研究使用改進(jìn)YOLO v4模型與原YOLO v4模型來對算法改進(jìn)進(jìn)行驗證,為了證明算法的泛化性能,在自建數(shù)據(jù)集及Fish4Knowledge數(shù)據(jù)集和NCFM數(shù)據(jù)集兩個公共數(shù)據(jù)集上分別進(jìn)行了對比試驗。
訓(xùn)練前調(diào)整模型的配置文件來適應(yīng)本次試驗的訓(xùn)練。根據(jù)服務(wù)器的GPU內(nèi)存,調(diào)整每次迭代所訓(xùn)練圖片的數(shù)量參數(shù)Batch為64,將每個Batch數(shù)量細(xì)分為批次的參數(shù)subdivisions調(diào)整為64。訓(xùn)練效果很大程度上受學(xué)習(xí)率的影響,如果學(xué)習(xí)率過高會導(dǎo)致訓(xùn)練難以收斂甚至過擬合;學(xué)習(xí)率設(shè)置過低,會導(dǎo)致模型長時間無法收斂,通過多次試驗對比,發(fā)現(xiàn)將初始學(xué)習(xí)率設(shè)置為0.001效果較好。
由于在本研究自建數(shù)據(jù)集上只有1個類別,所以調(diào)整類別數(shù)目class為1,修改輸出特征圖的數(shù)量filter的值為18,由于自建數(shù)據(jù)集的數(shù)據(jù)量為3 595,訓(xùn)練總輪數(shù)設(shè)為3 000。
由于在Fish4Knowledge數(shù)據(jù)集上有23種魚類,所以調(diào)整類別數(shù)目class為23,修改輸出特征圖的數(shù)量filter的值為30,訓(xùn)練總輪數(shù)設(shè)為10 000。
由于NCFM數(shù)據(jù)集上有8個類別,所以調(diào)整類別數(shù)目class為8,修改輸出特征圖的數(shù)量filter的值為39,訓(xùn)練總輪數(shù)設(shè)為8 000。
本研究采用mAP作為檢測結(jié)果的評價指標(biāo),mAP是各類AP(Average Precision)的平均值,AP是P-R曲線下的面積,其中P代表準(zhǔn)確率(Precision),R代表召回率(Recall),AP及mAP的公式為:
(9)
(10)
式中:VAP代表AP值,VmAP代表mAP值,P代表準(zhǔn)確率,r代表召回率,k為所有的類別數(shù)量。
使用改進(jìn)YOLO v4模型識別到的魚類圖像如圖7所示。
圖7 預(yù)測結(jié)果示例圖
可以看出改進(jìn)YOLO v4模型在此魚類數(shù)據(jù)集上可以達(dá)到很好的識別效果,識別的位置大小與標(biāo)注的位置和大小基本吻合。
在自建數(shù)據(jù)集、Fish4Knowledge數(shù)據(jù)集和NCFM數(shù)據(jù)集上每1 000輪訓(xùn)練所需時間與檢測時間不同,但本研究算法均比原YOLO v4模型訓(xùn)練時間有所減少,在訓(xùn)練時間上如下圖8所示,在自建數(shù)據(jù)集上每1 000輪減少了7 min的訓(xùn)練時間,在Fish4Knowledge數(shù)據(jù)集上每1 000輪減少了7 min 48 s的訓(xùn)練時間,在NCFM數(shù)據(jù)集上每1 000輪減少了7 min 24 s的訓(xùn)練時間;在檢測時間上如下圖9所示,在自建數(shù)據(jù)集上FPS(Frames Pre Second)提升了4,在Fish4Knowledge數(shù)據(jù)集上FPS提升了8,在NCFM數(shù)據(jù)集上FPS提升了3,完全達(dá)到實時檢測的要求。
圖8 訓(xùn)練時間對比圖
圖9 檢測時間對比圖(FPS)
本研究改進(jìn)YOLO v4模型與原YOLO v4模型在自建數(shù)據(jù)集上的損失函數(shù)值對比如下圖10所示,從圖中可以看出本研究改進(jìn)CIoU損失的YOLO v4模型在400-500輪之間損失值平緩,不再有明顯下降趨勢規(guī)劃;而原YOLO v4模型的損失函數(shù)在1 200-1 300輪損失值平緩,由此可得出改進(jìn)CIoU損失起到了更快收斂模型的效果。
圖10 自建數(shù)據(jù)集上損失函數(shù)值對比圖
為了評估模型性能,本研究與現(xiàn)階段流行的ATSS模型[29]以及RetinaNet模型[30]在自建數(shù)據(jù)集、Fish4Knowledge數(shù)據(jù)集、NCFM數(shù)據(jù)集的mAP比較,結(jié)果如下表所示。
表2 自建數(shù)據(jù)集、Fish4Knowledge數(shù)據(jù)集和NCFM數(shù)據(jù)集上準(zhǔn)確率對比
改進(jìn)YOLO v4模型比原YOLO v4模型的準(zhǔn)確率在分別提高了1.35%、0.34%、1.01%,在Fish4Knowledge數(shù)據(jù)集上提升最少是因為Fish4Knowledge數(shù)據(jù)集圖片尺寸較小,魚類目標(biāo)在整張圖片上占比較大且每張圖片上只有一個魚類目標(biāo),目標(biāo)檢測算法能在Fish4Knowledge數(shù)據(jù)集上得到較好的效果,提升空間不大。在自建數(shù)據(jù)集上提升大是因為自建數(shù)據(jù)集每張圖像上的魚類數(shù)量較多且大小差距大,預(yù)測框按照特定方式回歸能取到更好的效果。
在Fish4Knowledge數(shù)據(jù)集與NCFM數(shù)據(jù)集中有多種類別的魚,在每種類別上都得到了很好的檢測結(jié)果,證明了本模型在不同魚類圖像上的泛化性能。
在Fish4Knowledge數(shù)據(jù)集上,網(wǎng)紋圓雀鯛的AP值為99.66%,克氏雙鋸魚的AP值為99.54%,迪克氏固曲齒鯛的AP值為99.71%,長棘光鰓魚的AP值為99.57%。這幾種圖像數(shù)量最多的魚類AP值均高于整個數(shù)據(jù)集的mAP,這是由于在含有多種類別的數(shù)據(jù)集中圖片數(shù)量越多,模型能夠獲得的信息越多,檢測的效果越好。
在NCFM數(shù)據(jù)集上,鲯鰍魚、長鰭金槍魚、黃鰭金槍魚、大眼金槍魚、月魚和鯊魚的AP值遠(yuǎn)大于其他魚類的AP值,這是由于模型在訓(xùn)練時是通過標(biāo)注框內(nèi)的顏色、紋理等特征進(jìn)行學(xué)習(xí),找到共同點。而其他魚類中包含多種魚類,里面的特征復(fù)雜,難以學(xué)習(xí)到共同點,所以檢測效果較差。
本研究算法對模糊圖像的的識別結(jié)果較差,如圖11所示。
圖11 試驗中存在的問題
左邊為標(biāo)注的圖像,右邊為檢測結(jié)果,在左下角的一條魚由于圖像模糊未能被檢測到。后續(xù)擬對模型進(jìn)行改進(jìn),加入圖像增強(qiáng)與去噪模塊。其次本研究使用的自建數(shù)據(jù)集拍攝過程中圖像質(zhì)量受光源與水的渾濁程度影響較大,后續(xù)將對拍攝環(huán)境以及拍攝工具進(jìn)行調(diào)整和改良。
本研究在YOLO v4模型基礎(chǔ)上改進(jìn)CIoU損失并增加1個錨點框,在3個魚類目標(biāo)數(shù)據(jù)集上對YOLO v4算法與本模型做了對比試驗,使用mAP作為評價標(biāo)準(zhǔn)。結(jié)果顯示,本研究算法在準(zhǔn)確率上比原YOLO v4算法有較大提升,能夠更好地滿足實際漁業(yè)應(yīng)用中對魚類目標(biāo)檢測的要求。本研究可以為在養(yǎng)殖環(huán)境下防止肉食魚類的入侵、實時檢測漁船非法捕撈等方面提供技術(shù)支持。
□