萬 鵬,趙竣威,朱 明,譚鶴群,鄧志勇,黃毓毅,吳文錦,丁安子
(1. 華中農(nóng)業(yè)大學(xué)工學(xué)院,武漢 430070;2. 農(nóng)業(yè)農(nóng)村部長江中下游農(nóng)業(yè)裝備重點實驗室,武漢 430070;3. 湖北省農(nóng)業(yè)科學(xué)院農(nóng)產(chǎn)品加工與核農(nóng)技術(shù)研究所,武漢 430070)
中國是淡水魚養(yǎng)殖大國,2019年淡水魚養(yǎng)殖產(chǎn)量2 548.02萬t,占全部淡水養(yǎng)殖總產(chǎn)量的84.55%[1]。淡水魚種類繁多,品種之間差異很大;淡水魚的種類識別在淡水魚的養(yǎng)殖、捕撈、加工等過程具有重要作用[2-4]。目前,中國淡水魚分類主要依靠人工進(jìn)行,勞動強度大、效率低、準(zhǔn)確率不高,制約著淡水魚養(yǎng)殖產(chǎn)業(yè)及生產(chǎn)加工機械化、自動化的發(fā)展[5-6]。因此,開展淡水魚識別方法研究對于提高淡水魚種類識別效率、研發(fā)新的種類識別裝置具有重要意義。
傳統(tǒng)的淡水魚品種識方法研究主要通過機器視覺技術(shù)獲取魚體的圖像,再通過圖像處理技術(shù)對魚體圖像進(jìn)行分析,提取魚體特征值并構(gòu)建模型對淡水魚進(jìn)行種類識別。這方面國內(nèi)外相關(guān)研究人員開展了較多工作。張志強等[7]基于機器視覺技術(shù)獲取魚體圖像,通過提取魚體圖像的顏色分量、長短軸之比等特征值,構(gòu)建模型對4種淡水魚進(jìn)行種類識別,準(zhǔn)確率可達(dá)96.67%。萬鵬等[8]通過圖像處理技術(shù)提取魚體外觀特征,構(gòu)建BP神經(jīng)網(wǎng)絡(luò)對4種淡水魚進(jìn)行種類檢測,準(zhǔn)確率達(dá)到92.50%,平均檢測時間為1.3 s。吳一全等[9]提出了一種基于Krawtchouk矩、灰度共生矩陣、多核支持向量機(Support Vector Machine,SVM)的識別方法,對5種魚分類識別準(zhǔn)確率可達(dá)95.83%以上。胡燦[10]通過圖像處理獲取魚體的顏色、形態(tài)、紋理等25個特征值,采用主成分分析(Principal Component Analysis,PCA)和粒子群優(yōu)化(Particle Swarm Optimization,PSO)算法對其降維、優(yōu)化,生成極限學(xué)習(xí)機(Extreme Learning Machine,ELM)分類器對魚體進(jìn)行分類識別,準(zhǔn)確率達(dá)到96.67%。涂兵等[11]提出利用魚體背部輪廓相關(guān)系數(shù)算法對魚類進(jìn)行識別,對4種淡水魚的識別率均達(dá)到91%,但無法識別背部輪廓曲率接近的魚體。此外,White等[12]利用機器視覺技術(shù),根據(jù)不同比目魚的傾斜度以及體長的差異建立7種比目魚種類識別模型,準(zhǔn)確率達(dá)99.8%。Larsen等[13]通過對海水魚的形態(tài)、紋理特征進(jìn)行提取,采用線性判別法(Liner Discriminant Analysis,LDA)對3類魚的108張圖像進(jìn)行分類識別,正確率達(dá)到76%。Alsmadi等[14]通過提取海水魚的顏色、紋理特征,并以BP反向傳播神經(jīng)網(wǎng)絡(luò)對20類魚進(jìn)行分類,平均識別率為84%。綜上所述可知,傳統(tǒng)的魚類品種識別主要通過圖像預(yù)處理,提取魚體的顏色、形狀、紋理、輪廓等特征[15-16],通過構(gòu)建BP神經(jīng)網(wǎng)絡(luò)、SVM等模型進(jìn)行種類識別,特征提取復(fù)雜、且需要依賴人工進(jìn)行選擇,識別精度不高[17],不具備可遷移性;同時只能提取魚體表層的特征,難以挖掘到深層的區(qū)別力強的特征,在不同的背景、光照等干擾下識別效果較差。
近年來,隨著深度學(xué)習(xí)算法研究的日益深入,其在識別方面顯示出了許多優(yōu)越性,在魚類的品種分類識別、檢測等領(lǐng)域也有較多研究。顧?quán)嵠降萚18]利用卷積神經(jīng)網(wǎng)絡(luò)對海水魚進(jìn)行分類識別準(zhǔn)確率達(dá)98.6%。陳英義等[19]采用遷移學(xué)習(xí)訓(xùn)練模型構(gòu)建優(yōu)化的FTVGG16模型,對遠(yuǎn)洋捕撈的海水魚進(jìn)行識別準(zhǔn)確率為95.89%。王文成等[20]提出基于ResNet50網(wǎng)絡(luò)框架的魚類圖像識別算法,對10種海水魚進(jìn)行分類識別準(zhǔn)確率達(dá)到了93.33%。Vaneeda等[21]開發(fā)了經(jīng)過合成數(shù)據(jù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò),對藍(lán)鱈魚、大西洋鯡魚和大西洋鯖魚的識別精度達(dá)到94%,Banan等[22]通過搭建VGG16神經(jīng)網(wǎng)絡(luò)模型,采用5倍交叉驗證法進(jìn)行訓(xùn)練和評估對4種海水魚進(jìn)行種類識別,準(zhǔn)確率可達(dá)99.9%。深度學(xué)習(xí)算法具有自動學(xué)習(xí)、提取研究對象的顏色、輪廓等低層次特征以及內(nèi)在聯(lián)系等高層次特征的優(yōu)點,且構(gòu)建的種類識別模型具有可遷移性[23];但是模型訓(xùn)練數(shù)據(jù)集不足、圖像背景單一等因素會導(dǎo)致模型識別率和泛化能力降低。因此研究并構(gòu)建基于深度學(xué)習(xí)的淡水魚種類識別模型,不僅能夠降低人工對于魚體特征值選擇的難度和準(zhǔn)確度,而且具有較好的遷移性,能夠適用于不同場景的檢測應(yīng)用,對提高魚體的品種識別速度,開發(fā)智能化的淡水魚分類分級裝置具有重要借鑒意義。
本文研究的目的,探索通過構(gòu)建大宗淡水魚圖像數(shù)據(jù)集,在分析深度學(xué)習(xí)中經(jīng)典ResNet50模型網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,對ResNet50模型網(wǎng)絡(luò)進(jìn)行改進(jìn),并對模型的相關(guān)參數(shù)進(jìn)行優(yōu)化,以期構(gòu)建適用于不同應(yīng)用場景的淡水魚種類識別方法,提高淡水魚分類分級的準(zhǔn)確率和工作效率。
本文以鳙魚、鳊魚、鯉魚、鯽魚、草魚、白鰱6種大宗淡水魚為研究對象,為了獲取足夠的淡水魚圖像樣本構(gòu)建淡水魚圖像數(shù)據(jù)集,本文采用圖像采集裝置獲取具有單一背景的淡水魚圖像,同時采用從互聯(lián)網(wǎng)搜索具有干擾背景的淡水魚圖像。淡水魚圖像采集裝置如圖1所示。
淡水魚圖像采集裝置由XY水平移動平臺、轉(zhuǎn)向板、光源以及包含Matrox圖像采集卡的計算機硬件系統(tǒng)、圖像采集軟件系統(tǒng)、BASLER工業(yè)相機(德國Blaser,acA640-90gm)、鏡頭(Computar,M0814-MP2)等組成。通過XY水平移動平臺以及轉(zhuǎn)向板調(diào)節(jié)相機相對于魚體的位置,通過圖像采集軟件控制BASLER工業(yè)相機從淡水魚的正上方和傾斜45°方向獲取淡水魚圖像。為了擴(kuò)展淡水魚圖像數(shù)據(jù)集,本文分別采集魚頭朝向隨機放置的淡水魚魚體正反兩面的圖像構(gòu)建單一背景圖像數(shù)據(jù)集;同時,通過互聯(lián)網(wǎng)搜索包含有單一品種的完整淡水魚魚體及干擾背景的圖片構(gòu)建具有干擾背景圖像數(shù)據(jù)集,則淡水魚圖像數(shù)據(jù)集由單一背景圖像數(shù)據(jù)集和干擾背景圖像數(shù)據(jù)集構(gòu)成。淡水魚圖像樣本如圖2所示。
淡水魚圖像數(shù)據(jù)集中不同品種的淡水魚圖像樣本數(shù)量分布如表1所示。
表1 淡水魚圖像數(shù)據(jù)集數(shù)量分布Table 1 Quantity distribution of freshwater fish image data sets
本文構(gòu)建的淡水魚圖像數(shù)據(jù)集中,采集到的單一背景圖像樣本為2 700張;互聯(lián)網(wǎng)搜索的干擾背景圖像樣本為1 880張,兩者組成混合圖像樣本數(shù)據(jù)集為4 580張,即為淡水魚種類識別圖像數(shù)據(jù)集。
為了加快網(wǎng)絡(luò)模型的訓(xùn)練和收斂速度、提升模型的準(zhǔn)確率等,需要對用于模型訓(xùn)練的圖像數(shù)據(jù)集進(jìn)行預(yù)處理。本文調(diào)用Pytorch算法工具庫對淡水魚圖像進(jìn)行空間尺度變換、張量處理及歸一化處理。其中空間尺度變換對魚體圖像進(jìn)行隨機縮放、裁剪、水平翻轉(zhuǎn)以及變換亮度、對比度等處理;張量處理將魚體圖像中像素點的單通道顏色值由[0,255]轉(zhuǎn)變成[0,1],將圖像轉(zhuǎn)變成張量格式;最后對張量圖像進(jìn)行歸一化處理。經(jīng)預(yù)處理后,淡水魚圖像的分辨率為224像素×224像素×3通道。
隨著神經(jīng)網(wǎng)絡(luò)深度的增加,會出現(xiàn)梯度消失、退化等問題,導(dǎo)致模型難以訓(xùn)練、錯誤率增加,包含殘差結(jié)構(gòu)的網(wǎng)絡(luò)模型能夠在很大程度上避免出現(xiàn)此種問題。因此本文選擇具有殘差結(jié)構(gòu)的ResNet50模型,并對其結(jié)構(gòu)進(jìn)行優(yōu)化后用于淡水魚種類識別研究。ResNet50模型的殘差結(jié)構(gòu)如圖3。
在3×3卷積核的前后,采用1×1的卷積核降維和升維可以減小模型的參數(shù)量。殘差結(jié)構(gòu)3a中的實線和殘差結(jié)構(gòu)3b中的虛線部分為輸入的下采樣函數(shù),殘差結(jié)構(gòu)3a表示不改變尺寸的殘差塊,即輸出特征矩陣的高和寬不改變;殘差結(jié)構(gòu)3b為添加尺度的殘差塊,輸出特征矩陣的高和寬為輸入的一半。ResNet50模型的殘差結(jié)構(gòu)增加了輸出特征圖的維度,能夠解決梯度退化、消失問題。
以殘差結(jié)構(gòu)為基礎(chǔ)的ResNet50模型其經(jīng)典結(jié)構(gòu)及改進(jìn)后的結(jié)構(gòu)如圖4所示。
改進(jìn)后的ResNet50模型結(jié)構(gòu)和經(jīng)典ResNet50的模型結(jié)構(gòu)主體部分相同。2種模型結(jié)構(gòu)中的Input(224,224,3)均表示輸入大小為224像素×224像素×3通道的淡水魚圖像,模型網(wǎng)絡(luò)結(jié)構(gòu)左側(cè)Output(112×112× 64)表示輸出特征圖的尺寸,右側(cè)表示多層神經(jīng)網(wǎng)絡(luò)的卷積組成,如“7×7 conv, 64, /2”中卷積核的尺寸為7×7,通道數(shù)為64,步長為2。Conv Block1表示第一個卷積塊1,其中包含1個卷積層;Conv Block2_1、Conv Block3_1、Conv Block4_1、Conv Block5_1表示添加尺度的殘差塊,殘差塊的數(shù)目均為1;Conv Block2_x、Conv Block3_x、Conv Block4_x、Conv Block5_x表示不改變尺寸的殘差塊,殘差塊的數(shù)目分別為2、3、5、2。Conv Block2至Conv Block5定義為殘差塊2、3、4、5,每個殘差塊均由3個卷積層組成,即一共包含有3×(3+4+6+3)+1=49個卷積層。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中Conv為卷積層,BN為批標(biāo)準(zhǔn)化操作,Pool表示最大池化層,Avg Pool表示平均池化層,F(xiàn)c為全連接層。從整體上可理解為5個卷積塊,包括1個7×7的卷積層、4個3×3的殘差塊,卷積核的數(shù)量分別為64、64、128、256、512。對于7×7卷積層,“/2”表示卷積核的移動步長為2,數(shù)據(jù)填充默認(rèn)為1,卷積層不添加偏置(bias);批標(biāo)準(zhǔn)化BN加速網(wǎng)絡(luò)訓(xùn)練,且將BN層放在Conv和激活函數(shù)之間;對于3×3池化層,步長為2,數(shù)據(jù)填充為1。
圖4 中改進(jìn)后的ResNet50網(wǎng)絡(luò)結(jié)構(gòu)由49個卷積層和2個全連接層組成,綠色標(biāo)記為網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)之處,激活函數(shù)選擇CELU代替原始模型的ReLU;通過Kaiming正態(tài)分布初始化卷積層權(quán)重,全連接層不添加;在卷積神經(jīng)網(wǎng)絡(luò)的深度上,增加了1個全連接層Fc1,同時在Fc1和Fc2中添加Dropout。
將預(yù)處理后的圖像輸入,經(jīng)過一系列殘差塊處理后,輸出特征圖尺寸為7×7×2 048,再經(jīng)過平均池化層以及flatten展平處理后,輸出特征矩陣變?yōu)?×1×2 048,然后輸入到全連接層Fc1、Fc2,輸出特征圖的通道數(shù)分別為2 048、6,最后由Softmax分類器輸出6種淡水魚的對應(yīng)概率值,從而給出種類識別結(jié)果。
根據(jù)圖4中改進(jìn)ResNet50模型的網(wǎng)絡(luò)結(jié)構(gòu),需要對其激活函數(shù)及其初始化權(quán)重方式、全連接層及其Dropout、損失函數(shù)、優(yōu)化算法及其學(xué)習(xí)率衰減進(jìn)行改進(jìn)和優(yōu)化。
2.2.1 激活函數(shù)及其初始化權(quán)重方式
ReLU是神經(jīng)網(wǎng)絡(luò)中普遍使用的激活函數(shù),特點是運算速度快、性能好,但輸入x<0時函數(shù)輸出為零,反向傳播時損失梯度消失,導(dǎo)致參數(shù)不能進(jìn)行更新,造成神經(jīng)元死亡。為解決此問題,改進(jìn)ResNet50模型選擇CELU[25]為激活函數(shù),CELU為折點非線性且連續(xù)可微的指數(shù)平滑函數(shù),有利于神經(jīng)網(wǎng)絡(luò)的收斂和泛化性能。CELU激活函數(shù)的計算公式如下,取α為0.075,函數(shù)輸出值對比如圖5。
Kaiming正態(tài)分布在CELU激活函數(shù)中能夠加快模型的收斂,具有較好的效果[26],本文模型選擇Kaiming正態(tài)分布作為初始化權(quán)重方式。
2.2.2 全連接層及其Dropout
改進(jìn)ResNet50模型網(wǎng)絡(luò)結(jié)構(gòu)中增加了1個全連接層Fc1,可以通過神經(jīng)網(wǎng)絡(luò)提取更多的特征信息,同時添加Dropout能夠避免過擬合風(fēng)險,降低分類泛化誤差。將Dropout參數(shù)設(shè)置為0.5,網(wǎng)絡(luò)在訓(xùn)練過程中會隨機失活一半的神經(jīng)元;當(dāng)梯度反向傳播時,失活后斷開的神經(jīng)元將不參與參數(shù)的更新。Dropout正向傳播[27]如圖6所示,梯度由輸入神經(jīng)元傳至輸出神經(jīng)元。
2.2.3 損失函數(shù)選擇
本文選擇交叉損失熵(Cross Entropy Loss)作為改進(jìn)ResNet50模型的損失函數(shù),其在網(wǎng)絡(luò)訓(xùn)練時梯度更大,網(wǎng)絡(luò)優(yōu)化更快。表達(dá)式為
式中Loss表示損失函數(shù);M表示樣本數(shù),N表示類別數(shù);pij表示標(biāo)簽的真實值中第i個樣本的第j個類別的概率分布值;qij表示網(wǎng)絡(luò)的預(yù)測值中第i個樣本的第j個類別的概率分布值。
2.2.4 優(yōu)化器及其學(xué)習(xí)率衰減
學(xué)習(xí)率決定了神經(jīng)網(wǎng)絡(luò)模型的學(xué)習(xí)進(jìn)度,可以控制網(wǎng)絡(luò)模型權(quán)重的更新比率。Adam優(yōu)化算法[28]在損失梯度更新時,能夠為神經(jīng)網(wǎng)絡(luò)設(shè)置自適應(yīng)的學(xué)習(xí)率。本文中改進(jìn)ResNet50網(wǎng)絡(luò)模型選擇Adam優(yōu)化算法,默認(rèn)學(xué)習(xí)率為0.001,指數(shù)衰減率β1、β2分別為0.9、0.999,除零誤差項ε=1×10-8。
同時,學(xué)習(xí)率衰減可以極大提高Adam優(yōu)化算法的性能[29],在改進(jìn)ResNet50模型中,選擇余弦退火(Cosine Annealing)衰減學(xué)習(xí)率,并將其參數(shù)T_max設(shè)置為迭代次數(shù)的大小,在網(wǎng)絡(luò)訓(xùn)練過程中隨著網(wǎng)絡(luò)迭代次數(shù)的增加逐步減小,網(wǎng)絡(luò)收斂更快。
本文中模型訓(xùn)練的試驗環(huán)境為:基于Python3.6編程語言的Pytorch深度學(xué)習(xí)框架,操作系統(tǒng)為Windows 10,GPU為內(nèi)存4GB的英偉達(dá)GTX1050Ti,同時使用CUDA平臺加速網(wǎng)絡(luò)訓(xùn)練,基礎(chǔ)配置為Anaconda3、PyCharm。
將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,比例分別為75%、25%,通過訓(xùn)練集訓(xùn)練模型,在測試集上評估模型的性能,稱之為單次驗證的普通驗證方法。單次驗證方法通過對模型訓(xùn)練一次,能夠更快速的得出訓(xùn)練結(jié)果并優(yōu)化出超參數(shù)。
利用構(gòu)建的淡水魚圖像數(shù)據(jù)集,對ResNet50模型訓(xùn)練后,需要對模型的識別準(zhǔn)確率、損失、檢測時間等進(jìn)行評估。交叉驗證是一種模型訓(xùn)練和評估方式,它將數(shù)據(jù)集劃分后,圖像樣本在訓(xùn)練和測試過程中被重復(fù)使用,構(gòu)成多組互不相交的訓(xùn)練集和測試集[30]。K折交叉驗證中K的選擇與數(shù)據(jù)集大小有關(guān),其計算公式為
式中n表示數(shù)據(jù)集大小。
本文中淡水魚樣本圖像數(shù)據(jù)集大小為4 580,因此K值取4,劃分的每個數(shù)據(jù)集的大小為1 145,即訓(xùn)練集和測試集的比例分別為75%、25%。四折交叉驗證方法如圖7。
四折交叉驗證方法將整個數(shù)據(jù)集隨機劃分為D1、D2、D3、D4四個子數(shù)據(jù)集,之間無交集且樣本數(shù)量相同。依次從4個數(shù)據(jù)集中選擇1個作為測試集,另外3個作為訓(xùn)練集;然后進(jìn)行4次獨立的模型訓(xùn)練和測試過程,最后將4次模型的測試結(jié)果取平均值,作為此模型的泛化誤差。使用四折交叉驗證能夠?qū)Ψ夯`差有更好的近似,對模型的預(yù)測性能給出公正的評估。
引入遷移學(xué)習(xí)機制訓(xùn)練模型,將大數(shù)據(jù)集ImageNet上預(yù)訓(xùn)練的模型權(quán)重遷移到種類識別模型的訓(xùn)練過程中。由于深度學(xué)習(xí)中的圖像等數(shù)據(jù)集龐大,遷移學(xué)習(xí)能夠加速網(wǎng)絡(luò)模型收斂,增強分類模型的準(zhǔn)確率。
針對改進(jìn)ResNet50模型在不同種類和不同超參數(shù)模型上的對比,選擇單次驗證方法訓(xùn)練和評估模型的性能。針對改進(jìn)ResNet50網(wǎng)絡(luò)模型在不同數(shù)據(jù)集上的對比,采用四折交叉驗證方法來訓(xùn)練和評估模型的性能。模型的訓(xùn)練流程如圖8。
具體訓(xùn)練過程如下:
通過Pytorch深度學(xué)習(xí)框架中數(shù)據(jù)集加載方式,加載ResNet50-pre.pth預(yù)訓(xùn)練模型,從訓(xùn)練集中每次抽取的圖像數(shù)量為批大?。╞atch size)。利用Adam優(yōu)化算法和余弦退火來調(diào)整每個迭代次數(shù)(epoch)的學(xué)習(xí)率(learning rate),使其隨著迭代次數(shù)逐漸減小。每批次樣本在梯度下降時更新一次參數(shù),迭代次數(shù)設(shè)置為60。
在訓(xùn)練集上對改進(jìn)ResNet50進(jìn)行訓(xùn)練,在測試集上獲得每個迭代次數(shù)的模型測試結(jié)果。交叉損失熵函數(shù)使得損失逐漸減小,準(zhǔn)確率逐漸增加。
經(jīng)過60個迭代次數(shù)后網(wǎng)絡(luò)會逐步收斂,直至訓(xùn)練和測試的損失、準(zhǔn)確率穩(wěn)定。由于每次訓(xùn)練時模型損失或準(zhǔn)確率曲線在不同的迭代次數(shù)下有波動,因此保存測試準(zhǔn)確率最高的模型權(quán)重,同時得到損失和準(zhǔn)確率曲線。
Adam優(yōu)化算法中學(xué)習(xí)率設(shè)置過小,模型收斂速度較慢;設(shè)置過大則出現(xiàn)不收斂狀態(tài),損失函數(shù)會錯過最優(yōu)解[31]。選擇初始批大小為16,由于Adam優(yōu)化算法中學(xué)習(xí)率默認(rèn)值為0.001,因此取不同數(shù)量級的參數(shù)值,比較學(xué)習(xí)率為0.01、0.001、0.000 1、0.000 01時模型的訓(xùn)練效果。依次對學(xué)習(xí)率進(jìn)行粗調(diào)和微調(diào),學(xué)習(xí)率調(diào)節(jié)時對損失值和準(zhǔn)確率的影響如圖9所示。
由圖9可知,學(xué)習(xí)率為0.01、0.001時模型不收斂和收斂緩慢,且損失值較大;學(xué)習(xí)率為0.000 01時模型收斂比0.000 1較快,但在最后的損失偏高,故學(xué)習(xí)率為0.000 1時收斂效果較好。
由于學(xué)習(xí)率為0.000 1、0.000 01時訓(xùn)練結(jié)果相差不大,故對其進(jìn)行微調(diào),設(shè)置初始學(xué)習(xí)率為0.000 01、0.000 03、0.000 05、0.000 1、0.000 3、0.000 5,比較模型的訓(xùn)練效果。由圖9 b、圖9 c可知,學(xué)習(xí)率為0.000 03、0.000 05、0.000 1時,模型收斂較快,且收斂穩(wěn)定后損失較低。當(dāng)網(wǎng)絡(luò)迭代至50后,學(xué)習(xí)率為0.000 1時測試準(zhǔn)確率最高,因此選擇學(xué)習(xí)率為0.000 1。
批大小對神經(jīng)網(wǎng)絡(luò)模型性能的影響不如學(xué)習(xí)率敏感,但進(jìn)一步提升神經(jīng)網(wǎng)絡(luò)性能時,就要考慮批大小對模型性能的影響。確定了學(xué)習(xí)率為0.000 1后,不同的批大小對損失和準(zhǔn)確率的影響如圖10所示。
由圖10可知,當(dāng)批大小為8、64時損失較大,當(dāng)批大小為32、64時模型訓(xùn)練所需的內(nèi)存不足,出現(xiàn)內(nèi)存溢出現(xiàn)象;當(dāng)批大小為16時模型收斂較快,能獲得較高的準(zhǔn)確率,因此選擇批大小為16。
本文利用包含單一背景圖像和干擾背景圖像的淡水魚圖像數(shù)據(jù)集對改進(jìn)的ResNet50模型進(jìn)行訓(xùn)練,并與其他模型進(jìn)行對比。采用單次驗證法,將淡水魚圖像數(shù)據(jù)集按照75%、25%劃分為訓(xùn)練集和測試集,即包含淡水魚圖像3 435、1 145張。不同模型的預(yù)處理方式、初始化權(quán)重、優(yōu)化算法等基本設(shè)置保持相同,迭代次數(shù)為60,學(xué)習(xí)率和批大小分別取0.000 1和16,使用遷移學(xué)習(xí)進(jìn)行模型訓(xùn)練,則不同模型的種類識別結(jié)果對比如表 2所示。
表2 不同模型的種類識別結(jié)果對比Table 2 Comparison of the results of different kinds of models
從表2可知:
1)改進(jìn)ResNet50模型在訓(xùn)練時間上比VGG16、VGG19分別減小29.86、52.02 s,準(zhǔn)確率比VGG16、VGG19分別提升3.5%、3.93%,平均檢測時間比VGG16、VGG19分別減小0.327 9、0.431 8 s。由于VGG網(wǎng)絡(luò)模型的浮點運算量較大,網(wǎng)絡(luò)模型較復(fù)雜,因此改進(jìn)ResNet50比VGG各方面都要優(yōu)秀。
2)改進(jìn)ResNet50模型的準(zhǔn)確率比AlexNet、GoogleNet準(zhǔn)確率高5.77%、2.09%,在識別準(zhǔn)確率上優(yōu)勢明顯。
3)改進(jìn)ResNet50模型平均檢測時間、訓(xùn)練時間比經(jīng)典ResNet50模型分別增加0.029 8、15.89 s,但測試準(zhǔn)確率為96.94%,準(zhǔn)確率提升1.22%;單張圖像樣本的平均檢測時間為0.234 5 s,使用該模型不會明顯增加檢測所需時間。同時,在本文研究中,種類識別對測試準(zhǔn)確率的評估優(yōu)要先于平均檢測速度。因此本研究中改進(jìn)ResNet50模型的結(jié)構(gòu)和激活函數(shù)等優(yōu)化方式可以使模型獲得更好的種類識別效果。
通過構(gòu)建的淡水魚圖像數(shù)據(jù)集,分別使用單一背景圖像數(shù)據(jù)集、干擾背景圖像數(shù)據(jù)集以及包含單一背景圖像和干擾背景圖像的淡水魚圖像數(shù)據(jù)集對改進(jìn)ResNet50模型進(jìn)行訓(xùn)練和測試,模型的訓(xùn)練和評估方式采用四折交叉驗證。單一背景圖像數(shù)據(jù)集中,訓(xùn)練集和測試集的大小分別為2 025、675;干擾背景圖像數(shù)據(jù)集中,訓(xùn)練集和測試集的大小分別為1 410、470;淡水魚圖像數(shù)據(jù)集中,訓(xùn)練集和測試集的大小分別為3 435、1 145,結(jié)果如表3所示。
表3 改進(jìn)ResNet50模型在不同數(shù)據(jù)集種類識別結(jié)果對比Table 3 Comparison of species recognition results of improved ResNet50 in different data sets
從表3可知:
1)在單一背景圖像數(shù)據(jù)集上,模型測試準(zhǔn)確率達(dá)到100%,訓(xùn)練和測試損失分別為0.042 3、0.000 1。說明模型網(wǎng)絡(luò)收斂充分,對單一背景下淡水魚的識別效果較好,適用于具有單一背景的淡水魚種類識別和分級任務(wù)。
2)在干擾背景圖像數(shù)據(jù)集上,模型測試準(zhǔn)確率為91.17%,訓(xùn)練和測試損失分別為0.281 1、0.398 2,相比其他2種數(shù)據(jù)集上準(zhǔn)確率較低、損失較大,說明數(shù)據(jù)集數(shù)量小容易導(dǎo)致網(wǎng)絡(luò)收斂不足。
3)在淡水魚圖像數(shù)據(jù)集上,模型測試準(zhǔn)確率達(dá)到96.20%,訓(xùn)練和測試損失分別為0.087 9、0.184 8。相比干擾背景圖像數(shù)據(jù)集的種類識別效果,模型識別準(zhǔn)確率顯著提升5.03%,說明擴(kuò)充數(shù)據(jù)集后,模型的泛化能力和魯棒性增強,適用于具有單一背景、干擾背景的淡水魚種類識別和分級任務(wù)。
混淆矩陣在評判分類模型的優(yōu)劣和分類性能時具有較好的顯示性[22],在淡水魚種類識別上可以顯示出識別錯誤的魚體的數(shù)量。分別利用包含6種淡水魚樣本圖像的淡水魚圖像數(shù)據(jù)集及單一背景圖像數(shù)據(jù)集對改進(jìn)的ResNet50模型進(jìn)行訓(xùn)練,對不同應(yīng)用場景下模型的識別效果進(jìn)行可視化分析,在混淆矩陣中呈現(xiàn)的結(jié)果如圖11所示。
觀察2種混淆矩陣,淡水魚圖像數(shù)據(jù)集上,識別出的淡水魚數(shù)量基本分布在對角線上,出現(xiàn)個別偏差;單一背景圖像數(shù)據(jù)集上,每類淡水魚的識別結(jié)果均分布在對角線上,說明可以成功識別出所有淡水魚類別。
混淆矩陣中衡量模型性能的指標(biāo)通常有準(zhǔn)確率(Accuracy)、精確度(Precision)、召回率(Recall)和F1分?jǐn)?shù)(F1 score),公式如下
式中TP表示淡水魚樣本為真實種類,模型識別為正確的種類的數(shù)量;FN表示淡水魚樣本為真實種類,模型識別為錯誤的種類的數(shù)量;FP表示淡水魚樣本為錯誤種類,模型識別為正確的種類的數(shù)量;TN表示淡水魚樣本為錯誤種類,模型識別為錯誤的種類的數(shù)量。準(zhǔn)確率為所有樣本被正確分類的概率,即為模型整體的識別準(zhǔn)確率;精確度表示所有預(yù)測類別中,模型預(yù)測正確的比例;召回率表示所有真實類別中,模型預(yù)測正確的比例;F1分?jǐn)?shù)是精確率和召回率的綜合評價指標(biāo),在兩者中間取得了很好的平衡。
根據(jù)圖11中混淆矩陣,得到不同數(shù)據(jù)集上6種淡水魚種類識別試驗結(jié)果如表4所示。
表4 不同數(shù)據(jù)集上淡水魚種類識別試驗結(jié)果Table 4 Experimental results of freshwater fish species identification under the different data set
由表4分析得出結(jié)論:
1)在淡水魚圖像數(shù)據(jù)集上訓(xùn)練模型,模型的精確度、召回率和F1分?jǐn)?shù)都比較高,160個鳙魚樣本中有9個識別錯誤,150個鯉魚樣本中有10個識別錯誤,這兩類的識別效果相對有偏差,但整體的準(zhǔn)確率達(dá)到了96.94%,即表2中改進(jìn)ResNet50的準(zhǔn)確率,說明模型識別準(zhǔn)確率較高。
2)在單一背景圖像數(shù)據(jù)集上訓(xùn)練模型,由于圖像的背景干擾很小,因此精確度、召回率和F1分?jǐn)?shù)都達(dá)到了100%,說明ResNet50模型對單一背景淡水魚的識別準(zhǔn)確率為100%,模型識別效果優(yōu)秀。
這表明改進(jìn)ResNet50模型性能優(yōu)越,能夠適用于單一背景下及干擾背景下魚體的種類識別。
為了進(jìn)一步說明本文改進(jìn)ResNet50模型中卷積層的工作原理,根據(jù)圖4中改進(jìn)ResNet50模型的網(wǎng)絡(luò)結(jié)構(gòu),分別對卷積塊1和殘差塊2、3、4、5的最后一個卷積層進(jìn)行輸出特征可視化,結(jié)果如圖12所示。
由圖12可知,由卷積塊1到卷積塊5的最后一個卷積層,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)、提取的特征信息由整體至局部不斷細(xì)化。圖12 b、圖12 c中Conv Block1_conv1、Conv Block 2_3_conv3卷積層保留了大部分原始魚體的圖像信息;圖12 d、圖12 e中卷積層Conv Block 3_4_conv3、Conv Block 4_6_conv3的卷積核,對顏色、邊緣形成的部分紋理進(jìn)行了描述,更多地表達(dá)圖像的線條、輪廓等抽象特征;圖12 f中最后一個卷積層Conv Block 5_3_conv3的卷積核提取圖像的紋理和特定信息,僅僅保留了圖像的高階像素信息。通過對卷積層的輸出特征進(jìn)行可視化,能夠反映卷積層提取特征的過程和原理,以及神經(jīng)網(wǎng)絡(luò)底層的特征信息。
本文提出了一種基于改進(jìn)ResNet50模型的淡水魚種類識別方法,以鳊魚、鳙魚、鯉魚、鯽魚、草魚、白鰱6種大宗淡水魚為研究對象,搭建基于機器視覺的淡水魚圖像采集系統(tǒng)獲取單一背景的淡水魚圖像2 700 張,同時基于互聯(lián)網(wǎng)搜索6種淡水魚圖像1 880張,構(gòu)建了淡水魚種類識別圖像數(shù)據(jù)集。以Pytorch為深度學(xué)習(xí)框架,在經(jīng)典ResNet50基礎(chǔ)上,增加全連接層Fc1以及Dropout、引入遷移學(xué)習(xí)進(jìn)行模型訓(xùn)練、選擇CELU為激活函數(shù)、使用Adam優(yōu)化算法更新梯度并嵌入了余弦退火方法衰減學(xué)習(xí)率等對6種淡水魚進(jìn)行種類識別。主要結(jié)論如下:
1)在單次驗證方法下,選用包含單一背景圖像和干擾背景圖像的淡水魚圖像數(shù)據(jù)集對改進(jìn)ResNet50模型進(jìn)行訓(xùn)練,學(xué)習(xí)率為0.000 1、批大小為16;對淡水魚種類進(jìn)行識別準(zhǔn)確率可達(dá)到96.94%,相比經(jīng)典ResNet50模型提高了1.22%,對單張淡水魚圖像樣本的平均檢測時間為0.234 5 s。
2)通過四折交叉驗證方法對比研究了不同場景下的識別效果,單一背景圖像數(shù)據(jù)集下模型識別準(zhǔn)確率可達(dá)100%,淡水魚圖像數(shù)據(jù)集下模型識別準(zhǔn)確率為96.20%,說明模型泛化能力較強,適用于不同背景下的應(yīng)用。
3)通過混淆矩陣對種類識別結(jié)果可視化分析,在淡水魚圖像數(shù)據(jù)集上訓(xùn)練模型,整體的預(yù)測準(zhǔn)確率達(dá)到了96.94%;在單一背景數(shù)據(jù)集上訓(xùn)練模型時,每類淡水魚的精確度、召回率和F1分?jǐn)?shù)均可達(dá)到100%。進(jìn)一步驗證了改進(jìn)ResNet50模型的性能優(yōu)越,能夠應(yīng)用于不同背景下的6種淡水魚種類識別。