邵良玉
(200082 上海市 上海理工大學 機械工程學院)
花卉分類識別是植物識別領域的研究熱點之一,隨著人們生活水平的提高,花卉圖像的識別與分類能滿足非專業人員對花卉的認知需求。目前針對花卉圖像分類識別的方法主要有2 種,一是基于手工特征的傳統方法,二是基于深度學習的方法。手工提取特征的傳統方法,指人為手動設計一些算法,提取花卉的顏色、形狀、紋理等,通常分為4大類:閾值分割方法、邊緣分割方法、區域分割法、特定的理論工具,如基于模式識別和小波分析。NILSBACK 和 ZISSERAMAN[1]提出將花卉圖像的SIFT 特征和HOG 特征融合,使用支持向量機 SVM進行花卉分類識別,分類準確率達76.3%;謝曉東[2]提出基于顯著性檢測圖像分割法,采用特征融合的方法對花卉分類。
近幾年,隨著科學技術的發展,卷積神經網絡出現了史無前例的技術革新。其中郭子琰[3]等基于卷積神經網絡模型,并選用ReLU 激活函數代替傳統的 Sigmoid 函數,提高識別率。沈萍[4]等基于多隱層的深度卷積神經網絡,對花卉進行識別分類。對于大量的圖片數據,任意平[5]等基于改進后的Alexnet 的花卉識別網絡,效果良好。
本文提出基于VGG19 網絡模型,進行對花卉的遷移學習,通過對網絡的參數遷移,保留底層卷積,池化,對相關參數進行微調,構建適合研究的花卉識別方法。實驗表明,與未遷移的卷積神經網絡相比,識別效果有明顯提升。
本文所用到的圖像數據來自于中國植物主題數據庫,以5 種常見花卉作為研究對象,分別是雛菊、蒲公英、玫瑰花、向日葵和郁金香。5 類花卉試驗樣本圖像共采集3 670 張,其中雛菊633 張,蒲公英898 張,玫瑰花641 張,向日葵699 張,郁金香799 張。
因數據數量較小,需要對原始數據進行增加。使用keras 中的ImageDataGenerator 函數對圖片進行水平翻轉,隨機縮放,隨機剪切,對數據進行擴增,從而避免訓練過擬合。共11 010 張圖片,其中2 000張作為測試集樣本,9 010張作為訓練樣本,如圖1 所示。

圖1 花卉數據集Fig.1 Flower data set
2.1.1 VGGNet
VGG16net 網絡結構如圖2 所示。包括16 個隱藏層(13 個卷積層和3 個全連接層)。從模塊1到模塊5 的卷積核數目分別是64,128,256,512和512,所有卷積核大小為 3×3,步長為 1。共有5 個大小都為 2×2 的最大池化層,步長為 2。共有3 個全連接層,前2 個全連接層都有 4 096 輸出節點,第3 個全連接層共 1 000 輸出節點。最后一層為softmax 層。所有隱藏層后都帶有 ReLU 非線性激活函數。通過網絡層數和通道加深,VGGNet 可以提取更多的圖像信息。

圖2 VGG16 網絡模型Fig.2 VGG16 network model
2.1.2 VGG16 遷移學習與模型構建
(1)實驗1
利用 ImageNet 上預先訓練好的VGG16 模型[8],去掉已有的全連接層和 Softmax 層部分,輸入層、池化層和13 個卷積層都保留,并且保留其輸入圖像格式 150×150,保留其權重。將卷積和池化層遷移到花卉圖像分類模型上,并在模型后面添加3層全連接層,每層的激活函數是ReLU 函數;最后一層全連接,激活函數采用softmax 函數,得到5種花卉的分類。最后將預訓練好的網絡去微調花卉數據庫的訓練,采用隨機梯度下降法對樣本進行優化,如圖3 所示。

圖3 花卉圖像分類遷移學習模型圖Fig.3 Flower image classification transfer learning model
(2)實驗2
將原始圖片繼續數據增強。在實驗1 的基礎上,先對整個卷積層進行“凍結”,再對部分卷積層進行“解凍”[9],使解凍的卷積層的權重發生改變,然后再進行全連接層的訓練,進行微調,重新驗證訓練,得出實驗結果,如圖4 所示。

圖4 “解凍”卷積層示意圖Fig.4 Schematic diagram of "thawing" convolution layer
2.1.3 模型分類器參數設置
本文使用ReLU 激活函數為網絡添加非線性因素,計算速度快,公式為:

最后一層采用Softmax[10],它是全連接層后接的常用激活函數,其函數是Sigmoid 函數的改進。此函數主要用于多分類,公式為:

從式(2)可知,Softmax 函數計算出每個值所占比率,保證總和為 1,輸出向量即為各類的概率,可以對所有函數做歸一化。
由于批量梯度下降法實驗過程較慢,所有本研究采用隨機梯度下降(Stochastic Gradient Descent,SGD)法,隨著權值ω迭代到最優解,如式(3)所示,避免多個極小值的出現。

式中:h(x)——要擬合的函數;J(ω)——損失函數;m——條數記錄;i——參數的個數。
訓練環境為Windows10 系統,計算機配置為Intel(R)Core(TM)i5-9400 CPU @ 4.00 GHz,內存16 GB,顯卡為NVIDIA GeForce 1650,訓練使用的深度學習框架為Tensorflow 2.3.0,編程語言為Python3.7.4。
3.2.1 實驗1 訓練結果
首先下載ImageNet 上訓練過的VGG16 模型,將模型的全連接層替換為適合本研究的5 分類的分類層,加載卷積的權重參數保持不變,不加載全連接層。將圖片批量放進模型,采用平移、裁剪和亮度調整等方法進行圖像歸一化和圖像增強,采用隨機取樣的方法,將數據集劃分為訓練集和測試集,比例8∶2,保存結果。模型設置初始學習率設置為0.001,動量為0.9,迭代次數為20 次,輸入批量大小為64。得到訓練集的準確率為96.75%,驗證集的準確率為80.15%。實驗結果如圖5 所示。
由圖5 可知,圖片只進行數據增強操作,然后利用VGG16 網絡卷積基進行特征提取,再對新添加的全連接層進行訓練,從而導致訓練層的增加,使代碼更加復雜,導致出現過擬合情況,無法提高驗證準確率。

圖5 實驗1 結果Fig.5 Results of Experiment 1
3.2.2 實驗2 訓練結果
為提高訓練準確率,降低訓練過程中的過擬合,仍選擇實驗一中的預處理模型,接著對前10層卷積層進行“凍結”,其余的層保證參數不變,同樣保證全連接層和優化器的參數不變,迭代50次,得到的訓練集的準確率為99.56%,驗證集的準確率為89.1%。實驗結果如圖6 所示。

圖6 實驗2 結果Fig.6 Results of Experiment 2
由圖6 可知,通過對部分卷積層的“凍結”,使網絡結構得到優化,不僅提高了網絡模型的性能,而且驗證準確率也得到大幅提升,在小規模圖像集上也可以取得較好的識別效率,使遷移學習確實對小樣本識別分類具有可行性。
3.2.3 不同分類算法實驗對比
本研究采用的圖像數據來自中國植物主題數據庫,選取的訓練樣本占80%。實驗發現,用本文的測試方法具有較高的識別率,達到89.1%。具體實驗結果見表1。

表1 不同算法的實驗結果對比Tab.1 Comparison of experimental results of different algorithms
本文提出一種遷移學習模型的花卉圖像識別分類方法,構建了VGG16 的花卉遷移學習識別模型,并且進行微調實驗,構建新的全連接層,進行訓練驗證,得到新的識別模型。實驗結果表明,將ImageNet 數據集得到1 000 類的訓練模型遷移到小規模圖像集中分類得到5 種花卉的識別,再進行網絡結構微調,從而得到良好的訓練結果,驗證方法可行。這種方法不僅避免訓練模型的不足,而且節省了大量時間,得到良好的結果。本文僅提出一種模型的遷移學習對5 種花卉進行識別,是否能在其他數據集中也能達到良好效果,下一步的工作,應該應用到其他種類的數據集,增加樣本集種類和數量,提高分類識別率。