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