涂雪瀅,劉世晶,2,錢 程
(1 中國水產科學研究院漁業機械儀器研究所,上海 200092;2 農業農村部漁業裝備與工程技術重點實驗室,上海 200092)
中國漁業資源豐富,魚類養殖品種繁多[1]。目前,漁業捕撈、養殖管理以及生產加工等都面臨魚類精準識別的問題,且隨著漁業產業信息化發展步伐的加快,對魚類品種的精準分類提出了更高的要求[2]。現階段魚類識別手段大都集中在基于離水狀態的靜態識別,水下魚類目標受其自身高柔性的體態和多姿態的運動方式的制約,導致基于靜態圖像的識別方法在實際應用場景中識別精度較低[3]。因此,急需從采樣手段、樣本集構建以及高效識別算法等多個方面開展研究,提升水下活體魚類識別精度,滿足水下運動個體精準識別的產業發展需要。
目前,魚類種類識別方式主要依賴人工,勞動強度大,對魚體會造成損傷,不利于魚類的福利養殖[4]。計算機視覺技術具有高精度、非接觸、速度快、抗干擾能力強等特點[5],在智能識別、自動跟蹤、智能分類等領域起到越來越重要的作用[6-8]。基于機器視覺技術的目標識別方法主要分為兩類,一類是基于傳統BP、SVM等的傳統機器學習方法[9],另一類是基于卷積的深度學習方法[10]。傳統的機器學習方法主要是利用已知特征進行分類學習,在特征結構明顯、學習場景單一的工況條件下取得了較好的識別效果[11],但由于其學習特征不具備空間縮放能力,導致算法適用場景受限,不能滿足動態場景的識別要求[12]。基于卷積網絡的深度學習算法是目前機器學習領域的研究熱點,該方法通過構建多個卷積層、池化層和全連接層實現對平移、旋轉、縮放等特征的有效識別,在圖像識別領域起到了越來越重要的作用[13]。自2012年至今,涌現出大量優秀卷積神經網絡算法,如AlexNet、ZFNet、VGG、GoogleNet、ResNet、SENet等,已經廣泛應用在人臉、姿態、農作物以及魚類識別領域[14]。
ResNet算法[15]是目前應用較為廣泛的分類識別方法,該算法充分利用了淺層網絡信息,解決了模型梯度消失和梯度爆炸的問題[16],在圖像識別領域取得了不錯的成績。田強等[17]通過調整ResNet18模型的網絡結構,搭配Leaky ReLU激活函數,實現汽車車標識別,識別率高達99.8%。Adao等[18]通過替換線性層的方法改進ResNet34網絡結構,實現15種棉花害蟲的分類,識別率達到98.1%。萬鵬等[19]通過優化ResNet50算法,結合遷移學習、Adam優化和余弦退火方法,實現6種淡水魚類的識別,識別率達到96.94%。上述基于ResNet的圖像識別研究有效提升了目標識別精度,但識別對象大都為表型姿態變化較少的樣本,面對水下魚類游泳運動的復雜性和姿態的多樣性,缺乏針對水下動態圖像的有效試驗論證。目前,基于ResNet算法的魚類識別技術主要圍繞單一的框架結構開展相關研究,缺少對不同網絡層數框架結構的綜合比較分析,雖然ResNet可以通過殘差單元使網絡結構無限擴大,但是增加的網絡結構不可避免地增加了算法的復雜度,降低了運行效率[20]。
以ResNet框架為研究對象,通過對比分析不同網絡層數和框架結構識別效果,以期找到適用于多姿態魚類目標識別最優網絡結構。首先,采取多角度圖像獲取方式,結合網絡檢索手段,豐富樣本數量,增加算法對魚類復雜姿態的適應能力,以期解決復雜樣本庫構建問題;其次,在經驗分析的基礎上,選取ResNet18、ResNet34和ResNet50這3種網絡結構作為測試結構,通過對比分析不同網絡結構的識別效果,以期找到識別精度和運行效率匹配度最佳的網絡結構,滿足水下魚類動態目標精準識別產業發展需求,為產業智能技術升級提供算法支撐。
如圖1所示,試驗系統由透明玻璃魚缸、過濾器、相機、支架和圖形工作站組成。其中,玻璃魚缸的長、寬、高均為600 mm,距地面1 m,玻璃厚度為7 mm,工作水深460 mm,相機型號為WST-U1080。為了避免鏡面反射,將魚缸的背面、底面、右側面采用白紙遮擋。過濾器采用基于高效培菌濾材所建立的硝化系統的小型外置水循環過濾器,保持試驗過程中水質健康穩定,減少換水次數。為了增加樣本數量,采用位于魚缸兩側的2臺相機進行采樣,調整采樣高度使采樣面與魚缸平面近似平行,保證圖像數據集構建的有效性。

圖1 試驗裝置Fig.1 Test equipment
如圖2 a所示,受相機鏡頭光路影響,圖像存在一定的徑向畸變,因此本研究采用標準棋盤格方法[21]進行圖像矯正,矯正后樣本圖像如圖2 b所示。

圖2 魚類圖像矯正前后對比Fig.2 Comparison of fish image before and after correction
為了解決模型退化帶來的信息傳輸過程中丟失、損耗等問題,何凱明等[15]提出ResNet殘差網絡,使用殘差學習單元,形成短路機制,實現了卷積神經網絡的深層次應用。ResNet殘差結構如圖3所示,x是輸入信號,經過第一層線性變化,得到F(x),經過第二層線性變化,得到輸出信號H(x)。在卷積神經網絡訓練過程中,隨著學習準確率不斷上升到飽和狀態,輸出信號H(x)趨于穩定,為保證學習準確率不再隨訓練層數加深而降低,原本帶權值的x須變為恒等映射,保持輸出信號H(x)與輸入信號x相等,得到F(x)=H(x)-x,為使得H(x)與x隨網絡結構加深而保持等值,F(x)須趨近于0,ResNet訓練過程逐漸轉向為對殘差F(x)趨于0的學習。

圖3 ResNet殘差結構Fig.3 ResNet residual structure
ResNet有不同的網絡層數,比較常見的有18-layer、34-layer、50-layer,其結構均由5個卷積層和1個綜合模塊組成[15],其中卷積層由不同數量的殘差模塊不斷堆疊組成,綜合模塊由全連接層、池化層和分類模塊組成[22]。不同層數的ResNet的主要區別就在于每個卷積層包含的殘差塊的數量和殘差塊中的具體參數不同。
根據ResNet網絡的成熟應用形式[15],經典的ResNet18、ResNet34和ResNet50網絡結構如圖4所示。其中,ResNet18和ResNet34結構較為簡單,以兩個3×3的卷積核和一個跳躍結構構成的一個殘差單元,通過多個殘差單元串聯組成網絡結構,ResNet34在ResNet18的基礎上加深了網絡層次;而ResNet50在ResNet34的基礎上,將2層殘差單元替換成3層殘差單元,其中3層殘差單元是由一個1×1、一個3×3和一個1×1的卷積核相串聯,同時并聯一個跳躍結構,再通過數個殘差單元串聯組成網絡結構。

圖4 不同層數ResNet網絡結構模型Fig.4 Different ResNet structure models
2.2.1 損失函數
損失函數[23]在模型訓練時能夠反映出模型與實際的差距,損失函數的大小與模型的優劣成反比,損失函數的值越小,代表模型的預測值與真實值相差越小,模型識別精度越高。交叉損失熵[24]作為ResNet模型的損失函數在目標識別領域取得了較好的效果[19],因此采用交叉損失熵作為損失函數,進行驗證試驗,其表達式為:
(1)
式中:loss為損失函數;m為取樣數量;n為分類數量;Pij為符號函數,當i的類別為j時取1,否則取0;qij為i屬于j類的預測概率。
2.2.2 學習率
學習率是決定ResNet模型收斂速度與收斂效果的重要參數,學習率的大小決定了模型學習速度的快慢[25]。采用指數衰減方法對學習率進行更新,在保證識別精度的前提下提升算法的收斂速度[26]。其學習率公式為:
α=βepoch_num×α0
(2)
式中:β為衰減指數,α0為初始學習率,epoch_num為迭代次數。綜合考慮模型收斂速度和收斂效果,β取值0.95,α0初始設定值為0.001,學習率α隨迭代次數的增加而減小,保持模型穩定不退化。
2.2.3 批尺寸
批尺寸的選取對模型迭代速度及識別精度均有一定影響[27]。對于小樣本量數據集,批尺寸越大,模型梯度估值越準確,但對于大樣本量數據集,批尺寸取值過大會占用過多內存,造成學習速度過慢[28]。使用的魚類圖像樣本集共含有35 000張圖像,綜合考慮模型訓練速度、準確度、系統內存等因素,選取128作為批尺寸。
使用基于Windows 10操作系統的聯想工作站,CPU為IntelXeon W-2245,主頻3.90 GHz,顯卡RTX2080S,內存64 GB,訓練平臺為基于Anaconda3的PyTorch框架。

表1 魚類圖像樣本數量分布Tab.1 Quantity distribution of fish image data sets
采用ResNet18、ResNet34和ResNet50網絡結構對樣本庫中的魚類圖像進行訓練和測試。圖5為3種ResNet算法模型訓練準確率對比,橫坐標為迭代次數,從圖中可以看出,3種ResNet模型經過50次迭代后均穩定在99.8%,其中ResNet18的收斂速度最快。

圖5 不同層數ResNet模型訓練準確度Fig.5 Training accuracy of different ResNet models
表2為不同模型識別結果,從表中可以看出,隨著ResNet模型網絡層數的復雜化,對魚類圖像的訓練時間也變長,模型識別的準確率相對有所提高,其中ResNet18浮點運算量最小,所需訓練時間和識別時間最短,但準確率在3種模型中最低,準確率93.57%;ResNet50識別準確率最高,達到95.47%,但訓練時間相較ResNet18和ResNet34分別增加了21.90 min和9.02 min;ResNet34識別準確率與ResNet50相差不大,達到95.03%,與ResNet50相比,其準確率降低了0.44%,訓練時間減少了14.56%。

表2不同模型的識別結果對比Tab.2 Comparison of the results of different kinds of models
采用多角度視頻采樣方式,采集小水體水下魚類運動視頻,從而獲取不同姿態魚類圖像。不同于其他魚類識別研究采用離水拍攝采樣[29],或者大水體拍攝采樣[30],采集的魚類樣本均為姿態、角度單一的樣本,本研究采用小水體魚缸作為采樣空間,相機采樣空間覆蓋魚類全部活動區域,所采集的樣本包含魚類不同角度、不同游姿的圖像。
在養殖魚類圖像樣本庫的35 000張樣本圖像中,包含魚類不同姿態的圖像。其中,圖6 a為魚類側面圖像,該類圖像類似于離水試驗采集的樣本,為單一姿態圖像,共計18 791張;圖6 b為魚類多角度、多姿態圖像,該類圖像為復雜姿態圖像,共計16 209張。當樣本庫按4∶1隨機分為訓練集和測試集后,以魚類姿態為分類標準,則訓練集中包含15 033張單一背景圖像和12 967張復雜背景圖像,測試集中包含3 758張單一背景圖像和3 242張復雜背景圖像,3個ResNet模型對不同姿態樣本的識別精度如表3所示。

圖6 魚類單一姿態和復雜姿態圖像Fig.6 Single pose and complex pose images of fish

表3 單一姿態圖像和復雜姿態圖像識別結果對比Tab.3 Comparison of recognition results between single attitude image and complex attitude image
從表3中可以看出,3個模型對單一姿態圖像的識別準確率分別為96.70%、97.53%、97.92%,對復雜姿態圖像的識別準確率分別為89.94%、92.13%、92.63%,相較單一姿態圖像分別降低了6.99%、5.54%、5.40%。說明模型對單一姿態圖像的識別效果更好,單一姿態圖像中目標的特征更明顯,而復雜姿態圖像中的目標包含了魚類的運動特征,在不同姿態時展現的體征不同,加大了模型學習的難度,導致識別準確率下降。
對比3個模型的識別結果,不同姿態和不同背景的魚類圖像對模型識別精度有一定影響,經過對錯誤識別結果的對比分析,造成識別錯誤的原因有如下幾種:1)當魚游轉到某個角度,其表型特征不明顯(圖7a);2)當魚運動幅度與頻率過大,采集到的樣本為運動模糊圖像(圖7b);3)當魚游到循環裝置附近,與循環裝置形成特定角度(圖7c);4)當魚以某個姿態游到魚缸角落,與背景融為一體(圖7d);5)當背景中含有與其他魚類相似特征(圖7e);6)當背景干擾因素過多、過于復雜(圖7f)。分析整個樣本庫的特點,當樣本的特征丟失較多,成像角度較為特殊,魚類貼邊運動,或者背景較為復雜時,容易識別錯誤。且這種特殊情況出現的概率較低,樣本相對較少,模型無法充分學習此類樣本的全部特征,因此其識別精度較差。

圖7 易識別錯誤的魚類圖像Fig.7 Easily misidentified fish images
混淆矩陣能夠將分類算法模型的預測結果可視化,展示模型準確率及實際預測分布[31]。本研究采用混淆矩陣來評價3種ResNet網絡結構對5種養殖魚類的識別效果,其可視化結果如表4所示,橫軸表示5種養殖魚類的真實種類,縱軸表示其預測種類,矩陣中的數值xij代表將第i種魚類預測為第j種魚類的總次數。混淆矩陣中對角線上的數值越大,代表模型預測準確率越高。

表4 不同層數ResNet識別結果的混淆矩陣
由表4可以看出,3種算法魚類識別結果的混淆矩陣,其預測數量基本分布在矩陣對角線上,3種算法的預測類別與真實類別基本一致,這表明ResNet算法在魚類識別方面有很高的準確率。對比3個混淆矩陣,ResNet18對5種魚類識別精度相差較大,對鮰魚的識別精度最高,達到97.00%,對鯽魚的識別精度最低,僅有86.36%;ResNet34在識別5種魚類方面準確率基本相同,對每種魚的識別準確率均在94.14%以上,說明ResNet34在魚類圖像識別方面性能穩定;ResNet50對5種魚類識別準確率略有差距,識別鱸魚的效果在3種算法中最好,準確率達到98.28%。
通過采集魚類高柔性、多姿態的運動目標圖像和網絡獲取不同背景目標魚類圖像,構建復雜姿態與復雜背景魚類圖像樣本集,以ResNet框架為核心,通過比較分析典型的ResNet18、ResNet34、ResNet50框架結構對魚類識別精度和效果的影響,確定適用于典型養殖魚類識別的ResNet網絡結構形式。主要結論如下:
1)基于殘差卷積神經網絡的深度學習算法在養殖魚類圖像識別上具有較好的識別準確度,3種ResNet模型平均識別準確率達到94.69%,其中ResNet50識別精度最高,達到95.47%,ResNet34次之,達到95.03%,但ResNet50識別效率比ResNet34降低20.43%,綜合考慮識別精度和識別效率,ResNet34更加適用于大樣本量魚類圖像的識別分類。2)采用小水體作為采樣空間,能夠在保證魚體無損的情況下,獲得高柔性、多姿態的魚類樣本圖像。增加模型對不同姿態魚類圖像的訓練,增強了ResNet模型的泛化能力和魯棒性,更適用于現實場景下的魚類種類識別。3)通過對比分析不同ResNet識別結果的混淆矩陣,ResNet34對每種魚的識別精度均在94.14%以上,表明了ResNet34在魚類圖像識別方面性能穩定。
針對魚類運動高柔性、多姿態的特點,設計了雙相機同步采樣系統,所采集的魚類圖像樣本均基于活魚自由運動狀態,能夠適用于實時環境下動態魚類識別。但采樣背景較為單一,對實際工況中背景復雜的魚類圖像識別效果不如單一背景的魚類圖像,下一步將針對復雜環境下魚類開展識別研究。
□