張方言,趙 夢,周弈志,胥婧雯,李海清,程思奇,吳俊峰,于 紅
(1 大連海洋大學(xué)信息工程學(xué)院,遼寧 大連 116023;2 設(shè)施漁業(yè)教育部重點實驗室,遼寧 大連 116023;3 遼寧省海洋信息技術(shù)重點實驗室,遼寧 大連 116023)
紅鰭東方鲀(Takifugurubripes)是一種名貴的海水魚,是近年來工廠化循環(huán)水養(yǎng)殖的主要品種。隨著養(yǎng)殖規(guī)模不斷擴(kuò)大和養(yǎng)殖密度不斷提高,病害問題時有發(fā)生,如果不能及時檢測病魚,將會導(dǎo)致疾病蔓延,給養(yǎng)殖企業(yè)帶來巨大的經(jīng)濟(jì)損失[1-2]。
紅鰭東方鲀受細(xì)菌感染后會在皮膚表面出現(xiàn)變色或腐爛等現(xiàn)象[3],傳統(tǒng)的紅鰭東方鲀病魚檢測主要通過養(yǎng)殖技術(shù)人員人工觀察進(jìn)行判斷,一方面耗費人力,另一方面不能保證及時性和準(zhǔn)確性。隨著人工智能技術(shù)的發(fā)展,機(jī)器視覺在魚類檢測方面得到了廣泛的應(yīng)用[4-6]。孟祥輝等[7]提出了一種基于機(jī)器視覺的養(yǎng)殖大黃魚弧菌病檢測技術(shù),對大黃魚的圖像信息進(jìn)行處理,把大黃魚的顏色空間轉(zhuǎn)換到HSV或者HIS空間,提取大黃魚的圖像顏色直方圖,最后通過分析顏色直方圖發(fā)現(xiàn)病魚。胡靜等[8]提出一種基于機(jī)器視覺的鯉科病魚圖像快速處理方法,通過對病魚皮膚圖像進(jìn)行特征提取和魚類常見病病斑圖像分割,從而設(shè)計出一種病魚彩色圖像快速處理方法。這兩項工作均采用傳統(tǒng)的機(jī)器視覺方法進(jìn)行病魚檢測,檢測的準(zhǔn)確率不夠高。隨著深度學(xué)習(xí)的發(fā)展,深度學(xué)習(xí)在目標(biāo)檢測[9-11]方面取得了顯著的成效。Chen等[12]提出的基于深度學(xué)習(xí)的自動魚類分類系統(tǒng),在魚類分類中取得了良好的成效;Chuang等[13]提出水下魚物種識別的有監(jiān)督和無監(jiān)督的特征提取方法,在魚類物種識別中取得了良好的效果;陳英義等[14]提出基于FTVGG16卷積神經(jīng)網(wǎng)絡(luò)的魚類識別方法,對魚類特征進(jìn)行提取,在魚類識別中取得了良好的成效; Iqbal等[15]提出一種使用深度卷積神經(jīng)網(wǎng)絡(luò)對魚類進(jìn)行識別和分類的自動化系統(tǒng),為魚類的檢測和分類提供了新方法;Chhabra等[16]提出的一種用于魚類自動分類檢測的深度學(xué)習(xí)方法,采用混合深度學(xué)習(xí)模型對魚類進(jìn)行分類檢測,為魚類的分類檢測提供了新思路;賈宇霞等[17]提出的基于顯著性增強和遷移學(xué)習(xí)的魚類識別研究,為魚類的識別提供了新手段。上述研究結(jié)果表明,這些利用深度學(xué)習(xí)技術(shù)的圖像識別案例預(yù)示著深度學(xué)習(xí)在紅鰭東方鲀病魚檢測中的可能性,并為紅鰭東方鲀病魚的識別提供了理論依據(jù)。
然而深度學(xué)習(xí)需要大量的數(shù)據(jù),并且要求訓(xùn)練集、驗證集和測試集符合一定的數(shù)據(jù)分布,在紅鰭東方鲀病魚識別領(lǐng)域,存在著可用的紅鰭東方鲀病魚數(shù)據(jù)較少、檢測準(zhǔn)確率不高等問題。提出了一種基于ResNet50和遷移學(xué)習(xí)的紅鰭東方鲀病魚檢測方法。
本研究主要對紅鰭東方鲀健康魚和病魚進(jìn)行分類檢測,因此需要搜集紅鰭東方鲀健康魚和病魚圖像數(shù)據(jù)。數(shù)據(jù)主要來自紅鰭東方鲀養(yǎng)殖場水下攝像頭拍攝、手機(jī)拍攝和在網(wǎng)上下載,共獲取數(shù)據(jù)樣本850幅,水下攝像頭和手機(jī)拍攝圖片共650幅,網(wǎng)上下載200幅。其中紅鰭東方鲀病魚圖片136幅,健康紅鰭東方鲀圖片714幅。在拍攝過程中,拍攝了紅鰭東方鲀不同位置和不同姿態(tài)的圖片。部分拍攝的健康紅鰭東方鲀示例如圖1a所示,圖1b是網(wǎng)上下載的健康紅鰭東方鲀,圖1c是手機(jī)拍攝的紅鰭東方鲀病魚。
圖1 紅鰭東方鲀示例Fig 1 Example of Takifugu rubripes
由于原始數(shù)據(jù)來源不一,尺寸不同,格式有差異,無法放在同一個模型中訓(xùn)練,為了保證數(shù)據(jù)的規(guī)格、尺寸相同,格式一致,需要進(jìn)行數(shù)據(jù)預(yù)處理,主要包括以下預(yù)處理方法:
(1)圖像樣本歸一化:由于拍攝的紅鰭東方鲀圖像和網(wǎng)上下載的圖像尺寸不同,而卷積神經(jīng)網(wǎng)絡(luò)模型要求輸入圖片尺寸相同,以便卷積層對圖像進(jìn)行卷積處理,因此,使用OpenCV中的cv2.resize()函數(shù)將數(shù)據(jù)集中所有的紅鰭東方鲀圖像數(shù)據(jù)進(jìn)行歸一化處理,尺寸統(tǒng)一224×224(像素)。
(2)圖像像素值處理:由于不同圖像數(shù)據(jù)的格式不同,為了保證數(shù)據(jù)格式的一致性,將JPG格式的圖像轉(zhuǎn)換為RGB三通道的矩陣向量存儲。
由于原始數(shù)據(jù)樣本數(shù)比較少,特別是病魚樣本獲取困難,而樣本數(shù)量少將會大大影響深度學(xué)習(xí)的學(xué)習(xí)效果,因此需要采用數(shù)據(jù)增廣[18-19]的方式增加病魚樣本數(shù),根據(jù)紅鰭東方鲀養(yǎng)殖環(huán)境的特點和病魚發(fā)病的癥狀特點,提出了翻轉(zhuǎn)、色度變化、明暗變化、旋轉(zhuǎn)、隨機(jī)裁剪和添加噪聲等數(shù)據(jù)增廣方法。
(1)翻轉(zhuǎn):對圖像進(jìn)行水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)和先水平翻轉(zhuǎn)再垂直翻轉(zhuǎn)。(2)色度變化:色度增強因子為0.5,對圖像色度進(jìn)行改變。(3)明暗變化:明暗增強因子為0.4和1.6,對圖片的亮度進(jìn)行改變。(4)旋轉(zhuǎn):分別對圖片進(jìn)行30°和60°旋轉(zhuǎn)。(5)隨機(jī)裁剪:對圖片進(jìn)行不同部位的裁剪。(6)添加噪聲:對圖片加入信噪比為0.9的椒鹽噪聲或者高斯噪聲。
對圖片進(jìn)行翻轉(zhuǎn)、旋轉(zhuǎn)和隨機(jī)裁剪,模擬采集樣本時拍攝的隨機(jī)性;色度的變化、明暗變化和飽和度變化,模擬光照和顏色的差異,并保證圖片符合現(xiàn)實拍攝情況;添加噪聲,模擬拍攝時產(chǎn)生的噪聲。通過數(shù)據(jù)增廣,把數(shù)據(jù)集擴(kuò)充至2 461張,其中病魚數(shù)量為421張,健康魚數(shù)量為2 040張。數(shù)據(jù)預(yù)處理結(jié)果示例如圖2所示。
圖2 部分預(yù)處理圖片F(xiàn)ig.2 Partial preprocessing images
對訓(xùn)練集、驗證集和測試集按照6∶2∶2的比例進(jìn)行劃分,即從擴(kuò)充后的2 461幅圖片中選取健康的紅鰭東方鲀1 224幅圖片和紅鰭東方鲀病魚253幅圖片進(jìn)行標(biāo)注,作為訓(xùn)練集,408幅健康紅鰭東方鲀圖片和84幅紅鰭東方鲀病魚圖片作為驗證集,其余的408幅健康紅鰭東方鲀圖片和84幅紅鰭東方鲀病魚圖片作為測試集。
針對傳統(tǒng)機(jī)器學(xué)習(xí)在目標(biāo)識別方面的性能不足、人工提取特征復(fù)雜性高、深度學(xué)習(xí)在網(wǎng)絡(luò)深度較深時會出現(xiàn)網(wǎng)絡(luò)退化、卷積過程中造成圖片縮小會導(dǎo)致信息缺失以及紅鰭東方鲀病魚樣本少等問題,提出了一種基于ResNet50網(wǎng)絡(luò)和遷移學(xué)習(xí)的紅鰭東方鲀病魚檢測方法。因為深度學(xué)習(xí)需要用大量的數(shù)據(jù)進(jìn)行訓(xùn)練才能取得較好的效果,而現(xiàn)實生活中可用的紅鰭東方鲀病魚樣本數(shù)量較少,直接使用深度學(xué)習(xí)模型訓(xùn)練難以取得好的效果,而遷移學(xué)習(xí)是解決小樣本學(xué)習(xí)的有效方法[20-22]。為解決紅鰭東方鲀病魚檢測樣本少的問題, 采用了遷移學(xué)習(xí)的方法優(yōu)化紅鰭東方鲀病魚檢測模型。
考慮到遷移的源數(shù)據(jù)需要有足夠大量的樣本數(shù)據(jù),因此選擇ImageNet數(shù)據(jù)集[23]作為源數(shù)據(jù),雖然ImageNet數(shù)據(jù)集與紅鰭東方鲀圖像數(shù)據(jù)集存在差異,但是ImageNet數(shù)據(jù)量足夠大,而且圖像的邊緣、顏色和紋理特征是不變的、通用的,可以用ImageNet學(xué)習(xí)圖像的底層特征,再將學(xué)習(xí)到的底層特征遷移到紅鰭東方鲀病魚檢測模型中,因此提出基于ResNet50和遷移學(xué)習(xí)的紅鰭東方鲀病魚檢測模型,模型結(jié)構(gòu)如圖3所示。首先,在ImageNet數(shù)據(jù)集上對ResNet50深度學(xué)習(xí)網(wǎng)絡(luò)模型進(jìn)行預(yù)訓(xùn)練;其次,將ResNet50深度學(xué)習(xí)網(wǎng)絡(luò)模型卷積模塊學(xué)習(xí)到的邊緣、顏色和紋理這些圖像共有的底層特征,遷移到用于檢測紅鰭東方鲀病魚的網(wǎng)絡(luò)模型的殘差網(wǎng)絡(luò)層作為初始化參數(shù);然后,把提取到的特征圖作為輸入對紅鰭東方鲀病魚檢測模型進(jìn)行訓(xùn)練,并在ResNet50網(wǎng)絡(luò)結(jié)構(gòu)的最后一層卷積層后加入反卷積層將圖像恢復(fù)到原像素空間內(nèi),以達(dá)到恢復(fù)細(xì)節(jié)信息的目的;最后,連接3個全連接層以增強模型的特征表達(dá)能力。主要包括預(yù)訓(xùn)練、遷移學(xué)習(xí)、反卷積和病魚檢測4個步驟,下面詳細(xì)闡述每一部分的具體內(nèi)容。
圖3 基于ResNet50網(wǎng)絡(luò)和遷移學(xué)習(xí)紅鰭東方鲀病魚檢測模型Fig.3 Detection model of Takifugu rubripes based on ResNet50 and Transfer learning
由于深度學(xué)習(xí)需要大量訓(xùn)練數(shù)據(jù),紅鰭東方鲀病魚數(shù)量較少,所以采用了遷移學(xué)習(xí)的方法,在遷移學(xué)習(xí)的過程中首先要進(jìn)行預(yù)訓(xùn)練,預(yù)訓(xùn)練過程為:在大型數(shù)據(jù)集ImageNet上利用ResNet50網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,從而得到預(yù)訓(xùn)練權(quán)重作為網(wǎng)絡(luò)的初始化參數(shù)。RestNet50殘差網(wǎng)絡(luò)[24-25]是在現(xiàn)有訓(xùn)練深度網(wǎng)絡(luò)基礎(chǔ)上,提出的一種具有易優(yōu)化、計算負(fù)擔(dān)小等優(yōu)點的殘差學(xué)習(xí)框架。殘差的設(shè)計是用來解決退化和梯度問題,使得網(wǎng)絡(luò)的性能在深度增加的同時也得以提升,而且殘差塊中的跳躍連接采用的是恒等映射,并沒有引入額外參數(shù),也沒增加計算復(fù)雜度,因此采用ResNet50網(wǎng)絡(luò)對紅鰭東方鲀病魚進(jìn)行預(yù)訓(xùn)練。
RestNet50中包含了49個卷積層和1個全連接層,第二階段至第五階段中的IDBLOCK 是不改變維度的殘差塊,CONVBLOCK是添加維度的殘差塊,每個殘差塊包含3個卷積層,所以有1+3×(3+4+6+3)=49個卷積層,結(jié)構(gòu)如圖4所示。其中CONV是卷積操作,Batch Norm是正則化處理,也就是常說的BN,ReLU是激活函數(shù),MAXPOOL和AvgPOOL是最大池化層和平均池化層。由圖4可看出ResNet50是由多個殘差塊堆疊起來的,用這些殘差塊可以訓(xùn)練深層網(wǎng)絡(luò)。
圖4 ResNet50模型Fig.4 ResNet50 model
殘差塊如圖5所示,其中x表示輸入,F(xiàn)(x)表示殘差塊在第二層激活函數(shù)之前的輸出,W1和W2表示第一層和第二層的權(quán)重,H(x)是最后殘差塊的輸出,在第二層輸出值激活前加入x,該路徑稱作shortcut連接。
圖5 殘差塊Fig.5 Residual Block
當(dāng)沒有shortcut(即圖5右側(cè)從x到⊕的箭頭)時,殘差塊就是一個普通的兩層網(wǎng)絡(luò),此時學(xué)習(xí)的目標(biāo)是H(x)=F(x),如圖5所示,第二層網(wǎng)絡(luò)在激活函數(shù)之前的輸出為H(x),如果在該兩層網(wǎng)絡(luò)中,最優(yōu)的輸出就是輸入x,那么對于沒有 shortcut的傳統(tǒng)網(wǎng)絡(luò),就需要將其優(yōu)化成H(x)=x;對于殘差網(wǎng)絡(luò)結(jié)構(gòu),其學(xué)習(xí)的目標(biāo)是H(x)=F(x)+x,如果最優(yōu)輸出是x,則只需要將F(x)=H(x)-x優(yōu)化為0,即此時網(wǎng)絡(luò)只需使得H(x)=x,也就是恒等映射,其定義如公式(1)和公式(2)所示。
F(x)=W2g(W1x)
(1)
H(x)=F(x)+x
(2)
式中:W1和W2表示第一層和第二層的權(quán)重,表示ReLU激活函數(shù)。此時只需要把F(x)=0,就可以轉(zhuǎn)化成前面所說的恒等映射函數(shù),即:H(x)=0。此時,問題轉(zhuǎn)換成殘差函數(shù)問題,其定義如公式(3)所示。
F(x)=H(x)-x
(3)
在ResNet50殘差網(wǎng)絡(luò)中,通過使用16個殘差塊的堆疊,構(gòu)建出了深度達(dá)到50層的卷積神經(jīng)網(wǎng)絡(luò),從而使得網(wǎng)絡(luò)對圖像的特征提取能力更強,識別準(zhǔn)確率也更高。而且殘差塊中捷徑連接采用恒等映射,使得其中一層輸出可以跨過幾層作為后面某一層的輸出,直接進(jìn)行恒等映射操作,沒有引入額外的參數(shù)和計算復(fù)雜度,因此用包含16個殘差塊堆疊的ResNet50殘差網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練。
遷移學(xué)習(xí)[26]是指把已經(jīng)訓(xùn)練好的模型參數(shù)遷移到新的模型上幫助訓(xùn)練,主要思想是通過在一個已有的大型數(shù)據(jù)集上預(yù)訓(xùn)練一個CNN,然后使用預(yù)訓(xùn)練好的CNN權(quán)重作為初始化權(quán)值,遷移到目標(biāo)數(shù)據(jù)集上進(jìn)行訓(xùn)練和微調(diào),在沒有足夠樣本的情況下,訓(xùn)練過程中容易出現(xiàn)訓(xùn)練困難和過擬合問題,遷移學(xué)習(xí)可以解決由于樣本少而出現(xiàn)問題。為了解決紅鰭東方鲀病魚樣本少的問題,提出基于ResNet50網(wǎng)絡(luò)和遷移學(xué)習(xí)的紅鰭東方鲀病魚識別方法,在ImageNet數(shù)據(jù)集上進(jìn)行遷移,相對于紅鰭東方鲀病魚數(shù)據(jù)集,ImageNet數(shù)據(jù)集數(shù)據(jù)量和種類都非常豐富,盡管ImageNet數(shù)據(jù)集中紅鰭東方鲀病魚圖片數(shù)量不多,但是主要通過顏色和紋理等特征對紅鰭東方鲀病魚識別,因此特征遷移模型更多的關(guān)注還是特征學(xué)習(xí)的能力。所以用ImageNet數(shù)據(jù)集作為源數(shù)據(jù)可以提取到更多的圖像空間信息特征,即顏色特征和紋理邊緣特征等,從而遷移到紅鰭東方鲀病魚識別的問題上。首先將已在ImageNet數(shù)據(jù)上預(yù)訓(xùn)練好的ResNet50網(wǎng)絡(luò)中全連接層之前部分保留參數(shù)遷移過來,然后采用訓(xùn)練模型全層的遷移學(xué)習(xí)方法對輸入的紅鰭東方鲀病魚和健康魚數(shù)據(jù)集進(jìn)行訓(xùn)練,從而得到基于ResNet50網(wǎng)絡(luò)和遷移學(xué)習(xí)的紅鰭東方鲀病魚檢測模型,最后進(jìn)行模型預(yù)測。
反卷積[27-30](deconvolution)也稱為轉(zhuǎn)置卷積,卷積操作是將圖片經(jīng)過卷積后得到特征圖,而反卷積操作剛好相反,現(xiàn)假設(shè)輸入圖片為x,特征圖為y,卷積操作可表示為y=Cx根據(jù)矩陣的運算性質(zhì)可知,反卷積的過程則是x=CTy。采用卷積過程中轉(zhuǎn)置后的卷積核對特征圖進(jìn)行反卷積,并且由于其相反于卷積操作的特性還可以將特征圖放大。之所以使用反卷積是因為卷積核池化的過程中,會使特征圖變得越來越小,并且卷積層數(shù)越多,特征圖就越小,使用反卷積保證了特征信息盡可能少的丟失。卷積操作尺寸的公式如下:
(4)
現(xiàn)在通過反卷積將特征圖還原到原圖尺寸大小,計算公式為:
i=s(o-1)+k-2p
(5)
式中:o表示輸出特征圖尺寸,i表示輸入特征圖尺寸,k表示卷積核尺寸,s表示步長,p表示邊緣擴(kuò)充。
反卷積對每一步長的圖片進(jìn)行放大的示意圖如下所示,其中圖6 a表示對卷積后的第1個像素點進(jìn)行放大;圖6 b表示對第2個像素點進(jìn)行放大;圖6 c表示對第3個像素進(jìn)行放大;圖6 d表示對第4個像素點進(jìn)行放大。
圖6 反卷積示意圖Fig.6 Schematic diagram of deconvolution
提出的模型在ResNet50網(wǎng)絡(luò)的最后一層卷積池化后加入反卷積層,利用反卷積網(wǎng)絡(luò)對特征圖進(jìn)行上采樣并學(xué)習(xí)特征,最后將特征圖上采樣到原圖像的像素空間,使得特征圖得以恢復(fù),運用反卷積這一特性來補償細(xì)節(jié)信息,從而使網(wǎng)絡(luò)學(xué)習(xí)到更多的特征信息,準(zhǔn)確進(jìn)行特征提取,然后計算損失反饋到網(wǎng)絡(luò)中訓(xùn)練,對紅鰭東方鲀圖像進(jìn)行檢測。加入反卷積后,逐漸將特征圖放大到原圖大小,一方面保證了特征圖信息盡可能少的丟失,另一方面反卷積層也要進(jìn)行特征學(xué)習(xí),幫助更準(zhǔn)確地完成紅鰭東方鲀病魚的檢測。
基于ResNet50網(wǎng)絡(luò)和遷移學(xué)習(xí)的紅鰭東方鲀病魚檢測,首先在建立的紅鰭東方鲀數(shù)據(jù)集上完成紅鰭東方鲀病魚檢測模型的訓(xùn)練,然后將測試集圖片輸入到訓(xùn)練完成的檢測模型,如果是紅鰭東方鲀病魚,則輸出紅鰭東方鲀病魚及預(yù)測準(zhǔn)確率,如果不是紅鰭東方鲀病魚,則檢測結(jié)果為非病魚。
試驗環(huán)境為intel xeon E5-2630 v3 2.4GHZ處理器,6 GB內(nèi)存,操作系統(tǒng)為Ubuntu16.04 LTS 64 bit。軟件選擇Anaconda python 3.6,開源深度學(xué)習(xí)框架pytorch,版本為1.1.0。
試驗評價病魚檢測準(zhǔn)確率(accuracy)如公式(6)所示。
(6)
式中:A表示準(zhǔn)確率(%),A的值越大代表模型的性能越好;x表示檢測正確樣本數(shù)(條);y表示檢測樣本總數(shù)(條)。
為驗證本研究中所提出的方法對魚類病魚檢測的結(jié)果,設(shè)計了以下對比試驗:(1)對載入權(quán)重后訓(xùn)練所有參數(shù)(訓(xùn)練預(yù)訓(xùn)練網(wǎng)絡(luò)全層)與凍結(jié)ResNet50其他層參數(shù)只訓(xùn)練全連接層進(jìn)行對比試驗。(2)運用遷移學(xué)習(xí)ResNet50網(wǎng)絡(luò)和在ResNet50網(wǎng)絡(luò)模型的基礎(chǔ)上對其進(jìn)行優(yōu)化,在特征提取模塊運用殘差網(wǎng)絡(luò)層加反卷積層進(jìn)行試驗對比。(3)分別在ResNet18、ResNet34、ResNet101和ResNet152等不同深度殘差網(wǎng)絡(luò)上進(jìn)行試驗得出檢測結(jié)果與本研究基于ResNet50和遷移學(xué)習(xí)的方法進(jìn)行對比。(4)本研究方法分別與PD2SE-Net計算機(jī)輔助植物病害診斷和嚴(yán)重程度估計網(wǎng)絡(luò)[31]、多尺度融合卷積神經(jīng)網(wǎng)絡(luò)的黃瓜病害葉片圖像分割方法[32]、改進(jìn)Faster R-CNN的田間苦瓜葉部病害檢測[33]中的方法進(jìn)行對比試驗。
為了驗證基于ResNet50網(wǎng)絡(luò)和遷移學(xué)習(xí)的紅鰭東方鲀病魚檢測模型的性能,本研究在訓(xùn)練過程中選擇Adam優(yōu)化算法進(jìn)行訓(xùn)練;其中Dropout設(shè)置為0.5,避免過擬合現(xiàn)象的發(fā)生;初始學(xué)習(xí)率lr設(shè)置為0.000 1;設(shè)置批尺寸batch_size設(shè)置為8,即每次從訓(xùn)練樣本中提取8個樣本進(jìn)行訓(xùn)練;訓(xùn)練總輪數(shù)epoch設(shè)置為40,每次通過生成器從內(nèi)存中取出batch_size個樣本參與一次梯度下降的參數(shù)更新。使用以上參數(shù)進(jìn)行試驗,試驗結(jié)果如圖7所示,在訓(xùn)練過程中,本研究方法的每次epoch的accuracy和loss都達(dá)到了一個很好的結(jié)果,loss得到了一個很好的收斂,紅鰭東方鲀病魚檢測精度達(dá)到了99%。由accuracy的曲線可以看出,基于ResNet50網(wǎng)絡(luò)和遷移學(xué)習(xí)的紅鰭東方鲀病魚檢測中,在第11次迭代之后準(zhǔn)確率就保持不變了,說明所提出的方法并不需要很多次迭代就能達(dá)到一個很好的效果,遷移學(xué)習(xí)降低了訓(xùn)練成本,加快了訓(xùn)練速度。
圖7 準(zhǔn)確率和loss值變化曲線Fig.7 Curve of accuracy and loss value
經(jīng)試驗表明:凍結(jié)ResNet50其他層參數(shù)只訓(xùn)練全連接層準(zhǔn)確率為94.6%,運用訓(xùn)練全部層的遷移學(xué)習(xí)的方法對紅鰭東方鲀病魚檢測的準(zhǔn)確率達(dá)到了98.6%,表明了本研究所用數(shù)據(jù)集和ImageNet數(shù)據(jù)集,還是有一定的差別,只對全連接層進(jìn)行訓(xùn)練只學(xué)習(xí)了一些底層特征,無法把病魚特征全部表達(dá)出來,然而對其重新訓(xùn)練全部層,使得模型不但學(xué)習(xí)到了一些共有的底層特征,而且使得模型對病魚的特征表達(dá)能力更強;運用遷移學(xué)習(xí)ResNet50網(wǎng)絡(luò)的方法準(zhǔn)確率為98.6%,然而,加入反卷積層后,在紅鰭東方鲀病魚的檢測上準(zhǔn)確率達(dá)到了99%,準(zhǔn)確率提高了0.4%,說明在特征提取模塊采用殘差網(wǎng)絡(luò)加反卷積層,有效地學(xué)習(xí)了在卷積過程中圖片縮小的過程中丟失的一些信息,反卷積的過程中,使得丟失的信息得到了補償,從而使得模型精度有所提升;在ResNet18、ResNet34、ResNet101、ResNet152及基于ResNet50和遷移學(xué)習(xí)的方法準(zhǔn)確率分別是88.2%、92.4%、92.8%、93.4%和99%。從試驗結(jié)果可以看出,與不同深度殘差網(wǎng)絡(luò)進(jìn)行對比,本研究方法在紅鰭東方鲀病魚檢測上精確度達(dá)到了99%,高于其他不同深度的殘差網(wǎng)絡(luò),表明了本研究方法,相對于其他不同深度的殘差網(wǎng)絡(luò),在病魚的特征提取能力上更強,病魚的檢測精度也更高,對紅鰭東方鲀病魚的檢測上有著很好的效果;(4)PD2SE-Net:計算機(jī)輔助植物病害診斷和嚴(yán)重程度估計網(wǎng)絡(luò)、多尺度融合卷積神經(jīng)網(wǎng)絡(luò)的黃瓜病害葉片圖像分割方法、改進(jìn)Faster R-CNN的田間苦瓜葉部病害檢測中的方法準(zhǔn)確率分別是98%、92%和86%,而本研究方法準(zhǔn)確度達(dá)到了99%,與其相比,本研究方法解決了樣本少和過擬合的問題,提高了病魚檢測的準(zhǔn)確率,使得網(wǎng)絡(luò)在學(xué)習(xí)病魚特征時,網(wǎng)絡(luò)對病魚特征的表達(dá)能力更強,具有較好的泛化性。
通過以上對比試驗表明,本研究方法可達(dá)99%的精度,但是仍存在約1%的誤差,影響因素主要有以下幾方面:(1)數(shù)據(jù)量較少,深度學(xué)習(xí)是以海量數(shù)據(jù)作為支撐的,運用遷移學(xué)習(xí)的方法在一定程度上解決了數(shù)據(jù)少的問題,但是,由于整體數(shù)據(jù)量較少,因此還有一些紅鰭東方鲀病魚特征無法識別,從而產(chǎn)生誤差。(2)水中拍攝噪聲影響,由于有些圖片來源于水中拍攝,從而產(chǎn)生一些噪聲,如氣泡等,對紅鰭東方鲀表面產(chǎn)生影響,導(dǎo)致模型檢測產(chǎn)生誤差。(3)紅鰭東方鲀病魚特征表現(xiàn)不明顯,通過模型對測試集進(jìn)行檢測,并對召回測試集中的檢測結(jié)果進(jìn)行分析。發(fā)現(xiàn)有些病魚特征表現(xiàn)不明顯,使得模型誤識別,產(chǎn)生誤差。
為了解決紅鰭東方鲀病魚樣本少和準(zhǔn)確率不高的問題,提出一種基于ResNet50網(wǎng)絡(luò)和遷移學(xué)習(xí)的紅鰭東方鲀病魚檢測方法。本研究方法可以自動地提取病魚特征,并且模型對病魚檢測達(dá)到了一個很好的效果,解決了傳統(tǒng)人工檢測病魚耗時耗力的問題,為檢測紅鰭東方鲀病魚提供了有效指導(dǎo)和思路。但是,模型仍存在一點誤差,下一步工作主要為以下兩方面:(1)對所構(gòu)建的紅鰭東方鲀病魚數(shù)據(jù)集進(jìn)行擴(kuò)充,建立一個更大、病魚種類更多的數(shù)據(jù)集進(jìn)行訓(xùn)練,提高模型的泛化性。(2)對模型結(jié)構(gòu)和參數(shù)進(jìn)一步優(yōu)化,提高模型對紅鰭東方鲀病魚檢測的準(zhǔn)確率。
□