呂俊霖,陳作志,李碧龍,蔡潤基,高月芳
1. 中國水產科學研究院南海水產研究所,廣東 廣州 510300
2. 華南農業(yè)大學,廣東 廣州 510642
魚類自動識別是漁業(yè)智能化的重要一環(huán),在海洋生態(tài)學[1]、行為分析[2]、水產養(yǎng)殖管理[3]、健康監(jiān)測[4]等領域應用廣泛。魚類由于種類多,體型大小不一,姿態(tài)多樣,不同品種魚類的外形、色彩、紋理及尺寸等相似,且數(shù)據采集中存在姿態(tài)、視角、光照、遮擋、背景干擾等因素,導致出現(xiàn)同種魚類樣本間差異大、不同種類之間相似性高等問題,識別難度大。而人工鑒別又耗時耗力,且高度依賴專家的經驗和技能。準確識別魚類,對于物種多樣性保護和漁業(yè)可持續(xù)管理至關重要。傳統(tǒng)的魚類自動識別研究采用人工設計的特征對魚類表觀進行特征表達,這類特征針對性強,可靠性高,特定場景效果好;但特征表達能力有限,較難捕獲高級語義特征和復雜內容,導致其泛化能力和魯棒性差,難以應用于實際中的復雜環(huán)境。
隨著深度學習技術在人臉、指紋等目標識別任務中的成功應用[5-6],近年來,卷積神經網絡(Convolutional Neural Network, CNN) 在水產物種自動識別中應用越來越廣泛,并取得了較好的識別效果[7-11]。Zhuang 等[7]設計了一種多模態(tài)網絡模型,利用成對文本描述來區(qū)分高度相似的魚類;李均鵬等[12]提出了一種基于遷移學習的海洋魚類識別方法,該方法通過遷移學習和模型融合的有效結合提升模型的魯棒性和泛化性。針對魚類不同的局部特征可刻畫其類別,姚潤璐等[13]對魚類圖像進行分割,獲取魚背、魚尾等部位,提取其形態(tài)和紋理等精細特征,并結合反向傳播神經網絡進行識別;Christensen 等[14]開發(fā)了一種Lightfish 網絡模型,用于水下惡劣條件下的魚類識別和分類。此外,針對復雜水下環(huán)境采集的數(shù)據分辨率低的情況,Pramunendar 等[15]提出了一種基于反向傳播神經網絡的圖像增強模型,通過選擇合適的插值方法和網絡配置提升圖像的分辨率,進而提高魚類識別的精度。
在自然界中,魚類物種遵循長尾分布,即少部分魚類占大數(shù)據樣本,而多數(shù)魚類卻僅有少量樣本,導致收集的數(shù)據集中類別分布不均衡。由于頭部類別的樣本量遠大于尾部,易導致模型在頭部類別 (多樣本類別) 過擬合、尾部類別 (少樣本類別)欠擬合,進而影響總體的識別性能。為緩解長尾分布帶來的識別性能下降,目前的主要解決策略是重采樣[16]和重加權[17-19]。Zhou 等[20]提出了一個統(tǒng)一的雙邊分支網絡 (BBN),同時進行表征學習和分類學習,在此基礎上設計了一種累積學習策略,使網絡首先學習通用模式,然后逐漸加權尾部數(shù)據,提升識別性能。Wang 等[21]研發(fā)了一種基于學習平衡和魯棒特征的長尾識別框架,通過構建注意特征增強模塊,挖掘原始樣本的類相關和變異相關特征,并對其進行聚合合成,以緩解原始數(shù)據集的類別不平衡。Pang 等[22]構建了一個分層塊聚合網絡,以促進不同的即插即用策略的相互學習,同時設計了一個數(shù)量感知平衡損失和解耦訓練策略對其優(yōu)化,增強網絡的特征提取能力,進而提升長尾目標的識別性能。不過,上述方法多是通過犧牲頭部識別性能以換取尾部識別性能的提升,總體性能雖得以提升,但由于缺少與重要特征結合進行識別,尾部類別識別的過擬合問題仍有待解決。
針對上述問題,本研究提出了一種基于多階段特征提取的深度網絡 (Multi-stage Feature Extraction Network, MF-Net) 模型進行魚類識別,該模型首先使用預處理模塊對圖片進行預處理,然后構建多階段特征提取模塊,以學習到具有魯棒細粒度表達能力和判別性能的高級特征,在此基礎上,使用一個標簽平滑損失函數(shù)以緩解魚類類別不平衡問題。為驗證該模型的有效性,構建了一個包含500 個類別的魚類數(shù)據集進行實驗對比和消融分析,并利用公開的蝴蝶數(shù)據集進行實驗對比分析。
通過漁業(yè)調查項目、網絡爬蟲技術等收集開放環(huán)境下 (如不同地域、季節(jié)、天氣等) 各種姿態(tài)的魚類圖片數(shù)據,對其進行清洗、檢測、專家鑒定等處理后構建魚類數(shù)據集。該數(shù)據集包含500 種淡水和海洋魚類,共32 768 張圖片。其中,每類樣本量多于200 張圖片的魚類有4 種,低于15 張圖片的有10 種,數(shù)據集存在類別分布不均衡。如圖1 所示,該數(shù)據集的特點如下:
圖1 原始魚類數(shù)據集特點Fig. 1 Characteristics of raw fish data
1) 魚目標與背景相似:復雜多變的開放環(huán)境使得部分魚類擁有環(huán)境保護色;此外,部分魚類存在紋理與背景高度重疊及嚴重遮擋等情況。
2) 光線變化大:因水下環(huán)境光照條件差、亮度分布不均及光散射等原因,導致魚類圖片的顏色和紋理等存在失真情況。
3) 姿態(tài)各異:因拍攝角度不同,獲取的魚類圖像有多種不同的視角,導致同一類別魚類存在較大的表觀差異。
4) 圖像存在多目標:魚類群體活動導致采集的魚類數(shù)據存在多個目標。這些數(shù)據特性會降低識別精度,給魚類自動識別帶來極大挑戰(zhàn)。此外,不同種類的魚在形狀、紋理、顏色等多種外觀存在較高的相似性 (圖2),進一步增加了識別難度。
圖2 類間相似和類內差異Fig. 2 Subtle differences between species and dramatic changes among same species
MF-Net 識別模型主要包括預處理模塊、多階段特征提取模塊和標簽平滑損失函數(shù)3 個部分(圖3)。預處理模塊對輸入的魚類圖像通過卷積層和層歸一化處理,將其映射到高維空間,以便后續(xù)模型獲取圖像豐富的判別特征;多階段特征提取模塊由多個MF-Net block 和下采樣層構成,每一個特征提取塊由影子卷積模塊Ghost Module[23]、批量歸一化、深度卷積、壓縮和激勵 (Squeeze and excitation, SE) 注意力機制、GELU (Gaussian error linear units)激活函數(shù)和路徑丟失Droppath 構成。該模塊通過對特征圖的內在規(guī)律進行學習,進而從預處理后的特征圖中學習到具有判別性的局部和全局特征。在訓練過程中采用標簽平滑損失函數(shù)對模型參數(shù)進行修正學習,以緩解數(shù)據類別的不平衡,提升模型的識別性能。
圖3 MF-Net 模型結構Fig. 3 Structure of MF-Net
1.2.1 預處理模塊
預處理模塊采用卷積核大小為4×4、輸出通道為96、步長為4 的卷積層和層歸一化的組合,將輸入的圖像數(shù)據映射至高維空間(圖4)。在高維空間中,深度學習模型可以關注圖像數(shù)據中的重要特征信息,并可捕捉特征之間復雜的非線性關系。
圖4 預處理模塊Fig. 4 Pre-processing module
1.2.2 MF-Netblock 模塊
如圖5 所示,在第一層殘差結構中,輸入的特征圖首先經過影子卷積模塊 Ghost Module,將提取的特征圖傳入到卷積核大小為 3×3、步長為1、填充為1 的深度卷積結構中,并對其批量歸一化。在此基礎上,通過SE 注意力機制對通道特征進行加權,后將特征圖輸入第二個Ghost Module,使用路徑丟失Droppath 以一個固定的概率對該路徑進行隨機失活,以提升模型的泛化能力,然后與捷徑分支的輸出相加,并將結果傳入第二個殘差結構。當輸入與輸出特征圖的尺寸不匹配時,可通過深度可分離卷積對輸入的特征圖進行維度調整。
圖5 MF-Net block 結構Fig. 5 Structure of MF-Net block
第二層殘差結構由2 個Ghost Module 及GELU激活函數(shù)組成,輸入特征圖在經過第一個Ghost Module 后,其輸出特征圖經過高斯誤差線性單元激活函數(shù)的激活后,傳入第二個Ghost Module,并使用Droppath 對該路徑按一定的概率進行丟棄,然后與捷徑分支的輸出相加,并將該結果作為輸出。在這一個殘差結構中,輸入、輸出特征圖的維度相等,捷徑分支上的輸出即為第一層殘差結構的輸出。
第一層殘差結構主要對魚類的一些淺層特征進行提取,并通過SE 注意力機制對特征圖加權,使得MF-Net 模型更加關注圖片中目標的關鍵特征。第二層殘差結構主要是將第一層殘差結構提取的淺層特征圖映射到更高的維度,進一步提取到魚類更加豐富的特征。
此外,MF-Net 模型中,在各個階段之間添加1 個獨立的下采樣層。下采樣層由池化核為 2×2、池化步長為2 的最大池化層構成,這樣可在降低特征圖的空間維度、減少網絡中的參數(shù)數(shù)量及提高模型計算效率的同時保留特征圖中的重要信息。此外,該下采樣設計還可為網絡引入了一定程度的平移不變性。
1.2.3 標簽平滑損失函數(shù)
參考Szeged 等[24]的方法,本研究在訓練過程中使用標簽平滑損失函數(shù)對模型參數(shù)進行調整,以緩解數(shù)據分布不平衡帶來的影響,其公式為:
式中:H(p,q) 和H(u,q) 均表示交叉熵損失函數(shù),用于度量兩個概率分布之間的差異性;n表示類別個數(shù);p(xi) 表示樣本xi的真實分布,p'(xi) 表示樣本平滑后的分布;q(xi) 表示模型所預測的概率分布;u為人為引入的均勻分布;?表示標簽平滑的系數(shù),為超參數(shù),?∈(0,1)。
基于上述損失函數(shù)對模型進行訓練。具體步驟如下:
1) 模型初始化:使用凱明均勻分布算法初始化除網絡層外的所有卷積層的權值系數(shù),使其均值為 0;使用正態(tài)分布算法初始化全連接層的權值系數(shù),使其符合均值為0、方差為1 的正態(tài)分布。
2) 模型訓練:將訓練集傳入MF-Net 中進行特征學習,并將經 Softmax 函數(shù)計算后得到的預測標簽與真實標簽使用標簽平滑 (Label smoothing)損失函數(shù)計算網絡模型的損失值。使用反向傳播算法對MF-Net 的權值系數(shù)進行更新,使損失函數(shù)值不斷地向全局最小進行逼近。
3) 模型測試:訓練后的 MF-Net 在測試集進行測試,并輸出在測試集的識別準確率。
4) 模型保存:將較優(yōu)的模型權值系數(shù)保存到本地后,進行下一次的模型訓練。
為驗證模型性能,以MF-Net 在測試集的第一準確率Acc-1 和前五準確率Acc-5 作為本網絡模型的評價標準。Acc-1 指模型輸出的概率最大的預測標簽與真實標簽相符的準確率;Acc-5 指模型輸出概率前五的預測標簽中包含真實標簽的準確率。計算公式為:
式中:A為準確率;TP 為真實的正樣本數(shù)量;TN 為真實的負樣本數(shù)量;FP 為虛假的正樣本數(shù)量;FN 為虛假的負樣本數(shù)量。
為了進一步比較模型之間的性能,引入精確率、召回率、F1-score 這3 個評價指標。
精確率 (Precision,P) 的公式為:
式中:TPk表示第k個類別的真實正樣本數(shù)量;FPk表示第k個類別的虛假正樣本數(shù)量;n表示類別個數(shù);通過計算出每個類別的精確率,再對其取平均值獲得多分類的精確率。
召回率 (Recall,R) 的公式為:
其中,F(xiàn)Nk表示第k個類別的虛假負樣本數(shù)量;先計算出每個類別的召回率,再對其取平均獲得多分類的召回率。
F1-score 的公式為:
通過公式(3) — (7) 計算最終的F1-score,F(xiàn)1-score 是精確率和召回率的調和平均數(shù)。
為比較各模型的性能,進一步引入模型的浮點運算次數(shù) (FLOPs)、參數(shù)量 (Params) 和延遲(Latency)。浮點運算次數(shù)是網絡模型復雜度的衡量指標,也是網絡模型速度的衡量標準。參數(shù)量為在模型進行訓練時所需訓練的參數(shù)總數(shù)。網絡模型預測一張圖片所需的時間,即為延遲。
本實驗的環(huán)境為:64 位的Ubuntu 18.04 操作系統(tǒng),圖形處理器(Graphics Processing Unit,GPU)型號為NVIDIA GeForce GTX 1080 Ti,中央處理器 (Central Processing Unit, CPU)的型號為Intel(R) Core i7-6700 CPU @3.40 GHz,集成開發(fā)環(huán)境為 PyCharm2021.3.2 + anaconda3.0,采用Pytorch 1.12.1 作為深度學習框架構建與部署網絡模型,并使用CUDA 版本并行并行計算框架。
模型迭代次數(shù)設置為180,批處理量為32。相對平滑損失函數(shù)中的平滑參數(shù)設置為0.1。訓練時優(yōu)化器選擇AdamW 優(yōu)化器,優(yōu)化器的學習率變化中的最大參數(shù)設置為0.004,權重衰減系數(shù)的參數(shù)設置為0.05,一階矩動量的指數(shù)衰減速率設置為0.9,二階矩動量的指數(shù)衰減速率設置為0.999。其余的參數(shù)均為默認值。
此外,在網絡模型訓練時,學習率的動態(tài)變化分為兩個階段。第一階段使用Warm-up 策略[25]調整學習率的變化,初始學習率為0,最大學習率為0.004,Warm-up 策略的epoch 數(shù)為12;第二階段使用余弦退火算法對學習率進行調整,初始學習率為0.004,最小學習率為0.000 001,余弦退火算法[26]的最大epoch 數(shù)為168。
為驗證該MF-Net 模型的識別性能,基于構建的魚類數(shù)據集,將其與主流的通用目標識別方法ResNet-50[5]、GhostNet[23]和ConvNext[27]進行實驗對比分析?;€為ResNet-50,其損失函數(shù)為交叉熵損失函數(shù),ResNet-50 (標簽平滑)表示模型采用的損失函數(shù)為標簽平滑損失函數(shù),所有模型均采用在ImageNet 的預訓練參數(shù),并使用默認參數(shù)與設置,結果見表1。
表1 主流識別模型性能對比Table 1 Comparison of different generic recognition methods
從表1 可以看出,MF-Net 模型的識別效果最好 (86.80%),其Acc-1 準確率比ResNet-50、Ghost-Net、ConvNext 和ResNet-50 (標簽平滑) 分別高出4.2%、3.49%、2.53%和1.7%。主要原因在于MFNet 的多階段特征提取可以獲得更好的特征表達。另外,在浮點運算、參數(shù)量、精度、召回率及F1-score 等方面,該模型均優(yōu)于ResNet-50 和ConvNext 模型,進一步表明MF-Net 模型的有效性。
為驗證MF-Net 模型的細粒度特征提取和識別能力,在公開的長尾蝴蝶數(shù)據集[28]中進行實驗對比,其中58 066 張圖像為訓練集,14 086 張圖像為測試集?;谠摂?shù)據集,將所提出的MF-Net 模型與雙通路瀑布式 (Dual Route Cassaded, DRC) 模型、BBN 長尾模型和主流通用目標識別模型進行性能對比,參照公開數(shù)據集的設定,頭部類別定義為含有大于等于100 張圖片樣本,尾部類別定義為含有小于等于30 張圖片樣本,并統(tǒng)計頭部類別和尾部類別的平均精度,實驗結果見表2??梢钥闯觯珼RC 和BBN 由于出現(xiàn)得較早,總體識別精度比常規(guī)模型低,但頭部和尾部類別的識別性能較常規(guī)模型有所提升。MF-Net 模型在Acc-1 和頭尾部類別的準確率上均為最優(yōu),表明MF-Net 模型不僅可提升長尾數(shù)據整體識別性能,同時也可提升頭部和尾部的識別性能。
表2 蝴蝶數(shù)據集下不同長尾模型識別性能Table 2 Comparison of accuracy with different long-tailed methods on butterfly dataset
為驗證該MF-Net 模型對長尾數(shù)據的識別能力,選擇有代表性的長尾識別模型BBN 和DRC[17]在魚類數(shù)據集上進行識別實驗,結果見表3。在識別精度方面,MF-Net 模型的性能最優(yōu),Acc-1 準確率為86.8%,較BBN 和DRC 模型分別高出2.43%和3.21%。主要原因是BBN 和DRC 模型對長尾數(shù)據中頭部類數(shù)據的識別性能較弱,進而對整個數(shù)據集的識別準確率產生影響,而MF-Net 模型由于多階段提取局部和全局特征,可以在保證頭部數(shù)據性能的同時,進一步提升尾部數(shù)據的識別性能,從而提升了整體性能。
表3 魚類數(shù)據集下不同長尾識別模型對比Table 3 Comparison of different long-tailed methods on fish dataset
為進一步驗證本研究MF-Net 模型中各模塊的有效性,基于魚類數(shù)據集,設置了以下5 個消融實驗進行對比分析。
不同的預處理模塊對模型性能影響有差異。對MF-Net 模型,使用不同預處理模塊進行消融實驗:第一組通過卷積層、批量歸一化、ReLU 激活函數(shù)及最大池化的組合完成對圖像數(shù)據預處理操作;第二組對圖像數(shù)據中采用的卷積層、批量歸一化、ReLU 激活函數(shù)的組合完成預處理操作;第三組使用卷積層、層歸一化的組合對圖像數(shù)據進行預處理操作。魚類識別結果如圖6 所示??梢钥闯觯矸e層和層歸一化的組合可更有效提升模型的性能。
圖6 MF-Net 模型不同預處理方式的識別結果Fig. 6 Recognition results based on different pro-processing strategies in proposed MF-Net
block 結構是網絡模型的重要組成部件,在此設計不同的block 結構以驗證所提結構的有效性。其中,Gbneck 為GhostNet 模型的block 結構,ResNet-Bottleneck 為ResNet 模型的模塊結構,MFNet block (first residual)為MF-Net 網絡中的第一層殘差結構,MF-Net block 為本研究算法所采用的結構,結果如圖7 所示。
圖7 MF-Net 模型不同block 結構的識別性能Fig. 7 Recognition results based on different block structures in proposed MF-Net
結果顯示,不同的block 結構對最終魚類識別的效果影響顯著,如在主干網絡中采用MF-Net block (First residual) 結構,其Acc-1 準確率僅61.80%,與Gbneck 結構和MF-Net block 結構相比,分別低23.3% 和25.0%。這是因為不同的block 層主要進行特征提取,結構不同提取的特征也不同。此外,MF-Net block 結構的識別性能最佳(86.80%),說明多階段提取結構可以更好地捕獲到魚類更具判別性的細粒度局部特征和全局特征。
為驗證該MF-Net 模型中下采樣的有效性,設計不同的下采樣方式進行分析,結果如圖8 所示??梢钥闯?,模型使用下采樣策略時,其識別性能明顯高于無下采樣的情形,在魚類識別Acc-1 準確率上,獨立設置下采樣結構的MF-Net 高于未設置下采樣結構的1.4%,而使用最大池化采樣的MFNet 模型識別性能最佳,表明下采樣在降低特征圖空間維度的同時還可保留特征的重要信息。
圖8 MF-Net 模型中不同下采樣策略Fig. 8 Recognition results based on different down sampling strategies in proposed MF-Net
在網絡訓練中,損失函數(shù)指導模型的參數(shù)更新,進而影響模型的性能。為驗證該MF-Net 模型損失函數(shù)的有效性,采用不同的損失函數(shù)進行實驗對比分析,其Acc-1 和Acc-5 的實驗結果見圖9。可以看出,無論是Acc-1 還是Acc-5 的準確率,均為基于標簽平滑損失函數(shù)的識別性能最佳,分別為86.80%和95.90%,分別高于交叉熵損失函數(shù)、加權交叉熵損失函數(shù)和焦點損失函數(shù)2%、2.3%、2.5%和0.2%、0.9%、0.4%,表明標簽平滑損失函數(shù)可有效緩解數(shù)據分布不平衡問題,從而提升魚類識別性能。
圖9 基于不同損失函數(shù)的識別性能Fig. 9 Recognition results based on different loss functions in proposed MF-Net
為驗證該MF-Net 模型損失函數(shù)對長尾分布數(shù)據集的有效性,從本研究構造的魚類數(shù)據集中選出50 個類別,每類50~90 張樣本數(shù)據構造一個平衡數(shù)據集。在平衡數(shù)據集上與交叉熵損失函數(shù)進行實驗對比分析,結果見表4。可以看出,在其他設置相同的條件下,采用改動損失函數(shù)進行實驗對比,可以看到在分布均衡的數(shù)據集上,盡管識別精度相對不平衡的數(shù)據集有一定提升,但標簽平滑損失函數(shù)與交叉熵精度接近,這表明平衡的數(shù)據集交叉熵和標簽平滑損失函數(shù)分類效果接近。此外,由于識別精度達到90 以上,因此召回率和F1-score與Acc-1 準確率更加接近。
表4 平衡魚類數(shù)據集下不同識別模型損失對比Table 4 Comparison of different recognition methods with different losses in balanced fish dataset
本研究提出了一個多階段特征提取模型MFNet,用于開放復雜環(huán)境下的魚類識別。該方法使用了一個預處理模塊以提升計算效率,并通過構建的多階段特征提取模塊,以學習識別目標中具有判別性的局部特征和全局特征。在此基礎上,采用標簽平滑損失函數(shù)以降低數(shù)據類別分布不均衡帶來的影響,從而增強模型的識別性能。實驗結果表明,該模型在本研究所提出的魚類數(shù)據集和公開的蝴蝶數(shù)據集上均獲得了較好的識別效果。在未來工作中,擬在增加魚類類別的基礎上,構建新的主干網絡結構,探索細粒度特征學習、損失函數(shù)設計與類別分布不均衡之間的關聯(lián),進一步提升魚類的識別精度。