陳 宇,路 陽(yáng)*,蔡 娣,姜 峰,楊化龍,2
(1 黑龍江八一農(nóng)墾大學(xué)電氣與信息學(xué)院,大慶 163319;2 雞西市公安局,雞西 158100)
北方是我國(guó)水稻主要產(chǎn)區(qū),水稻種植過(guò)程中常常會(huì)出現(xiàn)各種病害,其中以稻瘟病、紋枯病、白葉枯病造成的影響最為嚴(yán)重。 這些病害造成水稻品質(zhì)下降、減產(chǎn),給種植戶帶來(lái)嚴(yán)重的經(jīng)濟(jì)損失。 為有效降低損失,需要對(duì)病害進(jìn)行高效正確的識(shí)別。 傳統(tǒng)診斷方法主要依靠植物保護(hù)專家的經(jīng)驗(yàn),肉眼觀察,存在專家數(shù)量不足、主觀性強(qiáng)等缺點(diǎn)。
基于機(jī)器學(xué)習(xí)的水稻病害識(shí)別方法目前主要有兩類(lèi)。 一類(lèi)方法是基于圖像分割提取病斑特征,通常通過(guò)對(duì)水稻病斑圖像進(jìn)行預(yù)處理、病斑分割和特征提取實(shí)現(xiàn)分類(lèi)識(shí)別,比較典型的方法有增長(zhǎng)法[1]、自適應(yīng)閾值分類(lèi)法[2]、非監(jiān)督的顏色聚類(lèi)識(shí)別法[3]、水平集分割法[4]等。 此類(lèi)方法以水稻病斑的顏色、大小和形態(tài)差異為基準(zhǔn),對(duì)于光線、圖片質(zhì)量要求較高,在實(shí)用性等方面不強(qiáng)。 另一類(lèi)方法是基于深度學(xué)習(xí)的水稻病斑分類(lèi)識(shí)別。 通過(guò)深度學(xué)習(xí)提取水稻病斑的特征,排除了人工提取特征的步驟,對(duì)復(fù)雜環(huán)境下的識(shí)別適應(yīng)性更強(qiáng)。 但基于深度學(xué)習(xí)的病斑識(shí)別準(zhǔn)確度與初始訓(xùn)練樣本的數(shù)量和質(zhì)量成正比,且很難在短期內(nèi)構(gòu)建大樣本病害圖像庫(kù)。 支持向量機(jī)(Support vector machine,SVM)的理論和算法成熟,實(shí)用性強(qiáng),其在語(yǔ)音識(shí)別、故障診斷、數(shù)據(jù)預(yù)測(cè)等方面取得了一定進(jìn)展。 支持向量機(jī)能夠處理非線性可分?jǐn)?shù)據(jù),具有受非支持向量影響小、泛化能力較好等優(yōu)點(diǎn),廣泛應(yīng)用在農(nóng)作物病害識(shí)別等領(lǐng)域[5-8]。
本試驗(yàn)以北方寒地采集的水稻葉部病害圖像為研究對(duì)象,采用方向梯度直方圖(Histograms of oriented gradient,HOG)提取水稻病害多種特征,并使用交換粒子群算法(Switching particle swarm optimization,SPSO)尋找支持向量機(jī)最優(yōu)參數(shù),最后在matlabR2018a 環(huán)境下構(gòu)建SPSO-SVM 模型并訓(xùn)練和測(cè)試樣本,以提高識(shí)別速率和準(zhǔn)確性,彌補(bǔ)傳統(tǒng)識(shí)別方法的不足。
選取3 種危害較大的水稻稻瘟病、紋枯病、白葉枯病作為研究對(duì)象。 水稻病害葉片均在自然光下使用手機(jī)拍攝,照片像素為1 312 px×1 104 px。 每種病害選擇100 幅圖像作為樣本,每幅圖像采用JPG 格式存儲(chǔ)。 采集的原始水稻病害圖像如圖1 所示。
圖1 3 種水稻葉部病害圖像Fig.1 Images of 3 kinds of rice leaf diseases
水稻病害圖像采集的過(guò)程會(huì)受到各種因素影響,導(dǎo)致樣本圖像有噪聲、病斑邊緣部分模糊等問(wèn)題。中值濾波是基于排序統(tǒng)計(jì)理論的一種能有效抑制噪聲的非線性信號(hào)處理技術(shù)[9-10]。 其原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替,從而消除孤立的噪聲點(diǎn)。 二維中值濾波輸出為:
其中,f(x,y)、g(x,y)分別為原始圖像和處理后圖像,W為二維模板。 本試驗(yàn)用5 ×5 的二維滑動(dòng)模板,模板內(nèi)像素按照單調(diào)上升排序,濾波降噪后圖像如圖2 所示。
圖2 3 種水稻葉片病害分割的病斑Fig.2 Disease spot segmentation of 3 kinds of rice leaf diseases
方向梯度直方圖(HOG),是用梯度的方向密度來(lái)描述圖像局部特征。 通過(guò)計(jì)算和統(tǒng)計(jì)圖像局部區(qū)域的梯度方向直方圖來(lái)構(gòu)成特征,具有幾何和光學(xué)形變的不變性[11-13]。 本試驗(yàn)中提取HOG 特征步驟如下:
(1)對(duì)圖像進(jìn)行g(shù)amma 校正,歸一化圖像。 由于圖像的顏色信息對(duì)于方向梯度直方圖特征沒(méi)有影響,因此對(duì)濾波后的灰度圖像進(jìn)行平方根gamma 壓縮,歸一化特征向量。 這種壓縮處理有效降低了圖像局部的陰影和光照變化。
(2)求出圖像水平垂直梯度分量。 首先用一維離散微分模板[-1,0,1]及其轉(zhuǎn)置分別對(duì)gamma 校正過(guò)的水稻葉部圖像進(jìn)行卷積運(yùn)算,得到水平方向的梯度分量以及垂直方向的梯度分量。 通過(guò)像素點(diǎn)的垂直梯度和水平梯度,計(jì)算當(dāng)前像素點(diǎn)的梯度幅值和梯度方向,如公式(2)—(5)所示。
其中,Gx(x,y)、Gy(x,y)、H(x,y)分別表示當(dāng)前像素點(diǎn)的水平梯度、垂直梯度和像素值。G(x,y)、α(x,y)分別為當(dāng)前像素點(diǎn)的梯度幅值和梯度方向。
(3)建立梯度方向直方圖。 對(duì)尺寸為64 px×128 px 的水稻葉部病害圖像進(jìn)行分割,分為8 ×16 個(gè)網(wǎng)格,每個(gè)網(wǎng)格的像素為8 px×8 px。 梯度方向范圍為[0,π],平均分成9 個(gè)區(qū)間梯度方向,20°為一個(gè)區(qū)間,加權(quán)投影每個(gè)像素梯度直方圖,建立每個(gè)網(wǎng)格對(duì)應(yīng)的9 維向量。
(4)合成塊,歸一化塊內(nèi)梯度直方圖。 每?jī)蓚€(gè)2 ×2 網(wǎng)格合成一個(gè)塊,每個(gè)塊對(duì)應(yīng)36 維特征向量。 水稻葉部病害圖像的光照變化以及前后背景對(duì)比度差異,會(huì)導(dǎo)致梯度強(qiáng)度變化范圍巨大,需要消除負(fù)面影響,最后進(jìn)行歸一化處理,如公式(6)所示。
其中,v是未經(jīng)歸一化的描述子向量,是v的2 范數(shù),ε是一個(gè)極小的常數(shù)。
(5)特征收集。 如圖3 所示,使用滑動(dòng)窗口法對(duì)水稻葉部病害圖像進(jìn)行掃描,以1 個(gè)網(wǎng)格為1 個(gè)掃描步長(zhǎng),8 ×16 個(gè)網(wǎng)格需要7 個(gè)水平方向掃描窗口和15 個(gè)垂直方向掃描窗口,塊之間會(huì)產(chǎn)生重疊,串聯(lián)所有歸一化后的塊,最后得到36 ×7 ×15 =3 780 維特征向量。
圖3 HOG 特征提取Fig.3 HOG feature extraction
水稻葉部病害特征復(fù)雜,特征維數(shù)大大多于樣本數(shù),樣本數(shù)據(jù)線性可分。 因此,本試驗(yàn)采用基于核函數(shù)支持向量機(jī)(SVM)進(jìn)行訓(xùn)練和分類(lèi)識(shí)別。 支持向量機(jī)算法的基本思想是在特征空間中找到最優(yōu)的分離超平面,使訓(xùn)練集上的正負(fù)樣本間隔最大化。 假設(shè)訓(xùn)練樣本集T={(xi,yi),i=1,2,…,N},其中xi∈Rn,yi∈R,N是訓(xùn)練樣本的大小,超平面的描述如下:
其中ω為權(quán)向量,b為偏移向量,偏移向量決定了超平面與原點(diǎn)平面的距離。 引入松弛變量ξi和定義優(yōu)化問(wèn)題如下:
其中,c是懲罰參數(shù),ξi和是非負(fù)松弛變量。 通過(guò)引入拉格朗日乘數(shù),將公式(8)轉(zhuǎn)化為二元形式,具體如下:
為了避免空間災(zāi)難問(wèn)題,通常將核函數(shù)φ(xi)φ(xj)替換為k(xi,yi)的radial 核函數(shù),核函數(shù)的基本作用就是接受兩個(gè)低維空間里的向量,能夠計(jì)算出經(jīng)過(guò)某個(gè)變換后在高維空間里的向量?jī)?nèi)積值。 本試驗(yàn)采用radial 核函數(shù),即徑向基核函數(shù),公式為:
粒子群優(yōu)化算法(Particle swarm optimization,PSO)源于對(duì)鳥(niǎo)群捕食的研究,其基本思路為:通過(guò)群體中個(gè)體之間的相互協(xié)作和信息共享來(lái)尋求最優(yōu)解。 PSO 的優(yōu)勢(shì)在于簡(jiǎn)單容易實(shí)現(xiàn)并且沒(méi)有過(guò)多參數(shù)的調(diào)節(jié)。 目前廣泛應(yīng)用于函數(shù)優(yōu)化等各種領(lǐng)域[14]。 粒子群算法通過(guò)一群初始化隨機(jī)粒子,通過(guò)迭代尋找最優(yōu)解,粒子通過(guò)公式(13)、(14)進(jìn)行速度更新和位置更新:
式中:i=1,2,…,N,N是粒子總數(shù)。υi是粒子的速度。 rand():介于(0,1)之間的隨機(jī)數(shù)。xi:粒子當(dāng)前位置。c1,c2:學(xué)習(xí)因子,通常c1=c2=2。υi的最大值為υmax(大于 0),如果vi大于vmax,則vi=vmax。 以公式(13)、(14)為基礎(chǔ)形成粒子群算法標(biāo)準(zhǔn)公式,如公式(15)所示:
ω為慣性因子,其值較大時(shí),全局尋優(yōu)能力強(qiáng),局部尋優(yōu)能力弱;其值較小時(shí),全局尋優(yōu)能力弱,局部尋優(yōu)能力強(qiáng)。 動(dòng)態(tài)ω能獲得比固定值更好的尋優(yōu)結(jié)果。
PSO 算法具有在執(zhí)行優(yōu)化任務(wù)時(shí)易于實(shí)現(xiàn)和快速收斂等優(yōu)點(diǎn),但存在早熟收斂、不一致收斂到全局最優(yōu)問(wèn)題,為了克服這一局限性,本試驗(yàn)采用改進(jìn)算法:交換粒子群算法對(duì)支持向量機(jī)的參數(shù)進(jìn)行優(yōu)化。
支持向量機(jī)中比較重要的參數(shù)有兩個(gè):c和γ,c是懲罰因子,即對(duì)誤差的寬容度,可與任意核函數(shù)搭配,c系數(shù)越高,表示不能允許誤差出現(xiàn),但是容易過(guò)擬合;c系數(shù)越小越容易出現(xiàn)欠擬合。c過(guò)大或者過(guò)小都會(huì)導(dǎo)致SVM 泛化能力變差。γ是徑向基核函數(shù)自帶的一個(gè)參數(shù),隱含地決定了當(dāng)數(shù)據(jù)被映射到新的特征空間后的分布,當(dāng)γ值較小,支持向量較多,當(dāng)γ值較大,支持向量則較少。 支持向量的多少會(huì)大大影響支持向量機(jī)的訓(xùn)練和預(yù)測(cè)速度[15]。
在交換粒子群算法中,通過(guò)引入具有馬爾可夫交換參數(shù)的模式相關(guān)速度更新方程,以克服局部搜索和全局搜索之間的矛盾。 通常在搜索早期,群體中的粒子保持其獨(dú)立性和群體多樣性,這樣有助于擴(kuò)大搜索范圍并避免過(guò)早收斂到局部最優(yōu)。 在搜索過(guò)程的后期,所有群可能會(huì)收斂到最佳粒子,以獲得更準(zhǔn)確的解決方案。 粒子的速度和位置根據(jù)公式(16)、(17)更新:
式中,ω(ξ(k))、c1(ξ(k))和c2(ξ(k))是慣性權(quán)重和加速度系數(shù),都依賴于馬爾可夫鏈。 設(shè)ξ(k)為馬爾可夫鏈,它在有限狀態(tài)空間S={1,2,…,N}中具有概率轉(zhuǎn)移矩陣即從i到j(luò)的轉(zhuǎn)移速率和可以通過(guò)當(dāng)前搜索信息進(jìn)行調(diào)整,以平衡全局和局部搜索能力,如公式(18)所示:
其中,S為群大小,|L|為搜索空間中最長(zhǎng)對(duì)角線的長(zhǎng)度,D為目標(biāo)問(wèn)題的維數(shù),xid為第i個(gè)粒子的第d個(gè)值為整個(gè)群中平均點(diǎn)ˉx的第d個(gè)值,可通過(guò)公式(19)計(jì)算:
利用交換PSO 優(yōu)化算法對(duì)SVM 兩個(gè)重要參數(shù)求解最優(yōu)值,優(yōu)化流程為:首先初始化粒子群位置與速度,設(shè)定核函數(shù)參數(shù)的初始參數(shù)數(shù)值,計(jì)算每個(gè)粒子的適應(yīng)度,根據(jù)適應(yīng)度更新當(dāng)前Pbest、Gbest,更新粒子的位置和速度,直到找到粒子最優(yōu)解Pbest 和種群最優(yōu)解Gbest,最后最優(yōu)解Gbest 即為需要的最優(yōu)參數(shù)。 交換PSO 偽代碼見(jiàn)表1,交換PSO 優(yōu)化SVM 參數(shù)流程如圖4 所示。
圖4 交換PSO 算法優(yōu)化SVM 參數(shù)流程Fig.4 Optimization of SVM parameters flow by switching PSO algorithm
表1 交換PSO 偽代碼Table 1 Switching PSO pseudo code
對(duì)于3 種常見(jiàn)水稻葉部病害稻瘟病、紋枯病、白葉枯病,每種病害各取100 幅圖像進(jìn)行病害識(shí)別,取其前70 幅總計(jì)210 幅圖像作為訓(xùn)練圖像集,剩余圖像作為測(cè)試圖像集。 對(duì)樣本的圖像進(jìn)行預(yù)處理,使用HOG 進(jìn)行特征提取。
定義交換 PSO 參數(shù):交換 PSO 粒子數(shù)設(shè)置為20個(gè),最大迭代次數(shù)設(shè)置為50,學(xué)習(xí)因子c1設(shè)置為1.6,c2設(shè)置為1.5,慣性權(quán)重ω 設(shè)置為0.6,懲罰參數(shù)與核函數(shù)參數(shù)范圍為[0.1,1 000]。 迭代結(jié)果如圖5 所示。 構(gòu)建SVM 模型,使用HOG 提取的特征構(gòu)造訓(xùn)練集進(jìn)行訓(xùn)練和識(shí)別,水稻葉部3 種病害的識(shí)別結(jié)果如表2 所示。
圖5 SPSO 優(yōu)化結(jié)果Fig.5 SPSO optimization results
表2 3 種水稻葉部病害識(shí)別結(jié)果Table 2 Identification results of 3 kinds of rice leaf diseases
從表2 可以看出,當(dāng)定義SVM 模型參數(shù)c和γ值為78 和0.3,3 種水稻葉部病害平均識(shí)別率為88.2%,訓(xùn)練時(shí)間為1 084 s。 利用PSO 算法優(yōu)化SVM 模型參數(shù)得到c和γ值為100 和0.7,此時(shí)參數(shù)c達(dá)到最優(yōu),3 種水稻葉部病害平均識(shí)別率為89.3%,訓(xùn)練時(shí)間減少323 s。 利用SPSO 算法優(yōu)化SVM 模型參數(shù)得到c和γ的最優(yōu)值為100 和0.4,不僅3 種水稻葉部病害平均識(shí)別率最高,達(dá)到93.2%,而且訓(xùn)練時(shí)間最少,僅為459 s。
基于交換粒子群算法優(yōu)化后的支持向量機(jī)對(duì)3 種水稻葉部病害進(jìn)行識(shí)別,取得了較好的識(shí)別效果。首先采用中值濾波對(duì)3 種水稻葉部病害樣本圖像進(jìn)行預(yù)處理,并采用方向梯度直方圖構(gòu)建特征向量數(shù)據(jù)庫(kù),然后構(gòu)建支持向量機(jī),利用交換粒子群算法選取最優(yōu)支持向量機(jī)參數(shù),通過(guò)驗(yàn)證,平均識(shí)別率為93.2%。 該算法與不進(jìn)行優(yōu)化的支持向量機(jī)和僅用基本粒子群優(yōu)化的SVM 相比,訓(xùn)練速度更快,泛化能力更強(qiáng),而且所需的訓(xùn)練樣本需求數(shù)量遠(yuǎn)遠(yuǎn)小于深度學(xué)習(xí)方法,可為水稻病害識(shí)別診斷提供新的思路。
上海農(nóng)業(yè)學(xué)報(bào)2021年6期