《續(xù)》
第 4 章 豬胴體圖像分級(jí)模型 CNN-P
本章主要構(gòu)建了針對(duì)豬胴體圖像分級(jí)的卷積神經(jīng)網(wǎng)絡(luò)模型,選用TensorFlow計(jì)算框架,采用以AlexNet網(wǎng)絡(luò)模型為藍(lán)本的八層網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)對(duì)網(wǎng)絡(luò)參數(shù)的修改,調(diào)整卷積層中池化運(yùn)算的數(shù)量和策略、網(wǎng)絡(luò)中卷積核的尺寸與數(shù)量,分析得到不同的分類(lèi)效果來(lái)選擇更有益于提高網(wǎng)絡(luò)性能的模式,按照此模式對(duì)構(gòu)建的網(wǎng)絡(luò)模型進(jìn)行修改,獲得對(duì)豬胴體圖像分級(jí)性能更好的網(wǎng)絡(luò)模型。
4.1 TensorFlow機(jī)器學(xué)習(xí)框架
本文的網(wǎng)絡(luò)模型搭建使用了TensorFlow機(jī)器學(xué)習(xí)框架,作為google公司開(kāi)發(fā)的一款面向機(jī)器學(xué)習(xí)領(lǐng)域的開(kāi)源框架,TensorFlow由Distbelief深度學(xué)習(xí)系統(tǒng)發(fā)展而來(lái)Distbelief學(xué)習(xí)系統(tǒng)由google公司開(kāi)發(fā),該項(xiàng)目由JeffDean主導(dǎo),其衍生的面向圖像分類(lèi)的深度學(xué)習(xí)系統(tǒng)在2014年贏得了世界級(jí)圖像識(shí)別大賽Image-Net的第一名。其實(shí)現(xiàn)的語(yǔ)義識(shí)別模型也性能極佳,一舉將語(yǔ)義識(shí)別的誤判率降低了四分之一,但Distbelie系統(tǒng)也存在著一些缺陷,其中實(shí)現(xiàn)與運(yùn)作需要大量的google公司的內(nèi)部框架支持,很難實(shí)現(xiàn)開(kāi)源。因此google公司的開(kāi)發(fā)團(tuán)隊(duì)通過(guò)對(duì)原系統(tǒng)的改進(jìn),研發(fā)了面向機(jī)器學(xué)習(xí)方面的TensorFlow計(jì)算架構(gòu)。該框架基于Apache2.0開(kāi)源協(xié)議,TensorFlow較其前身具有更加通用的運(yùn)算模塊、更高速的計(jì)算能力、更全面的平臺(tái)支持和更多的深度學(xué)習(xí)算法,整體的穩(wěn)定性也更好。在google公司的翻譯服務(wù)、電子商務(wù)平臺(tái)、廣告推廣、語(yǔ)音識(shí)別等眾多領(lǐng)域均大量采用了TensorFlow框架的支持。在學(xué)術(shù)界,TensorFlow也得到了很廣泛的關(guān)注,越來(lái)越多的項(xiàng)目中采用或參考了TensorFlow,在深度學(xué)習(xí)網(wǎng)絡(luò)模型搭建方面,TensorFlow框架與很多其他深度學(xué)習(xí)框架都在不斷優(yōu)化完善,本文選擇TensorFlow不僅因?yàn)槠渚哂懈右?guī)范化的代碼以及更加全面的項(xiàng)目文檔,更重要的是其具備的以下幾大亮點(diǎn)。
(1)應(yīng)用廣泛
TensorFlow在建立深度學(xué)習(xí)系統(tǒng)過(guò)程中有廣泛的應(yīng)用,其不僅架構(gòu)齊全也可以達(dá)到簡(jiǎn)化計(jì)算過(guò)程的作用。在具體的構(gòu)件過(guò)程中可用到Python和C++,可以通過(guò)Python抽象處理,來(lái)得到相應(yīng)的程序,也可以應(yīng)用相應(yīng)的C++編寫(xiě)。
(2)易于不同平臺(tái)間的移植
框架對(duì)各種設(shè)備普遍具有很強(qiáng)的支持性,可以在很多平臺(tái)上運(yùn)行,也可以在臺(tái)式機(jī)運(yùn)行,因而對(duì)設(shè)備的依賴(lài)性低,可移植性很強(qiáng)。
?。?)支持更多底層操作
為了實(shí)現(xiàn)對(duì)底層的操作,框架對(duì)很多的硬件也可以做到普遍性的支持,可以直接實(shí)現(xiàn)針對(duì)結(jié)點(diǎn)的分配與處理,使網(wǎng)絡(luò)高效得進(jìn)行并行化處理,來(lái)滿(mǎn)足相應(yīng)的應(yīng)用要求。
(4)開(kāi)發(fā)環(huán)境更豐富
除了可以在Python開(kāi)發(fā)環(huán)境下使用外,框架還提供了應(yīng)用C++語(yǔ)言的開(kāi)發(fā)環(huán)境,相比一些框架只能面向集成化開(kāi)發(fā)環(huán)境的現(xiàn)狀,TensorFlow框架提供了更多的選擇。在使用過(guò)程中,可根據(jù)需要利用不同的語(yǔ)言環(huán)境。在操作過(guò)程中可以通過(guò)可視化工具將計(jì)算結(jié)果通過(guò)一定的形式顯示出來(lái),而對(duì)應(yīng)的參數(shù)、運(yùn)行結(jié)構(gòu)也可以通過(guò)同樣的方式輸出。
?。?)封裝微積分運(yùn)算包
一些機(jī)器學(xué)習(xí)算法的原理是根據(jù)梯度運(yùn)算進(jìn)行的,對(duì)于這些涉及梯度下降算法的部分往往需要大量的微分運(yùn)算,TensorFlow框架可以方便地應(yīng)用相應(yīng)的自動(dòng)求導(dǎo)功能,在此計(jì)算過(guò)程中要定義結(jié)構(gòu),對(duì)模型進(jìn)行綁定處理后,會(huì)自動(dòng)計(jì)算相關(guān)的導(dǎo)數(shù)。
TensorFlow框架在處理過(guò)程中用到數(shù)據(jù)流圖工具,可以通過(guò)“結(jié)點(diǎn)”和“線(xiàn)”,描述相應(yīng)的數(shù)據(jù)運(yùn)算處理,而“結(jié)點(diǎn)”一般用W表示,和數(shù)據(jù)運(yùn)算存在一定的相關(guān)性,“線(xiàn)”主要反映出相應(yīng)“結(jié)點(diǎn)”之間的數(shù)據(jù)關(guān)系。張量具體表示為一種特殊的多維數(shù)組,輸入端所有的張量準(zhǔn)備完畢時(shí),就可以對(duì)節(jié)點(diǎn)進(jìn)行分配,且可以開(kāi)始異歩計(jì)算。
4.2 基礎(chǔ)模型的設(shè)計(jì)
本章主要通過(guò)構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)豬胴體圖像的分級(jí)。本次研究中首先基于經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型AlexNet建立了面向豬胴體分級(jí)應(yīng)用的神經(jīng)網(wǎng)絡(luò)模型,然后通過(guò)此網(wǎng)絡(luò)模型對(duì)豬胴體圖像庫(kù)的圖像進(jìn)行掃描分析,確定出圖像的分類(lèi)特征。接下來(lái)利用經(jīng)過(guò)訓(xùn)練的網(wǎng)絡(luò)模型對(duì)豬胴體圖像數(shù)據(jù)集進(jìn)行識(shí)別研究。其中作為基礎(chǔ)模型AlexNet(后文簡(jiǎn)稱(chēng)A模型)的網(wǎng)絡(luò)結(jié)構(gòu)較其他多層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)具有如下特征:
?。?)將Dropout過(guò)程作為網(wǎng)絡(luò)中默認(rèn)的一部分
A模型將Dropout這一過(guò)程加入到對(duì)應(yīng)的全連接層的ReLu部分,將其中一部分的神經(jīng)元去掉,來(lái)簡(jiǎn)化分析過(guò)程,并滿(mǎn)足擬合要求。這種優(yōu)化方法是由學(xué)者Hinton在一次關(guān)于神經(jīng)網(wǎng)絡(luò)特征提取研究過(guò)程中提出的。
通過(guò)這種方法對(duì)模型進(jìn)行訓(xùn)練時(shí),其中隨機(jī)選擇隱藏層節(jié)點(diǎn),使其權(quán)重暫時(shí)不參與網(wǎng)絡(luò)傳遞。對(duì)應(yīng)的節(jié)點(diǎn)在此時(shí)可以不參與計(jì)算,對(duì)權(quán)重進(jìn)行保留,在其后的輸入操作過(guò)程中,這些節(jié)點(diǎn)會(huì)隨機(jī)開(kāi)始工作。對(duì)應(yīng)的運(yùn)行情況具體見(jiàn)圖4.1(b)所示,沒(méi)有添加此方法的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)見(jiàn)左圖。通過(guò)這種方法可以有效地減少參與訓(xùn)練的神經(jīng)元數(shù)量,僅訓(xùn)練部分神經(jīng)元,在一定的訓(xùn)練時(shí)間情況下,相應(yīng)的分類(lèi)結(jié)果滿(mǎn)足系統(tǒng)的準(zhǔn)確性要求,有利于防止過(guò)擬合問(wèn)題的出現(xiàn)。
圖 4.1 dropout 方法對(duì)應(yīng)的網(wǎng)絡(luò)模型
?。?)ReLu層
在A模型中,通過(guò)應(yīng)用ReLu函數(shù)代替?zhèn)鹘y(tǒng)的激活函數(shù),ReLU函數(shù)是一種非線(xiàn)性函數(shù),但也可以將其看作一種分段線(xiàn)性函數(shù)。主要特征表現(xiàn)為反向求導(dǎo)更容易且不必進(jìn)行除法操作,并且出現(xiàn)梯度發(fā)散現(xiàn)象可能性很低,有效地提高了網(wǎng)絡(luò)判別結(jié)果的精度。
?。?)LRN層
LRN層的字面意思是局部響應(yīng)歸一化,通過(guò)對(duì)各個(gè)像素點(diǎn)的數(shù)據(jù)全部進(jìn)行歸一化處理,設(shè)置LRN層能有效避免由于數(shù)據(jù)在不同層中的不同分布導(dǎo)致的擬合困難及訓(xùn)練速度低下等問(wèn)題。
在此分析過(guò)程中確定出的初始網(wǎng)絡(luò)中相應(yīng)的全連接層與卷積層對(duì)應(yīng)的參數(shù)具體情況如表4.1、4.2所示。
表4.1 全連接層網(wǎng)絡(luò)參數(shù)設(shè)置
全連接層 | 激活函數(shù) | dropout |
fc1 | RELU | 有 |
fc2 | RELU | 無(wú) |
fc3 | 無(wú) | 無(wú) |
表 4.2 卷積層網(wǎng)絡(luò)參數(shù)設(shè)置
卷積層 | 卷積 | 池化 | 激活函數(shù) | 填充 |
C1 | 卷積核數(shù)量:96 卷積核大?。?1×11 步長(zhǎng):4 | 池化大小:3×3 步長(zhǎng):2 | RELU | valid |
C2 | 卷積核數(shù)量:96 卷積核大小:5×5 | 無(wú) | RELU | valid |
C3 | 卷積核數(shù)量:256 卷積核大?。?×3 | 無(wú) | RELU | valid |
C4 | 卷積核數(shù)量:256 卷積核大小:3×3 | 池化大?。?×3 步長(zhǎng):2 | RELU | valid |
4.3 豬肉識(shí)別的影響因素
在農(nóng)產(chǎn)品圖像的分類(lèi)識(shí)別中,分析各參數(shù)對(duì)圖像識(shí)別的影響,主要根據(jù)感受野的大小,卷積核的數(shù)量、卷積層的數(shù)量的改變水平來(lái)確定??梢栽诖嘶A(chǔ)上確定出不同參數(shù)方法的作用,更好的得到圖像識(shí)別模型。
4.3.1 卷積核個(gè)數(shù)與尺寸的分析
卷積操作在利用深度學(xué)習(xí)進(jìn)行圖像處理的過(guò)程中被廣泛應(yīng)用,其原理主要是利用卷積核來(lái)提取圖像特征。提取圖像特征時(shí),最重要的環(huán)節(jié)就是選擇卷積核,也就是設(shè)置卷積核的數(shù)量、尺寸及步長(zhǎng)的相關(guān)參數(shù)。其中卷積核的數(shù)量與特征映射圖的個(gè)數(shù)有關(guān),對(duì)應(yīng)的特征圖和上層圖像的描述存在一定的相關(guān)性。特征映射圖的數(shù)量也可以在一定程度上反映出相應(yīng)特征的描述能力。從理論上講,這種圖的數(shù)量越多,網(wǎng)絡(luò)的學(xué)習(xí)能力就越強(qiáng)。不過(guò)實(shí)際應(yīng)用中卷積核數(shù)量應(yīng)該控制在一定的范圍內(nèi),并非越多就越好。根據(jù)實(shí)際使用的結(jié)果表明,如果選取的特征數(shù)量超過(guò)了一定水平,會(huì)導(dǎo)致網(wǎng)絡(luò)結(jié)構(gòu)過(guò)于復(fù)雜,也就明顯的增加了數(shù)學(xué)計(jì)算難度,且在一定情況下還會(huì)出現(xiàn)過(guò)擬合問(wèn)題。卷積核的尺寸決定了特征映射圖的大小。在圖像卷積的操作過(guò)程中,步長(zhǎng)的大小主要會(huì)影響到特征數(shù)量。在此操作過(guò)程中,如果對(duì)應(yīng)的圖像像素尺寸為(n,n),對(duì)其進(jìn)行卷積操作,核只有一個(gè),其大小設(shè)定為(w,w),設(shè)置的步長(zhǎng)大小為 k,卷積處理后可以確定出l個(gè)特征映射圖,特征映射圖的大小如如公式(4.1)所示:
(4.1)
通過(guò)這種網(wǎng)絡(luò)結(jié)構(gòu)對(duì)圖像進(jìn)行卷積的過(guò)程中,需要確定邊界參數(shù)的選擇是SAME模式還是VALID模式。其中選擇VALID就是對(duì)圖片直接進(jìn)行特征提取,在進(jìn)行卷積池化過(guò)程中,對(duì)輸入圖像不進(jìn)行變化。SAME模式則是在圖片外圍添加n層0來(lái)改變圖像尺寸方便卷積運(yùn)算,n可以通過(guò)公式(4.2)、(4.3)來(lái)確定,然后根據(jù)所得結(jié)果再利用VALID模式進(jìn)行卷積操作。在此運(yùn)算情況下輸入的圖像和卷積處理后的圖像的尺寸一致,可以避免卷積核的尺寸對(duì)卷積運(yùn)算后圖像尺寸大小的影響。
橫向擴(kuò)充層數(shù)n_ h (卷積核橫向的大小-1) / 2 (4.2)
縱向擴(kuò)充層數(shù)n_ v (卷積核縱向大小-1) / 2 (4.3)
根據(jù)卷積神經(jīng)網(wǎng)絡(luò)的特性可知:卷積核數(shù)量會(huì)影響到網(wǎng)絡(luò)模型的識(shí)別效果。本文研究中,采用保持其他的參數(shù)固定,對(duì)模型卷積核的數(shù)量進(jìn)行逐步增加的方法以確定不同的影響效果。具體數(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ǔ)上通過(guò)模型來(lái)對(duì)圖像庫(kù)進(jìn)行訓(xùn)練,所得結(jié)果具體如圖4.2所示。
圖 4.2 采用不同卷積核數(shù)量對(duì)應(yīng)的誤判率
分析以上結(jié)果可知,增加卷積層中卷積核的數(shù)量,可以使網(wǎng)絡(luò)訓(xùn)練的擬合結(jié)果在一定程度上有所提高,同時(shí)圖像的識(shí)別率也會(huì)有顯著提高。同時(shí)隨著卷積層數(shù)量的增加,相應(yīng)的整體網(wǎng)絡(luò)規(guī)模也明顯增加。網(wǎng)絡(luò)規(guī)模的擴(kuò)大伴隨著數(shù)學(xué)計(jì)算量的增大,過(guò)大的計(jì)算量會(huì)使網(wǎng)絡(luò)的訓(xùn)練及識(shí)別速度受到一定的影響。一旦輸入圖像的尺寸超過(guò)了一定的限度,模型的訓(xùn)練效果也會(huì)受到明顯的影響,對(duì)應(yīng)的識(shí)別效率會(huì)明顯降低。在網(wǎng)絡(luò)的訓(xùn)練識(shí)別過(guò)程中,通過(guò)縮小卷積過(guò)程中卷積核的尺寸也可以有效地提高圖像的識(shí)別率。從理論上來(lái)講在其他參數(shù)不變的情況下,與單個(gè)像素點(diǎn)大小相同的卷積核對(duì)應(yīng)的識(shí)別效果可以達(dá)到更高的水平。但卷積核過(guò)小會(huì)伴隨著噪聲干擾問(wèn)題的明顯加大,反而影響了圖像的識(shí)別效果,在此情況下應(yīng)該適當(dāng)?shù)目刂?。而在一般情況下,網(wǎng)絡(luò)模型大部分選擇了尺寸為3×3-5×5的卷積核進(jìn)行卷積處理。
4.3.2 池化操作和范圍的分析
池化操作(子采樣)就是在一定的卷積操作處理后,為有效的降低特征維度而對(duì)特征映射圖進(jìn)行處理。根據(jù)實(shí)際的處理結(jié)果表明:這種方法處理后,相應(yīng)的數(shù)據(jù)參數(shù)可以大幅度減少,而處理的結(jié)果在進(jìn)行旋轉(zhuǎn)、平移操作后,圖像性質(zhì)依然保持不變。通過(guò)這種方法進(jìn)行處理時(shí),可以選擇隨機(jī)采樣、最大值采樣、均值采樣等幾種類(lèi)型,相應(yīng)的操作過(guò)程具體如圖4.3所示。
圖 4.3 不同池化方法示意圖
選擇最大值采樣的方法進(jìn)行采樣時(shí),主要是獲取上一層中池化區(qū)域中對(duì)應(yīng)的最大參數(shù)并將其選作為神經(jīng)元參數(shù)。均值采樣過(guò)程中則對(duì)上一層池化區(qū)域中對(duì)應(yīng)的參數(shù)求平均值,然后將所得結(jié)果作為相應(yīng)的參數(shù)值。研究表明,最大值采樣方法對(duì)圖像細(xì)節(jié)邊緣的影響最小,對(duì)紋理特征的保留效果最好。平均值采樣因其均值化的特點(diǎn),可以減少池化運(yùn)算對(duì)圖像整體背景的影響,對(duì)網(wǎng)絡(luò)參數(shù)中池化范圍尺寸選擇的限制較小,均值化方法可以有效地降低與原圖對(duì)比的方差。隨機(jī)采樣方法是根據(jù)上一層池化區(qū)域?qū)?yīng)的參數(shù)的數(shù)值對(duì)應(yīng)設(shè)定概率,參數(shù)數(shù)值被選擇的概率由數(shù)值本身的大小決定。通過(guò)對(duì)幾種池化方法的分析可知:池化層各參數(shù)會(huì)明顯的影響到圖像識(shí)別的效果,因而本文在進(jìn)行研究時(shí),控制其他的參數(shù)不變,在2層池化層分別選擇這三種采樣方法進(jìn)行采樣,并修改其各自的池化大小,分別設(shè)置為2×2、3×3、5×5,在此基礎(chǔ)上進(jìn)行池化處理,選擇后者時(shí),邊界參數(shù)選擇SAME來(lái)進(jìn)行模擬分析。在以上參數(shù)設(shè)置的基礎(chǔ)上對(duì)豬胴體進(jìn)行圖像測(cè)試,采用各池化范圍的網(wǎng)絡(luò)模型測(cè)試誤判率如圖4.4所示。
圖4.4 不同池化方法和大小對(duì)豬胴體圖像識(shí)別的影響
如圖4.4所示,分析此結(jié)果可發(fā)現(xiàn),噪音和池化大小存在一定的相關(guān)性,擴(kuò)大池化區(qū)域范圍,則對(duì)應(yīng)的噪音影響越大,進(jìn)而明顯的影響識(shí)別效果。同時(shí)進(jìn)一步分析可知:過(guò)小的池化范圍會(huì)導(dǎo)致過(guò)擬合問(wèn)題。同時(shí)不同池化方法的最優(yōu)池化范圍選擇也不同,如在最大池化方法中,最優(yōu)大小為3×3。在測(cè)試過(guò)程中,雖然整體擬合效果隨著池化范圍的減小而不斷地提高。但在實(shí)際應(yīng)用中對(duì)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練時(shí),相應(yīng)的3×3池化可以起到更好的識(shí)別效果,原因在于尺寸為2×2的池化識(shí)別過(guò)程中會(huì)有更大的可能性產(chǎn)生過(guò)擬合問(wèn)題,對(duì)比分析這幾種方法的圖像識(shí)別結(jié)果,可以發(fā)現(xiàn)最大值池化方法的識(shí)別效果明顯好于其他兩種方法的。
《未完待續(xù)》