閻園園, 陳 華, 姜 波
(新疆大學電氣工程學院,新疆烏魯木齊 830047)
針對作物病害的圖像處理技術研究及科技農業發展給農業生產帶來的巨大幫助。在1989年穗波信雄已經提出,圖像分析技術與模式識別技術將成為診斷作物病害的研究發展趨勢[1-2]。作物病害在顏色、形狀、大小等一些外在特征上存在差異性,通過視覺可以直觀地獲取這些差異。如今在作物病害類型辨別方面,分類識別技術的研究已經取得不錯的成果?;诜诸惼鞯淖R別技術主要包括主成分分析(principal component analysis,簡稱PCA)、BP(back propogation)統計分類模型識別、粒子群優化(particle swarm optimization,簡稱PSO)算法等。田有文等提取玉米和葡萄葉片的色度矩特征信息,選擇不同核函數對支持向量機(support vector machine,簡稱SVM)模型進行訓練,結果表明,當樣本數量在幾十之間,徑向基函數(radial basis function,簡稱RBF)下的SVM分類器對病害分類效率較高,樣本集數量較大或作物種類發生變化時,該方法實用性降低[3-4];張建華等用RBF-SVM模型對棉花病害進行識別,將小波變換圖像在HIS(hue-saturation-intensity)顏色空間的特征值作為分類器的輸入,結果證明,RBF-SVM分類器的分類率達88%,為分類器最優核函數的選擇提供了參考[5];房俊龍等用BP算法識別番茄正常果實與變異果實,遺傳算法(genetil algorithm,簡稱GA)算法優化BP網絡結構,根據番茄果實病害圖像中的果實形狀、圓度值、色度等之間的差異,實現了對番茄空洞果實、變形果實的識別[6]。
本研究以番茄常見病害類型如早疫病、晚疫病、灰霉病為識別對象,在對3種病害分類識別過程中將病害的特征值作為群智能分類器的輸入信號。在樣本有效特征提取時,一般選擇作物顏色、形狀、紋理3個方面的特征參數作為研究參數,以番茄早疫病為例,提取早疫病這3方面的有效特征值,并計算均值與方差,包括RGB(red-green-blue)、HSV(hue-saturation-value)空間顏色通道的均值與方差、7個形狀不變矩、病斑周長、面積、形狀復雜性、矩形度、對比度、相關性、能量、熵的均值與方差共31個特征參數,晚疫病和灰霉病的特征參數提取方法同早疫病,分別對3種病害的31個特征參數選擇不同分類模型進行訓練,檢驗不同分類器的分類效果。
試驗材料來自中糧新疆屯河吉木薩爾番茄產業種植基地,由新疆大學-中糧屯河產學研聯合培養研究生示范基地提供。采用MATLAB Version 8.0(R2012b)對數據進行分析,圖片處理工具選擇(Image Processing Toolbox)Version 8.1(R2012b)以及IBM SPSS Statistics 25.0。
1.2.1 PCA方法 PCA方法是一種用較少變量代替原樣本中較多變量的線性變換方式,變換后的較少變量被稱作新變量,新變量在一定程度上包含原變量較多信息量,又稱降維。降維后的新變量之間保持線性互不相關,并且變量之間滿足正交特性[7]。PCA方法的新變量自動按照Var(Fm)由大到小從高維空間映射。假設樣本有p個特征,分別為X1,X2,…,Xp,將p個特征的綜合反映記作Fm,F1代表原變量第1個主成分綜合指標,即F1=a11X1+a21X2+…+ap1Xp,方差Var(Fm)的大小代表主成分包含信息量的多少。以此類推構造F1,F2,…,Fm為原變量指標下X1,X2,…,Xp第1、第2、…、第m個主成分表達如下:
F1=a11X1+a12X2+…+a1pXp;
F2=a21X1+a22X2+…+a2pXp;
?
Fm=am1X1+am2X2+…+ampXp。
(1)
對樣本的31個特征參數值進行PCA降維,根據主成分貢獻率的大小,通常選擇主成分累積貢獻率大于85%的成分作為樣本數據集的研究依據,若貢獻率太小則不足以顯示樣本信息,會對樣本分類造成影響。以早疫病為例共采集30個樣本,每個樣本提取31個特征參數,其他病害成分分析及降維方法同早疫病,早疫病樣本的PCA降維分析結果和主成分貢獻率分別如圖1、表1所示。

由圖1可知,成分1~7的特征值變化較快,第8個成分之后變化平緩,7個成分的累積貢獻率達到86.077%,所以把前7個成分作為樣本的主成分,成分因子不受影響。通過不斷改變樣本數量分析發現,對樣本特征參數以及主成分數進行PCA降維不會導致成分因子變化,以7個主成分中的31個成分因子作為SVM算法的輸入,建立PCA-SVM的番茄病害分類模型。
1.2.2 PCA-SVM分類模型參數分析 SVM是一種分類建模的方法,在樣本容量小、數據非線性、數據緯度較高的特征空間被經常用到,算法的關鍵是核函數的選擇,核函數在高維特征數據空間獲得分類函數相對比較容易,本研究選擇核函數RBF作為分類函數,公式如下[8]:

表1 番茄早疫病樣本數據7個主成分的累計貢獻率
(2)
核函數RBF中σ2(核函數參數)與γ(懲罰系數)參數的選擇最重要,最終參數的確定要經過不斷調試。核函數參數σ與γ的取值范圍通常在10-3~105之間[9]。在PCA-SVM分類模型中,以30個早疫病樣本為訓練樣本,對優化后的樣本特征向量進行訓練,另外建立30個早疫病測試樣本,樣本分類訓練模型結果見圖2,可以看出60個樣本在基于核函數RBF的PCA-SVM分類器下的分類效果,早疫病與非早疫病分類中有1個樣本被錯分,早疫病的識別率達到96.7%。
對測試樣本識別時考慮到樣本集數量可能會對識別率造成影響,試驗中不斷改變病害樣本集數量,比較不同數量樣本集下PCA-SVM模型的識別率,進而判斷模型是否具有可行性,不同數量樣本集下PCA-SVM模型對3種病害類型的識別結果如表2所示。


表2 PCA-SVM模型下的早疫病及番茄其他病害識別結果
1.2.3 PCA-SVM分類模型分類結果分析 表2顯示,樣本數為30~50個時,PCA-SVM模型對測試集的病害識別率全部達到90%及以上,尤其當早疫病測試集樣本數為20個時,識別率達到100%,隨著樣本量的增加,早疫病識別效率相應降低,早疫病訓練樣本量為60個時,測試集的識別率僅為88%,結果表明,識別率大小受樣本集大小影響,也證實PCA方法對樣本數量有一定要求,在灰霉病訓練樣本數為60個時,測試集的識別率僅為80%,這種情況下要尋找新的分類模型解決大樣本下的識別率問題。
遺傳算法以種群為基準,通過計算隱藏在種群中的解集來描述實質性的問題,每個個體的染色體攜帶特征不同,導致個體之間存在差異,多個個體之間的差異性組成一個個體種群,解集計算就是對種群適應度、交叉概率(Pc)、變異概率(Pm)等參數的選擇,通常在算法執行過程中要對個體進行編碼產生新個體,通過不同方式的交叉、變異產生不同的Pc、Pm,選擇子代中適應度最大的個體替代父代中適應度最小的個體,稱作迭代尋優[10-11]。目前GA參數取值有一定的范圍,種群大小在20~100個之間,Pc為0.40~0.99,Pm為0.001~0.100。分類器的輸入同樣是樣本數據的特征參數,但分類模型中的輸入信號為原始特征參數,不用對數據降維,這是GA-SVM模型與PCA-SVM模型的不同之處,這既保留了原始信息,又能夠自動定參。
1.3.1 GA-SVM分類模型的參數分析
1.3.1.1 種群大小(M) 根據試驗要求及樣本對結果的影響程度決定初始種群大小(M),數目較大時,隱藏解的信息量相對較大,樣本集的全局最優解相對更容易獲得,運行時間要比小種群運行時間長。
1.3.1.2 交叉概率(Pc)Pc是個體之間交叉獲得新個體的概率,其中個體自身作為父代,新個體稱作子代,交叉方式有單點、多點、兩點、洗牌等。Pc高低決定算法收斂速度,一般選擇較大的Pc,本研究選擇單點交叉方式,該方法簡單計算量小[12]。
1.3.1.3 變異概率 新個體的產生在交叉過程中出現變異個體,這種個體的產生導致樣本多樣性,所以Pm大小決定樣本的穩定性,通常選擇Pm最小數值來減少對種群大小和Pc的影響。
1.3.1.4 進化代數 進化代數(Gm)反映樣本尋找最優解的次數,Gm越大迭代時間越長,最優解獲得時間也相對較長,Gm通常在100~500代范圍內[13]。
為更快獲得參數之間的關系來提高尋優效率,本研究引入常見的尋優函數De Jong函數,由De Jong函數確定參數之間的最優組合,對De Jong函數參數確定選用旋轉正交變換法,該方法可以提高參數搜索速度。分類模型算法流程如下[13]:首先編碼SVM中r與σ2;對樣本數據即種群進行初始化,讓樣本隨機產生1組個體;輸入種群個體參數值作為SVM的輸入參數,數據樣本集對模型進行訓練;通過計算樣本數據集正確分類數與樣本集總量的比值獲得適應度;根據適應度大小用輪盤賭法對樣本子代個體進行選擇;重復上述操作完成GA的訓練。GA-SVM分類模型在不同參數下分類結果如表3所示。

表3 GA-SVM分類器在不同參數指標下的分類效果
1.3.2 GA-SVM分類器分類結果分析 由表3可知,測試組第5組在GA-SVM分類器中的分類效果最好,3種病害識別率平均值達到96.67%,此時M=40,樣本數=40,Pc=0.6,pm=0.001,早疫病識別率達到100%,灰霉病識別率 97.5%,晚疫病識別率為92.5%;當M=80,樣本量=60,Pc=0.8,Pm=0.01時,分類器平均識別率最低,早疫病僅識別出52個,總體上講Pm越小,樣本量在30~60個之間識別率越高。就樣本量而言,GA-SVM模型比PCA-SVM模型對樣本量識別范圍大。
為考察遺傳算法中的交叉變異計算是否會對分類器參數產生影響,選擇經PSO算法優化的參數作為分類器的輸入來驗證交叉變異的影響。PSO算法擺脫了智能算法中的交叉、變異、進化等算子操作,將種群個體看作一個粒子,每個粒子都有對應的適應度值,用粒子每一速度下的個體最佳極值和整個群體的最佳極值進行比較,或選擇種群中一部分粒子的最佳極值進行比較。當粒子適應度值大于全局極值時,用適應度值代替全局極值,在優化過程中粒子速度、位置不斷變化,但都是朝著粒子最優解和全局最優解的位置搜索。粒子群算法在尋優過程中減少了交叉、變異計算,相應的運算時間較短。
1.4.1 PSO-SVM分類模型參數分析 PSO算法也會受到參數大小的影響,例如慣性權重(ω)、群體規模(m)、學習因子(c1、c2)、種群結束條件、最大速度(vmax)等。粒子群算法中有2個學習因子——認知學習因子和社會學習因子,學習因子能夠加速算法收斂性以及提高粒子搜索能力,兩者取值一般在 0~4 之間,通常學習因子與ω之間存在一定關系,c1參數取值一般為1.494、2.000、2.050、2.800;c2為1.300、1.494、2.000、2.050。ω在PSO算法中主要來決定粒子的局部搜索能力和全局搜索能力,Eberhart等對ω范圍作出總結,在0.9~1.2之間時算法的優化效果和搜索能力顯著提高。粒子群訓練結束后,把種群中具有最大適應度函數值的r和σ2作為支持向量機模型的最優參數來完成模型搭建。
1.4.1.1 粒子初始化 假設種群大小用Z={Z1,Z2,…,Zm}表示,其中m為粒子數大小,粒子大小用來確定SVM算法中參數的可行解,r的取值在0~1 000 之間,σ2=[0,1]。
例如,在D維的目標空間,粒子數為N個的一個群體中,假設其中的一個粒子記作i,它的D維向量表示為Xi=(xi1,xi2,…,xiD),i=1,2,…,N,該粒子的速度也是一個D維的向量,記作Vi=(vi1,vi2,…,viD),i=1,2,…,N,粒子搜索到的最優位置也稱作個體的極值,記作pbest=(pi1,pi2,…,piD),i=1,2,…,N,整個粒子群搜索到最優位置,即全局極值的表達式為gbest=(pg1,pg2,…,pgD),在找到這2個最優值的過程中,粒子會根據以下公式來時刻更新自己的速度和位置[15-16]:
vid=ω×vid+c1r1(pid-xid)+c2r2(pgd-xid);
(3)
xid(t+1)=xid(t)+vid。
(4)
式中:t表示時間。vid∈[-vmax,vmax],vmax是常數,根據需求設定,用來限制粒子的速度,r1和r2大小則是介于0~1之間的隨機數。
1.4.1.2 適應度函數的選擇 粒子群算法的適應度函數確定方式與GA適應度函數選擇方式相同,都是測試樣本中正確分類個數(ano)與測試樣本總數(tno)的比值,記作f1=ano/tno。
1.4.1.3 粒子群更新 按照公式(3)、(4)找到個體極值與全局極值時,粒子會按照以上公式更新位置與速度,每1個粒子在尋優的過程中都會自動尋找2個極值。
1.4.2 PSO-SVM分類器在不同參數下的分類結果分析 PSO算法中粒子的位置和速度受參數影響較大,以ω、c1、c2、群體規模作為研究參數,用“1.3.1”節中的正交變換法對不同參數下的模型進行驗證,尋找參數與分類模型識別率之間的關系,正交試驗法中的參數選擇4個,按照正交規則一共要產生42個試驗組,從中選擇最佳參數組合建立PSO-SVM分類模型,正交試驗下PSO參數及 PSO-SVM 分類模型對病害分類結果如表4所示。由表4可以看出,測試組7中的平均識別率達到96.67%,樣本量=40,種群規模=35,c1=2.05,c2=2.00;相對樣本量較大的測試組12、16,學習因子對識別率的影響效果不明顯,而樣本量和種群規模對識別率的影響較大,相對于前2種分類模型PSO-SVM分類模型在樣本量為30~40個,種群規模在25~35個之間時,平均識別率普遍在90%以上。說明參數對識別率的影響較大,要想獲得更高的識別率要不斷尋找最優參數。較大的c1、c2對識別率影響也較大,16組試驗中2個因子較大的試驗組平均識別率普遍偏高。
為驗證PCA-SVM分類模型的分類效果,增加對比試驗,其中試驗樣本以及試驗樣本數據特征均來自PCA-SVM試驗,2組對比試驗模型分別為 GA-SVM 群智能分類模型、PSO-SVM群智能分類模型。根據3個分類器模型在不同參數下的分類效果,保留識別率大于90%的試驗組作為評判分類模型性能的指標,對目標試驗組數的認別率分別求平均值,綜合比較3種分類模型分別對番茄早疫病、晚疫病、灰霉病識別效果,不同分類模型的分類試驗分析結果如表5所示。

表4 正交試驗下PSO參數及番茄病害分類結果

表5 不同分類模型試驗分析結果
綜上所述,在3種分類模型中,總體上PSO-SVM分類模型的分類效果最好,但在PCA-SVM模型中,早疫病和晚疫病在3種分類模型中識別率最高,而該模型對灰霉病的識別效果相對略差一些;在PSO-SVM分類模型中,灰霉病的識別率在3種分類模型中最高,達到93.87%,從平均值來看,3種分類模型中PCA-SVM識別率最高,這也證明了作物識別模型不具普遍適用性的特點。