蔡振鑫, 劉春紅,2*
(1.中國農業大學信息與電氣工程學院,北京 100083; 2.中國農業大學國家數字漁業創新中心,北京 100083)
我國是水產養殖大國,是淡水魚的主要生產國,淡水魚的產量在全球占主導地位[1]。鯽魚作為淡水魚的一種,營養豐富,體內所含的脂肪酸超過一半為不飽和脂肪酸[2],其中DHA、EPA等不飽和脂肪酸能提高人體免疫力、促進大腦發育、改善視力。質量是魚的重要特征,在市場上主要根據魚的質量進行分級售賣,準確估計魚的質量能提高水產養殖的經濟效益。另一方面,目前我國離全面實現漁業現代化還有很大的差距[3],使用機器視覺技術實現魚類質量估計能夠推進我國漁業現代化的進程。
現有魚類質量估計方法基于多特征或單一特征:基于多特征的魚體質量估計是選取魚背的總面積、總長度、最大寬度和五個等距寬度(將魚背部劃分為六個相等的部分來獲取五個等距寬度)[4]等幾個特征作為形狀特征?;趩我惶卣鞯聂~體質量估計多選用魚的體長作為形狀特征[5-6],或者使用視圖區域面積[7]。長度是魚的重要特征[8],而且長度容易獲取,在長度-重量關系的研究中有38%是針對淡水魚的[9]。目前,長度-重量關系最經典的模型是W=a×Lb,能準確地估計魚體質量[10]。其中,L是魚體長度,a是截距,參數b表征的是魚質量變化和體型變化之間的關系,b取值一般在3附近的小范圍內變化[11]。在實際水產養殖中,生長環境如季節變換會影響魚的質量和形狀的關系[12],在對同一類型魚不同季節長度-重量關系的評估中,參數a變化范圍為[0.005 848,5.610 480],參數b的變化范圍為[1.500,3.115]。另外,淡水魚的體長測量有三種方法[13],不同的長度測量方法會導致模型中的截距a發生變化[14]。
對于同一質量的鯽魚,雖然會因為季節不同導致魚體長不一致,但外輪廓周長相差不大。因此,提取視圖區域面積和外輪廓周長作為特征估計鯽魚質量時可以不考慮環境等影響因素。在采集鯽魚圖像時,使用1元硬幣作為參照物,不需固定圖像采集裝置與鯽魚之間的距離[15]。本文采集鯽魚圖像和體重數據,利用BP神經網絡、Elman神經網絡以及Numpy庫構建的神經網絡實現多特征的鯽魚質量估計,以期為實現水產養殖中魚類的精準投喂,推進漁業現代化進程奠定基礎。
首先采集魚體重和圖像數據,然后進行圖像處理并提取特征值,最后構建質量估計模型,總體流程如圖1所示。
圖1 鯽魚質量估計的總體流程
鮮活鯽魚質量在200~600 g之間,購自水產市場。
使用尼康APS-C規格數碼單反相機D7100采集圖像,該相機有效像素2 410萬,傳感器使用DX格式CMOS,感光度100~6 400,使用51點Multi-CAM 3500DX自動對焦模塊。鋰電池、3.2英寸LCD顯示屏,約122.9萬畫點。
首先將每條鯽魚放置在電子秤上稱重,記錄鯽魚的質量,再將鯽魚和1元硬幣放置在拍攝底板上采集圖像,在記錄鯽魚質量的同時保存鯽魚圖像作為實驗的數據集,總共采集447張鯽魚圖像,447組數據集。
由于光線不均勻、鯽魚表面有水反光等因素造成采集到的圖像有噪聲,因此在提取特征之前需要對鯽魚圖像進行預處理。首先是圖像縮放,采集到的原始鯽魚圖像為6 000×4 000像素,像素太大而無法進行大規模的圖像處理,利用OpenCV中的圖像縮放函數將鯽魚圖像壓縮到640×480像素。其次是圖像增強,采用Gamma變換對縮放后的圖像進行圖像增強,變換之后圖像的灰度值和原始圖像灰度值之間的關系如公式(1)所示。最后利用GrabCut算法分割圖像,將目標(鯽魚和硬幣)從原始圖像中分割出來。分別提取鯽魚和硬幣的特征,在提取特征時先用OpenCV中的findContours檢測鯽魚的輪廓,再用函數contourArea和arcLength計算圖像輪廓的面積和周長。
(1)
采集到的鯽魚圖像共447張,用80%的數據訓練模型,20%的數據測試模型。由于提取的特征數據大小范圍和量綱都不一致,需要先將數據進行歸一化處理,以便提高模型的訓練速度和估計精度。使用最大-最小標準化方法對所提取的數據進行歸一化處理,計算如公式(2)所示。
(2)
式中,y是歸一化后的特征值,x是歸一化前的特征值,min(x)和max(x)分別是歸一化前特征值的最小值和最大值。
1.5.1BP神經網絡 構建的BP神經網絡(圖2)輸入層神經元有4個,分別對應提取的4個特征值。隱藏層神經元個數有11個,根據公式(3)確定。
圖2 BP神經網絡模型
(3)
式中,x為隱藏層神經元個數,a和b分別是輸入層和輸出層的神經元個數,c常數取值為[1,10]之間,本研究取值為9。
BP神經網絡各層輸入與輸出之間的關系如式(4)~(6)所示。
(4)
(5)
(6)
式中,neti和neto分別是每一個隱藏層神經元的輸入量和輸出量,xj是輸入的第j個值,yo是輸出的鯽魚質量。
1.5.2Elman神經網絡 Elman神經網絡(圖3)有4層結構,是在BP神經網絡的基礎上增加了一個承接層。與靜態的BP神經網絡不同,Elman是動態反饋型神經網絡。在Elman神經網絡中,承接層獲取隱藏層的反饋信息,將反饋信息和同時刻的輸入信息一起輸入隱藏層。Elman網絡具有全局穩定的特點,計算能力比前饋型神經網絡更強,計算流程如圖4所示。
圖3 Elman神經網絡模型
圖4 Elman神經網絡的計算流程
1.5.3Numpy庫構建神經網絡 Numpy庫是Python軟件中用來處理大批量矩陣數據的計算工具,使用Numpy庫構建的神經網絡是多元線性結構。模型的訓練(圖5)包括前向傳播和誤差反向傳播兩部分,前向傳播是先計算估計質量值,再計算估計值與真實值的誤差,通過誤差反向傳播更新權重。初始權重wi和偏置b都是隨機設置的參數。
圖5 Numpy庫構建神經網絡的訓練流程
模型訓練的過程是優化參數wi和b,讓損失函數L取值最小,采用梯度下降算法優化模型,損失函數計算如公式(7)所示。
(7)
(8)
(9)
使用三種深度學習網絡估計鯽魚質量,在三種模型中,將數據集的80%用于訓練模型,20%用于測試模型,每次訓練采用隨機的數據集,避免樣本順序對訓練過程產生影響。使用均方誤差(MSE)和決定系數(R2)評價三種質量估計模型。
(10)
經過每個步驟處理后的圖像如圖6所示,增強處理后的圖像目標與背景的對比更加明顯,便于圖像分割,分割處理可將鯽魚從背景中分離,便于特征提取。
圖6 經過處理的鯽魚圖像
使用決定系數和均方誤差評估三種神經網絡構建的估計模型,結果如表1所示。使用BP神經網絡在測試數據集上計算的決定系數值最大,均方誤差值最??;使用Numpy庫構建的神經網絡決定系數值最小,均方誤差值最大。說明BP神經網絡估計模型最好,Elman神經網絡次之,使用Numpy庫構建的神經網絡結果較差。
表1 三種方法的R2和MSE
模型訓練結束后,從亂序的測試數據集中隨機抽取50個樣本繪制模型估計體重與實際體重的關系。從圖7可以看出,使用BP和Elman神經網絡估計的結果預測值和真實值基本都重合,只有少部分預測值偏離真實值,表明兩種方法的預測精度較高;但使用Numpy庫構建的神經網絡中有較多的預測值與真實值重合度低,預測結果精度較低。
圖7 不同方法估計體重與實際體重關系
為了評價本文提出的鯽魚質量估計方法的有效性,對不同方法的決定系數進行比較。通過比較表1和表2可以看出,使用BPNN-面積-周長和Elman-面積-周長在測試集上計算的值高于其他方法,Numpy庫構建的深度學習網絡的R2值比長度-質量和PCA-CF-KNN方法的高。相比于單一因素的魚類質量估計方法,本文綜合考慮了鯽魚的形狀特征,因此,BP、Elman和Numpy庫構建的深度學習網絡都能夠用于鯽魚質量估計,使用BP和Elman方法估計精度更高。
表2 不同質量估計方法的決定系數
本研究結果表明,使用BPNN-面積-周長估計時測試集決定系數值最大,均方誤差值最小。使用Numpy-面積-周長估計時測試集決定系數值最小,均方誤差值最大。使用BPNN-面積-周長和Elman-面積-周長方法的決定系數都大于0.9,說明使用這兩種方法估計精度較高,適合水產養殖中鯽魚質量的估計。與其他兩種神經網絡相比,Numpy庫構建的是一個多元線性回歸網絡,沒有加入非線性環節,而在BP和Elman神經網絡中都加入了非線性的激活函數,說明鯽魚質量和其特征之間并不是簡單的線性關系。
本研究基于神經網絡進行多特征結合的鯽魚質量估計,采用BP神經網絡、Elman神經網絡和Numpy庫構建的神經網絡建立多特征結合的鯽魚質量估計模型。經過分析,3種方法都能用于鯽魚的質量估計。但在實際的水產養殖中,使用BP和Elman神經網絡能快速、準確地估計鯽魚質量,提高水產養殖的經濟效益。這3種方法估計鯽魚質量時都有一定的誤差,為了能適用普通的環境條件,選擇的普通硅膠底板顏色與鯽魚的對比度不明顯、光照不均勻等會造成圖像處理效果不理想,從而導致提取的特征值有誤差。另一方面,在現有的魚體質量估計中,不管是基于長度或視圖區域面積的單一特征的魚體質量估計,還是多特征結合的魚體質量估計方法都只考慮了魚體背面的各個特征,沒有研究魚體的側面特征,在實驗中保證魚體不受破壞的情況下提取魚體的側面特征比較困難。因此在之后的研究中,應該充分考慮魚體的各項特征值與魚體質量之間的關系,嘗試找到一種適用于多品種魚體質量估計的方法。