《續(xù)》
第 4 章 豬胴體圖像分級模型 CNN-P
本章主要構(gòu)建了針對豬胴體圖像分級的卷積神經(jīng)網(wǎng)絡(luò)模型,選用TensorFlow計算框架,采用以AlexNet網(wǎng)絡(luò)模型為藍本的八層網(wǎng)絡(luò)結(jié)構(gòu),通過對網(wǎng)絡(luò)參數(shù)的修改,調(diào)整卷積層中池化運算的數(shù)量和策略、網(wǎng)絡(luò)中卷積核的尺寸與數(shù)量,分析得到不同的分類效果來選擇更有益于提高網(wǎng)絡(luò)性能的模式,按照此模式對構(gòu)建的網(wǎng)絡(luò)模型進行修改,獲得對豬胴體圖像分級性能更好的網(wǎng)絡(luò)模型。
4.1 TensorFlow機器學(xué)習(xí)框架
本文的網(wǎng)絡(luò)模型搭建使用了TensorFlow機器學(xué)習(xí)框架,作為google公司開發(fā)的一款面向機器學(xué)習(xí)領(lǐng)域的開源框架,TensorFlow由Distbelief深度學(xué)習(xí)系統(tǒng)發(fā)展而來Distbelief學(xué)習(xí)系統(tǒng)由google公司開發(fā),該項目由JeffDean主導(dǎo),其衍生的面向圖像分類的深度學(xué)習(xí)系統(tǒng)在2014年贏得了世界級圖像識別大賽Image-Net的第一名。其實現(xiàn)的語義識別模型也性能極佳,一舉將語義識別的誤判率降低了四分之一,但Distbelie系統(tǒng)也存在著一些缺陷,其中實現(xiàn)與運作需要大量的google公司的內(nèi)部框架支持,很難實現(xiàn)開源。因此google公司的開發(fā)團隊通過對原系統(tǒng)的改進,研發(fā)了面向機器學(xué)習(xí)方面的TensorFlow計算架構(gòu)。該框架基于Apache2.0開源協(xié)議,TensorFlow較其前身具有更加通用的運算模塊、更高速的計算能力、更全面的平臺支持和更多的深度學(xué)習(xí)算法,整體的穩(wěn)定性也更好。在google公司的翻譯服務(wù)、電子商務(wù)平臺、廣告推廣、語音識別等眾多領(lǐng)域均大量采用了TensorFlow框架的支持。在學(xué)術(shù)界,TensorFlow也得到了很廣泛的關(guān)注,越來越多的項目中采用或參考了TensorFlow,在深度學(xué)習(xí)網(wǎng)絡(luò)模型搭建方面,TensorFlow框架與很多其他深度學(xué)習(xí)框架都在不斷優(yōu)化完善,本文選擇TensorFlow不僅因為其具有更加規(guī)范化的代碼以及更加全面的項目文檔,更重要的是其具備的以下幾大亮點。
?。?)應(yīng)用廣泛
TensorFlow在建立深度學(xué)習(xí)系統(tǒng)過程中有廣泛的應(yīng)用,其不僅架構(gòu)齊全也可以達到簡化計算過程的作用。在具體的構(gòu)件過程中可用到Python和C++,可以通過Python抽象處理,來得到相應(yīng)的程序,也可以應(yīng)用相應(yīng)的C++編寫。
(2)易于不同平臺間的移植
框架對各種設(shè)備普遍具有很強的支持性,可以在很多平臺上運行,也可以在臺式機運行,因而對設(shè)備的依賴性低,可移植性很強。
?。?)支持更多底層操作
為了實現(xiàn)對底層的操作,框架對很多的硬件也可以做到普遍性的支持,可以直接實現(xiàn)針對結(jié)點的分配與處理,使網(wǎng)絡(luò)高效得進行并行化處理,來滿足相應(yīng)的應(yīng)用要求。
(4)開發(fā)環(huán)境更豐富
除了可以在Python開發(fā)環(huán)境下使用外,框架還提供了應(yīng)用C++語言的開發(fā)環(huán)境,相比一些框架只能面向集成化開發(fā)環(huán)境的現(xiàn)狀,TensorFlow框架提供了更多的選擇。在使用過程中,可根據(jù)需要利用不同的語言環(huán)境。在操作過程中可以通過可視化工具將計算結(jié)果通過一定的形式顯示出來,而對應(yīng)的參數(shù)、運行結(jié)構(gòu)也可以通過同樣的方式輸出。
?。?)封裝微積分運算包
一些機器學(xué)習(xí)算法的原理是根據(jù)梯度運算進行的,對于這些涉及梯度下降算法的部分往往需要大量的微分運算,TensorFlow框架可以方便地應(yīng)用相應(yīng)的自動求導(dǎo)功能,在此計算過程中要定義結(jié)構(gòu),對模型進行綁定處理后,會自動計算相關(guān)的導(dǎo)數(shù)。
TensorFlow框架在處理過程中用到數(shù)據(jù)流圖工具,可以通過“結(jié)點”和“線”,描述相應(yīng)的數(shù)據(jù)運算處理,而“結(jié)點”一般用W表示,和數(shù)據(jù)運算存在一定的相關(guān)性,“線”主要反映出相應(yīng)“結(jié)點”之間的數(shù)據(jù)關(guān)系。張量具體表示為一種特殊的多維數(shù)組,輸入端所有的張量準備完畢時,就可以對節(jié)點進行分配,且可以開始異歩計算。
4.2 基礎(chǔ)模型的設(shè)計
本章主要通過構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)對豬胴體圖像的分級。本次研究中首先基于經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型AlexNet建立了面向豬胴體分級應(yīng)用的神經(jīng)網(wǎng)絡(luò)模型,然后通過此網(wǎng)絡(luò)模型對豬胴體圖像庫的圖像進行掃描分析,確定出圖像的分類特征。接下來利用經(jīng)過訓(xùn)練的網(wǎng)絡(luò)模型對豬胴體圖像數(shù)據(jù)集進行識別研究。其中作為基礎(chǔ)模型AlexNet(后文簡稱A模型)的網(wǎng)絡(luò)結(jié)構(gòu)較其他多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)具有如下特征:
?。?)將Dropout過程作為網(wǎng)絡(luò)中默認的一部分
A模型將Dropout這一過程加入到對應(yīng)的全連接層的ReLu部分,將其中一部分的神經(jīng)元去掉,來簡化分析過程,并滿足擬合要求。這種優(yōu)化方法是由學(xué)者Hinton在一次關(guān)于神經(jīng)網(wǎng)絡(luò)特征提取研究過程中提出的。
通過這種方法對模型進行訓(xùn)練時,其中隨機選擇隱藏層節(jié)點,使其權(quán)重暫時不參與網(wǎng)絡(luò)傳遞。對應(yīng)的節(jié)點在此時可以不參與計算,對權(quán)重進行保留,在其后的輸入操作過程中,這些節(jié)點會隨機開始工作。對應(yīng)的運行情況具體見圖4.1(b)所示,沒有添加此方法的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)見左圖。通過這種方法可以有效地減少參與訓(xùn)練的神經(jīng)元數(shù)量,僅訓(xùn)練部分神經(jīng)元,在一定的訓(xùn)練時間情況下,相應(yīng)的分類結(jié)果滿足系統(tǒng)的準確性要求,有利于防止過擬合問題的出現(xiàn)。

圖 4.1 dropout 方法對應(yīng)的網(wǎng)絡(luò)模型
?。?)ReLu層
在A模型中,通過應(yīng)用ReLu函數(shù)代替?zhèn)鹘y(tǒng)的激活函數(shù),ReLU函數(shù)是一種非線性函數(shù),但也可以將其看作一種分段線性函數(shù)。主要特征表現(xiàn)為反向求導(dǎo)更容易且不必進行除法操作,并且出現(xiàn)梯度發(fā)散現(xiàn)象可能性很低,有效地提高了網(wǎng)絡(luò)判別結(jié)果的精度。
?。?)LRN層
LRN層的字面意思是局部響應(yīng)歸一化,通過對各個像素點的數(shù)據(jù)全部進行歸一化處理,設(shè)置LRN層能有效避免由于數(shù)據(jù)在不同層中的不同分布導(dǎo)致的擬合困難及訓(xùn)練速度低下等問題。
在此分析過程中確定出的初始網(wǎng)絡(luò)中相應(yīng)的全連接層與卷積層對應(yīng)的參數(shù)具體情況如表4.1、4.2所示。
表4.1 全連接層網(wǎng)絡(luò)參數(shù)設(shè)置
全連接層 | 激活函數(shù) | dropout |
fc1 | RELU | 有 |
fc2 | RELU | 無 |
fc3 | 無 | 無 |
表 4.2 卷積層網(wǎng)絡(luò)參數(shù)設(shè)置
卷積層 | 卷積 | 池化 | 激活函數(shù) | 填充 |
C1 | 卷積核數(shù)量:96 卷積核大?。?1×11 步長:4 | 池化大小:3×3 步長:2 | RELU | valid |
C2 | 卷積核數(shù)量:96 卷積核大?。?×5 | 無 | RELU | valid |
C3 | 卷積核數(shù)量:256 卷積核大小:3×3 | 無 | RELU | valid |
C4 | 卷積核數(shù)量:256 卷積核大?。?×3 | 池化大小:3×3 步長:2 | RELU | valid |
4.3 豬肉識別的影響因素
在農(nóng)產(chǎn)品圖像的分類識別中,分析各參數(shù)對圖像識別的影響,主要根據(jù)感受野的大小,卷積核的數(shù)量、卷積層的數(shù)量的改變水平來確定??梢栽诖嘶A(chǔ)上確定出不同參數(shù)方法的作用,更好的得到圖像識別模型。
4.3.1 卷積核個數(shù)與尺寸的分析
卷積操作在利用深度學(xué)習(xí)進行圖像處理的過程中被廣泛應(yīng)用,其原理主要是利用卷積核來提取圖像特征。提取圖像特征時,最重要的環(huán)節(jié)就是選擇卷積核,也就是設(shè)置卷積核的數(shù)量、尺寸及步長的相關(guān)參數(shù)。其中卷積核的數(shù)量與特征映射圖的個數(shù)有關(guān),對應(yīng)的特征圖和上層圖像的描述存在一定的相關(guān)性。特征映射圖的數(shù)量也可以在一定程度上反映出相應(yīng)特征的描述能力。從理論上講,這種圖的數(shù)量越多,網(wǎng)絡(luò)的學(xué)習(xí)能力就越強。不過實際應(yīng)用中卷積核數(shù)量應(yīng)該控制在一定的范圍內(nèi),并非越多就越好。根據(jù)實際使用的結(jié)果表明,如果選取的特征數(shù)量超過了一定水平,會導(dǎo)致網(wǎng)絡(luò)結(jié)構(gòu)過于復(fù)雜,也就明顯的增加了數(shù)學(xué)計算難度,且在一定情況下還會出現(xiàn)過擬合問題。卷積核的尺寸決定了特征映射圖的大小。在圖像卷積的操作過程中,步長的大小主要會影響到特征數(shù)量。在此操作過程中,如果對應(yīng)的圖像像素尺寸為(n,n),對其進行卷積操作,核只有一個,其大小設(shè)定為(w,w),設(shè)置的步長大小為 k,卷積處理后可以確定出l個特征映射圖,特征映射圖的大小如如公式(4.1)所示:
?。?.1)

通過這種網(wǎng)絡(luò)結(jié)構(gòu)對圖像進行卷積的過程中,需要確定邊界參數(shù)的選擇是SAME模式還是VALID模式。其中選擇VALID就是對圖片直接進行特征提取,在進行卷積池化過程中,對輸入圖像不進行變化。SAME模式則是在圖片外圍添加n層0來改變圖像尺寸方便卷積運算,n可以通過公式(4.2)、(4.3)來確定,然后根據(jù)所得結(jié)果再利用VALID模式進行卷積操作。在此運算情況下輸入的圖像和卷積處理后的圖像的尺寸一致,可以避免卷積核的尺寸對卷積運算后圖像尺寸大小的影響。
橫向擴充層數(shù)n_ h (卷積核橫向的大小-1) / 2 (4.2)
縱向擴充層數(shù)n_ v (卷積核縱向大小-1) / 2 (4.3)
根據(jù)卷積神經(jīng)網(wǎng)絡(luò)的特性可知:卷積核數(shù)量會影響到網(wǎng)絡(luò)模型的識別效果。本文研究中,采用保持其他的參數(shù)固定,對模型卷積核的數(shù)量進行逐步增加的方法以確定不同的影響效果。具體數(shù)量設(shè)置如下,改變C2、C3及C4卷積層的卷積核數(shù)量為:96-96-128;96-128-128;96-128-256;128-256-256;256-256-384;256-384-384;384-384-384。然后在此基礎(chǔ)上通過模型來對圖像庫進行訓(xùn)練,所得結(jié)果具體如圖4.2所示。

圖 4.2 采用不同卷積核數(shù)量對應(yīng)的誤判率
分析以上結(jié)果可知,增加卷積層中卷積核的數(shù)量,可以使網(wǎng)絡(luò)訓(xùn)練的擬合結(jié)果在一定程度上有所提高,同時圖像的識別率也會有顯著提高。同時隨著卷積層數(shù)量的增加,相應(yīng)的整體網(wǎng)絡(luò)規(guī)模也明顯增加。網(wǎng)絡(luò)規(guī)模的擴大伴隨著數(shù)學(xué)計算量的增大,過大的計算量會使網(wǎng)絡(luò)的訓(xùn)練及識別速度受到一定的影響。一旦輸入圖像的尺寸超過了一定的限度,模型的訓(xùn)練效果也會受到明顯的影響,對應(yīng)的識別效率會明顯降低。在網(wǎng)絡(luò)的訓(xùn)練識別過程中,通過縮小卷積過程中卷積核的尺寸也可以有效地提高圖像的識別率。從理論上來講在其他參數(shù)不變的情況下,與單個像素點大小相同的卷積核對應(yīng)的識別效果可以達到更高的水平。但卷積核過小會伴隨著噪聲干擾問題的明顯加大,反而影響了圖像的識別效果,在此情況下應(yīng)該適當?shù)目刂啤6谝话闱闆r下,網(wǎng)絡(luò)模型大部分選擇了尺寸為3×3-5×5的卷積核進行卷積處理。
4.3.2 池化操作和范圍的分析
池化操作(子采樣)就是在一定的卷積操作處理后,為有效的降低特征維度而對特征映射圖進行處理。根據(jù)實際的處理結(jié)果表明:這種方法處理后,相應(yīng)的數(shù)據(jù)參數(shù)可以大幅度減少,而處理的結(jié)果在進行旋轉(zhuǎn)、平移操作后,圖像性質(zhì)依然保持不變。通過這種方法進行處理時,可以選擇隨機采樣、最大值采樣、均值采樣等幾種類型,相應(yīng)的操作過程具體如圖4.3所示。

圖 4.3 不同池化方法示意圖
選擇最大值采樣的方法進行采樣時,主要是獲取上一層中池化區(qū)域中對應(yīng)的最大參數(shù)并將其選作為神經(jīng)元參數(shù)。均值采樣過程中則對上一層池化區(qū)域中對應(yīng)的參數(shù)求平均值,然后將所得結(jié)果作為相應(yīng)的參數(shù)值。研究表明,最大值采樣方法對圖像細節(jié)邊緣的影響最小,對紋理特征的保留效果最好。平均值采樣因其均值化的特點,可以減少池化運算對圖像整體背景的影響,對網(wǎng)絡(luò)參數(shù)中池化范圍尺寸選擇的限制較小,均值化方法可以有效地降低與原圖對比的方差。隨機采樣方法是根據(jù)上一層池化區(qū)域?qū)?yīng)的參數(shù)的數(shù)值對應(yīng)設(shè)定概率,參數(shù)數(shù)值被選擇的概率由數(shù)值本身的大小決定。通過對幾種池化方法的分析可知:池化層各參數(shù)會明顯的影響到圖像識別的效果,因而本文在進行研究時,控制其他的參數(shù)不變,在2層池化層分別選擇這三種采樣方法進行采樣,并修改其各自的池化大小,分別設(shè)置為2×2、3×3、5×5,在此基礎(chǔ)上進行池化處理,選擇后者時,邊界參數(shù)選擇SAME來進行模擬分析。在以上參數(shù)設(shè)置的基礎(chǔ)上對豬胴體進行圖像測試,采用各池化范圍的網(wǎng)絡(luò)模型測試誤判率如圖4.4所示。

圖4.4 不同池化方法和大小對豬胴體圖像識別的影響
如圖4.4所示,分析此結(jié)果可發(fā)現(xiàn),噪音和池化大小存在一定的相關(guān)性,擴大池化區(qū)域范圍,則對應(yīng)的噪音影響越大,進而明顯的影響識別效果。同時進一步分析可知:過小的池化范圍會導(dǎo)致過擬合問題。同時不同池化方法的最優(yōu)池化范圍選擇也不同,如在最大池化方法中,最優(yōu)大小為3×3。在測試過程中,雖然整體擬合效果隨著池化范圍的減小而不斷地提高。但在實際應(yīng)用中對網(wǎng)絡(luò)模型進行訓(xùn)練時,相應(yīng)的3×3池化可以起到更好的識別效果,原因在于尺寸為2×2的池化識別過程中會有更大的可能性產(chǎn)生過擬合問題,對比分析這幾種方法的圖像識別結(jié)果,可以發(fā)現(xiàn)最大值池化方法的識別效果明顯好于其他兩種方法的。
《未完待續(xù)》