棉花是我國重要農(nóng)產(chǎn)品之一,全國棉花種植面積有5000萬畝左右,每年產(chǎn)出600萬噸左右棉花。而棉花的等級分類是棉花收購前的一個重要環(huán)節(jié),目前我國對于棉花的分類仍主要采用人工分類的方法,但這種方式容易產(chǎn)生一系列問題,并且由于人工檢測的誤差容易導(dǎo)致棉農(nóng)與收購商之間產(chǎn)生利益糾紛。隨著機器視覺技術(shù)不斷發(fā)展,越來越多的問題應(yīng)用機器視覺技術(shù)得以解決。肖春燕[1]提出了一種皮棉軋工質(zhì)量分級模型,將BP神經(jīng)網(wǎng)絡(luò)技術(shù)應(yīng)用在了棉花的等級分類當中,通過SPSS Modeler軟件建立神經(jīng)網(wǎng)絡(luò)模型對棉花質(zhì)量等級進行分級,有效提高軋工質(zhì)量分級效果,減少人工誤差。但是該模型只能對二級白棉進行分類,并且BP神經(jīng)網(wǎng)絡(luò)模型的初始網(wǎng)絡(luò)權(quán)重對模型的影響非常大,以不同的權(quán)重初始化網(wǎng)絡(luò)往往會產(chǎn)生不同的訓(xùn)練結(jié)果,從而產(chǎn)生較大誤差。
近年來,基于卷積神經(jīng)網(wǎng)絡(luò)的深度學習模型由于其較強的圖像分類能力而被廣泛地應(yīng)用于農(nóng)業(yè)領(lǐng)域的各種問題中,如植物病害識別、水果分類、農(nóng)作物品級分類等。Lu 等人[2]提出了一種基于深度學習技術(shù)的水稻病害識別方法,用于識別10種常見的水稻病害,通過引入遷移學習對預(yù)先訓(xùn)練好的深度學習網(wǎng)絡(luò)進行微調(diào)來提高模型的學習效率,提高了收斂速度和識別精度。王士鑫[3]等人提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的煙葉分級系統(tǒng),通過使用卷積神經(jīng)網(wǎng)絡(luò)中的InceptionV3模型并結(jié)合遷移學習來實現(xiàn)對煙葉等級的分類。
本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的棉花等級分類算法。通過搭建卷積神經(jīng)網(wǎng)絡(luò)中的VGG16模型并結(jié)合遷移學習對預(yù)訓(xùn)練好的模型進行微調(diào),運用圖像增強來提高圖像的訓(xùn)練效率,采用批量梯度下降法對模型進行多次訓(xùn)練并調(diào)節(jié)模型的超參數(shù)得到了最佳的分類精度,提高了棉花的分類效率。
作為深度學習的代表算法,卷積神經(jīng)網(wǎng)絡(luò)[4-10]具有表征學習能力,即能夠從輸入信息中提取高階特征。具體地,卷積神經(jīng)網(wǎng)絡(luò)中的卷積層和池化層能夠響應(yīng)輸入特征的平移不變性,即能夠識別位于空間不同位置的相近特征。能夠提取平移不變特征是卷積神經(jīng)網(wǎng)絡(luò)在計算機視覺問題中得到應(yīng)用的原因之一。卷積神經(jīng)網(wǎng)絡(luò)中的隱含層卷積核參數(shù)共享和層間連接稀疏性的特點,可以減少參數(shù)數(shù)量,使運算變得簡潔、高效,因此被廣泛應(yīng)用于計算機視覺和語音識別等各個領(lǐng)域。
VGGNet[10-15]由牛津大學的視覺幾何組和Google Deep-Mind公司的研究員共同提出,在ILSVRC-2014中獲得定位任務(wù)第一名和分類任務(wù)第二名。VGGNet 通過反復(fù)堆疊3×3 的小型卷積核和2×2 的最大池化層,在增加網(wǎng)絡(luò)模型深度的同時使模型的參數(shù)數(shù)量并沒有增加很多,因此VGG的網(wǎng)絡(luò)模型非常簡潔,并且對其他數(shù)據(jù)集具有較好的泛化能力,圖1為VGG16的原理圖。

圖1 VGG16原理圖
本文所采用的棉花樣本均為由河南省纖維檢驗局提供的新疆棉,并由相關(guān)技術(shù)人員根據(jù)GB 1103.1—2012的棉花質(zhì)量檢測標準將這些棉花分為好、中、差3個等級。通過我們自主研發(fā)的棉花圖像采集裝置對這些棉花進行圖像采集。采集得到的圖像分辨率為1200×1500,輸出的文件格式為JPEG。部分采集的原始棉花圖像如圖2。由于原始圖像中間存在異物,可能會導(dǎo)致訓(xùn)練過程中產(chǎn)生誤差降低訓(xùn)練效率。因此我們對原始圖像進行了進一步的處理將原始圖像分割為兩份,切去中間的異物。對所采集的3個等級圖像進行整合匯總,用P1、P2、P3來代替好、中、差3個等級,總共樣本數(shù)量6200個,其中P1等級400個、P2等級5600個、P3等級200個。

圖2 不同等級棉花采集樣本圖像
本文選用keras深度學習框架來實現(xiàn)對VGG16網(wǎng)絡(luò)模型的搭建,首先從keras函數(shù)庫中導(dǎo)入不含頂層的VGG16網(wǎng)絡(luò),將已經(jīng)訓(xùn)練好的模型權(quán)重參數(shù)導(dǎo)入模型當中進行遷移學習。在開始訓(xùn)練模型之前首先對圖像數(shù)據(jù)進行預(yù)處理,由于原始數(shù)據(jù)集圖像數(shù)量較少,容易產(chǎn)生過擬合,通過平移、轉(zhuǎn)置、鏡像、旋轉(zhuǎn)、縮放等幾何變換對采集的圖像進行處理,來增加原始數(shù)據(jù)集的數(shù)量,可以有效地避免過擬合現(xiàn)象的產(chǎn)生提高訓(xùn)練效率。
1)首先選用交叉熵函數(shù)[15-22]作為模型的損失函數(shù),具體表示為公式(1):

其中L為交叉熵損失函數(shù)值,Y為實際輸出,F(xiàn)(x)為期望輸出。
2)向網(wǎng)絡(luò)模型末尾添加softmax分類器[23-26],將VGG16提取的圖片特征值輸入到分類器當中可以得到棉花等級的概率值,方便每次訓(xùn)練結(jié)束后直觀地得到分類精確度。
3)使用遷移學習進行訓(xùn)練模型時,由于模型已經(jīng)在數(shù)據(jù)集上收斂過,采用較低的學習率可以有效地防止訓(xùn)練過程中目標函數(shù)損失值的震蕩,提高模型的分類精度。因此本文采用了0.0005的低學習率來對模型進行訓(xùn)練。
4)在優(yōu)化算法上本文采用小批量梯度下降法來對數(shù)據(jù)集進行迭代,每次迭代使用batch-size個樣本。假設(shè)線性回歸函數(shù)為公式(2):

其中i=1,2,……,m表示樣本數(shù)。
對應(yīng)的目標函數(shù)即為公式(3):

則其每次迭代對參數(shù)進行更新表示為公式(4):

通過小批量梯度下降法可以有效地提高內(nèi)存的利用率,降低訓(xùn)練震蕩,提高精確度。
對采集的3種等級新疆棉5600張圖像進行訓(xùn)練,首先在epochs=20的情況下,即對數(shù)據(jù)迭代20次,得到不同批尺寸batch-size下識別正確率,如圖3所示。

圖3 批尺寸和識別正確率關(guān)系圖
從圖4中可以看出模型分類的正確率隨著batch-size的增大,在batch-size=600時達到極大值。因此在后續(xù)的訓(xùn)練中,batch-size的值選取為600。
在確定好最佳的bitch-size后開始對最佳的輪次數(shù)參數(shù)進行分析研究,通過大量重復(fù)試驗得到了關(guān)系如圖4,可以看出在輪次數(shù)為760時得到了最佳的分類正確率0.85。之后再增大輪次數(shù),模型出現(xiàn)了較為明顯的過擬合現(xiàn)象,正確率的值并不再增加并且開始隨著輪次數(shù)的增加而明顯下降。

圖4 輪次數(shù)和識別正確率關(guān)系圖
確定超參數(shù)值bitch-size=600, 輪次數(shù)=760對模型進行訓(xùn)練,將模型訓(xùn)練結(jié)果進行仿真試驗測試,對已經(jīng)人工分類完成的棉花進行分類測試,不同等級的棉花得到的分類正確率如表1所示。

表1 不同等級棉花的分類正確率
本文提出了一種基于VGG16卷積神經(jīng)網(wǎng)絡(luò)模型的棉花等級分類的算法,通過搭建VGG16神經(jīng)網(wǎng)絡(luò)模型,將預(yù)處理后的圖像輸入到模型當中,選擇交叉熵categoricalcrossentropyloss作為損失函數(shù),使用小批量梯度下降法對模型進行優(yōu)化,通過不斷的重復(fù)訓(xùn)練使模型達到最優(yōu),實際仿真測試結(jié)果可知,模型對P2等級的棉花識別準確率最高,整體識別準確率約為85.09%。本文的棉花分級方法能夠快速的對棉花等級進行分類,為棉花等級的分類提供一種新的方法和思路。