蔡道清 李彥明 覃程錦 劉成良
(上海交通大學機械與動力工程學院, 上海 200240)
自動導航是農(nóng)業(yè)智能化的核心要素。在受環(huán)境因素影響、衛(wèi)星信號差或農(nóng)田地塊邊界不規(guī)則時,視覺環(huán)境識別與導航成為智能農(nóng)機導航的關(guān)鍵手段?;跈C器視覺的導航路線檢測算法是自動導航系統(tǒng)的核心內(nèi)容[1]。導航路線[2-4]主要包括農(nóng)作物形成的作物線[5-7]以及農(nóng)田的邊界線[8-9]。在航線檢測過程中,其核心算法是圖像分割,即有效分離農(nóng)田里的不同區(qū)塊,為后續(xù)的邊界提取做準備。受限于硬件計算能力的不足,以及邊界檢測的實時性要求,傳統(tǒng)圖像分割算法是基于農(nóng)田圖像中不同區(qū)塊的顏色差異進行分割[10-12],此類算法優(yōu)勢在于運行速度快,可以用于實時檢測,但對自然光照的魯棒性能較差。農(nóng)業(yè)車輛多是戶外作業(yè),即使是同一天,不同時刻的自然光照不同,因而無法適應光照變化的算法在實際應用中局限性比較大。針對自然光照的多變性,國內(nèi)外研究人員提出了變換圖像顏色空間的方法,由RGB圖像轉(zhuǎn)換到Y(jié)UV圖像[13-14]、HSV圖像[15]、光照不變圖[16-17]等,結(jié)果證明,此類算法一定程度上能夠有效減弱光照的影響,且能夠滿足農(nóng)機實時性要求。
上述基于顏色差異和顏色空間變換的邊界檢測算法是基于模型和知識的檢測算法,而基于機器學習的田塊邊界檢測算法是基于特征數(shù)據(jù)的訓練學習方法,在不同光照條件、不同檢測地況的訓練樣本充足的條件下,通過合適的特征提取與選擇,機器學習算法能夠得到準確的基于特征數(shù)據(jù)的不同地塊的分類結(jié)果,而且受自然光照的影響很小。隨著硬件計算能力的提升,機器學習算法在機器視覺中得到了應用[18],但很少應用在農(nóng)機自動導航方面。
本文提出一種基于機器學習的水田田埂邊界檢測算法。采用線性迭代聚類算法(Simple linear iterative cluster, SLIC)[19]進行水田圖像超像素分割預處理,提取超像素的顏色特征、紋理特征,構(gòu)成19維特征向量,作為支持向量機(Support vector machine,SVM)[20]模型訓練的輸入,通過訓練好的SVM模型識別圖像中不同區(qū)塊,進而分割圖像,并采用霍夫變換提取水田田埂邊界。
圖1所示為水田原始圖像,以此為例進行算法說明,圖像尺寸為1 280像素×720像素,采取SLIC超像素分割算法對其預處理,以少量的超像素代替大量的像素來表達圖像特征,能有效減少圖像后處理的計算量。
圖1 水田原始圖像Fig.1 Original picture of paddy field
SLIC水田圖像超像素分割分為兩步:
(1)初始化水田圖像聚類中心
設置聚類中心個數(shù)為k,第i個聚類中心的向量為Ci(li,ai,bi,xi,yi),其中(li,ai,bi)是聚類中心在CIELAB顏色空間的通道值,(xi,yi)是聚類中心在圖像中的坐標。初始化的聚類中心以步長S均勻分布
(1)
式中N——圖像中像素總數(shù)
聚類中心以外的標簽為i(i=1,2,…,k),初始化其他像素的標簽為-1。
(2)迭代聚類過程
n≤nt
(2)
式中nt——預先設定的迭代次數(shù)
迭代聚類過程像素與聚類中心的距離度量采用加權(quán)歐氏距離,距離計算公式為
(3)
(4)
(5)
式中dc——像素與聚類中心在CIELAB顏色空間的歐氏距離
ds——像素與聚類中心的空間坐標歐氏距離
D′——像素與聚類中心的距離度量
Nc、Ns——加權(quán)系數(shù)
圖2 SLIC分割效果Fig.2 SLIC segmentation diagram
SLIC水田圖像超像素分割能生成緊湊、近似均勻的超像素,且算法運行速度快,SLIC分割效果如圖2所示。
對每一個超像素,提取9維顏色特征和10維紋理特征組成19維特征向量,特征向量vj表達為
vj=(μjr,μjg,μjb,μjh,μjs,μjv,μjm,σjh,σjs,σjv,hj1,hj2,hj3,hj4,hj5,hj6,hj7,hj8,hj9)
(6)
式中j——超像素編號
μjr、μjg、μjb——超像素內(nèi)所有像素的RGB三通道均值
μjh、μjs、μjv——超像素內(nèi)所有像素的HSV三通道均值
σjh、σjs、σjv——超像素內(nèi)所有像素的HSV三通道的方差
μjm——超像素內(nèi)所有像素的梯度幅值均值
hj1~hj9——超像素內(nèi)基于像素梯度方向直方圖的9維向量值
圖4 超像素顏色特征圖Fig.4 Graphic representations of superpixel color features
顏色特征是基于RGB和HSV顏色空間的超像素內(nèi)像素值的統(tǒng)計特性,即計算超像素內(nèi)所有像素的RGB三通道均值和HSV三通道均值及HSV三通道的方差。采用HSV顏色空間,是因為HSV顏色空間對于自然光照變化的敏感度低,一定程度上可以減弱自然光照對顏色特征的影響。HSV三通道的方差計算公式為
σ2=∑(z-μ)2p(z)
(7)
式中z——超像素內(nèi)像素(x,y)的HSV三通道值
μ——超像素內(nèi)所有像素的HSV三通道均值
p(z)——超像素內(nèi)像素值為z的概率
圖3 超像素顏色特征提取流程圖Fig.3 Flow chart of superpixel color feature extraction
顏色特征提取流程如圖3所示。超像素顏色特征圖如圖4所示。
不同于顏色特征,圖像的紋理特征表征了像素及其空間鄰域的像素值分布,描述了圖像區(qū)域所對應物體的表面性質(zhì)。
本文提取的紋理特征包括兩部分:超像素內(nèi)所有像素的梯度幅值均值和基于像素梯度方向直方圖的9維向量。
像素梯度幅值的計算公式為
(8)
其中
Gx(x,y)=I(x+1,y)-I(x,y)
(9)
Gy(x,y)=I(x,y+1)-I(x,y)
(10)
式中I(x,y)——(x,y)處像素灰度
G(x,y)——(x,y)處像素梯度幅值
Gx(x,y)——(x,y)處像素橫向梯度
Gy(x,y)——(x,y)處像素縱向梯度
實際處理中,在計算橫向梯度Gx和縱向梯度Gy的時候,采用Sobel邊緣算子做卷積。
(11)
式中I——水田圖像灰度
紋理特征第1部分梯度幅值均值的提取流程如圖5所示。
圖5 紋理特征第1部分的提取流程圖Fig.5 Flow chart of the first part of texture feature extraction
超像素梯度幅值均值特征圖如圖6所示。
圖6 超像素梯度幅值均值特征圖Fig.6 Graphic representation of superpixel gradient amplitude mean feature
紋理特征的第2部分梯度方向直方圖9維向量是基于像素梯度方向直方圖的9維向量。利用式(11)的Gx和Gy,計算坐標(x,y)處像素的梯度方向值
(12)
式中α(x,y)——像素(x,y)梯度方向值,取值范圍為0°~360°
以如下規(guī)則構(gòu)建9維紋理特征向量:
(1)如圖7所示,將0°~360°均勻分成9部分,每部分對應9維特征向量的一個值。初始化9維向量各個值為0。
圖7 0°~360°角度分塊圖Fig.7 Block diagram of 0°~360° angle
(2)遍歷超像素內(nèi)所有像素,根據(jù)像素的梯度方向值,在對應的角度區(qū)域里計算加權(quán)值。即當像素(x,y)的梯度方向值α(x,y)滿足
α(x,y)∈fq(q=1,2,…,9)
(13)
式中fq——第q個角度范圍
計算fq對應的向量值hq的加權(quán)值,以像素幅度值作為加權(quán)系數(shù)
hq←hq+G(x,y)×1
(14)
式中 ←——賦值運算
本文訓練樣本集為人工標注的超像素,取超像素的19維特征向量作為SVM模型訓練數(shù)據(jù)輸入,訓練標簽為(-1,1),規(guī)定田埂區(qū)域的超像素為正樣本(1),非田埂區(qū)域的超像素為負樣本(-1)。超像素來源于一天中不同時刻不同水田采集的20幅水田圖像,進行標注得到了1 266個正樣本和2 749個負樣本,從而得到訓練樣本集合(vj,mj)。j=1,2,…,4 015;mj∈(-1,1)。
水田田埂識別SVM模型訓練的目標是找到能夠劃分田埂和非田埂兩類樣本且使得兩類樣本間隔最大的超平面,超平面可以通過線性方程表示為
ωTv+b=0
(15)
式中ω——超平面的法向量,決定了超平面的方向
b——位移項,決定了超平面與原點的距離
v——訓練樣本集
為了最大化兩類樣本的間隔,SVM要解決的是二次優(yōu)化問題
(16)
針對非線性可分的樣本,選擇合適的核函數(shù)轉(zhuǎn)換特征向量,進而達到劃分樣本的目的。
比較徑向基核函數(shù)、多項式核函數(shù)和線性核函數(shù),因為線性核函數(shù)的分類效果更好,因此最終選定線性核函數(shù)作為SVM模型的核函數(shù)。
另外,采用交叉驗證的方法來避免SVM對訓練樣本過擬合,即將訓練樣本隨機分成兩部分:90%樣本作為模型訓練樣本,用于訓練SVM模型;10%樣本作為驗證集,用于驗證模型準確率,以驗證集準確率最高的模型作為輸出模型。
經(jīng)過SLIC超像素分割后,對每個超像素提取特征,并加載訓練好的SVM模型,對每個超像素類型進行預測。圖8顯示了田埂識別分類效果,其中紅色表示田埂區(qū)域。從分類的結(jié)果圖中可以看出,水田田埂的超像素基本被準確分類。
圖8 松江區(qū)09:00水田橫向田埂分類結(jié)果圖Fig.8 Classification results of paddy field with horizontal ridge at 09:00 in Songjiang District
在洋馬VP6E型水田直播機上安裝ZED相機,相機以1 280像素×720像素的分辨率,30幀/s的速度采集圖像。算法處理器選用的是NVIDIA下的Jetson TX2產(chǎn)品,Jetson TX2配備8 GB運行內(nèi)存和32 GB的存儲空間,CPU的主頻可以達到2 GHz?;赨buntu操作系統(tǒng),在CMake編譯環(huán)境下采用C++語言對算法進行編程實現(xiàn)。在超像素分割以及SVM分類階段,使用了計算機視覺開源庫OpenCV中的SuperpixelSLIC和SVM函數(shù)。試驗環(huán)境是上海市松江區(qū)和浦東區(qū)的未播種水田,試驗平臺及環(huán)境如圖9所示。
圖9 水田田埂邊界檢測試驗現(xiàn)場Fig.9 Experiment scene of paddy field boundary detection
水田直播機以0.8 m/s的速度行駛時,ZED相機實時采集水田圖像,Jetson TX2在0.6 s內(nèi)完成一幅水田圖像中田埂部分的識別。針對一天中不同時刻的松江區(qū)水田田埂,經(jīng)過SVM分類過后的田埂識別情況如圖10、11所示。結(jié)合圖8的分類結(jié)果圖,可以看出,所用機器學習算法對松江區(qū)水田里的不同類型田埂,以及不同時間段內(nèi)(不同光照)的田埂,都能夠很好地識別。
為了驗證田埂識別算法具有一定的泛化能力,在上海浦東區(qū)水田里應用此算法。試驗在16:00進行,試驗結(jié)果如圖12所示。分類結(jié)果圖表明此算法在不同的水田里均可有效檢測出水田田埂部分。
圖10 松江區(qū)09:00水田縱向田埂分類結(jié)果Fig.10 Classification results of paddy field with vertical ridge at 09:00 in Songjiang District
圖11 松江區(qū)15:00水田縱向田埂分類結(jié)果Fig.11 Classification results of paddy field with vertical ridge at 15:00 in Songjiang District
圖12 浦東區(qū)16:00水田縱向田埂分類結(jié)果Fig.12 Classification results of paddy field with vertical ridge at 16:00 in Pudong District
以F1分數(shù)作為田埂檢測算法的評價指標。在松江區(qū)和浦東區(qū)拍攝的圖像中,選擇50幅包含田埂的水田圖像,將超像素的分類結(jié)果與實際人工標注的結(jié)果對比,同時統(tǒng)計超像素識別的精準率和召回率。50幅水田圖像經(jīng)過超像素分割后生成21 875個超像素,經(jīng)過人工標注后,正樣本超像素(田埂部分的超像素)數(shù)目為3 365,負樣本超像素(非田埂部分的超像素)數(shù)目為18 510。田埂識別算法的分類統(tǒng)計結(jié)果如表1所示。
表1 田埂識別算法分類結(jié)果統(tǒng)計分析Tab.1 Statistical analysis of classification results
表1中,真正樣本表示預測為1,實際也為1的超像素;真負樣本表示預測為0,實際也為0的超像素;假正樣本表示預測為1,實際為0的超像素;假負樣本表示預測為0,實際為1的超像素。
由表1可知,所提算法能夠準確分割出水田中田埂區(qū)域和非田埂區(qū)域,F(xiàn)1分數(shù)指標達到90.7%,從而驗證了算法的有效性。
因為航線是直接引導農(nóng)機自動行駛的信息,因此,在分類出水田田埂區(qū)域后,需要進一步提取田埂邊界線,以此作為農(nóng)機行駛的航線。
以圖10的水田田埂分類結(jié)果為例,說明田埂邊界提取的過程?;赟VM的分類結(jié)果,將水田圖像二值化,得到二值化圖,如圖13a所示。使用Canny邊緣檢測算子檢測二值化圖的所有邊緣,得到邊緣圖,如圖13b所示。使用霍夫變換檢測邊緣圖中所有直線,霍夫變換檢測出的直線不止一條,如圖13c所示。選取離圖像底部中心像素點(640,720)最近的直線作為田埂邊界,如圖13d所示,紅線為提取的田埂邊界線。從圖中可以看出,田埂邊界能夠被有效提取出來。
如圖13d所示,綠色虛線為人工標注的田埂邊界線。以算法提取的田埂邊界線和人工標注的邊界線之間的夾角作為評判邊界線檢測精度的標準。統(tǒng)計上文中選取的50幅水田圖像中紅綠兩線的夾角,均值為1.63°,方差為0.14。因此,由本文算法提取的田埂邊界線精度滿足自動導航的要求。
圖13 水田田埂邊界提取圖Fig.13 Graphic representations of farmland ridge boundary extraction
Jetson TX2在0.6 s內(nèi)完成一幅水田圖像中田埂部分的識別(包含了圖像預處理),后續(xù)導航線識別時間在0.2 s以內(nèi),因而算法處理一幀圖像總運行時間在0.8 s以內(nèi)。同時,由于相機前視距離可以達到10 m,且水田直播機的行進速度為0.8 m/s,因此0.8 s的算法處理時間能夠較好地滿足水田直播機運動中實時檢測田埂的需要。
(1)對水田原始圖像進行SLIC超像素分割預處理,有效減少了后續(xù)圖像處理的計算量,并為支持向量機的模型訓練提供了大量的樣本,僅需要20幅圖像便可獲得上千個特征樣本,解決了機器學習算法需要大量樣本的問題。
(2)考慮到田埂區(qū)域和非田埂區(qū)域在顏色和紋理上都存在一定差異,因而在特征提取階段提取了9維顏色特征向量和10維紋理特征向量,充分利用了圖像信息,彌補了傳統(tǒng)圖像分割算法依賴圖像顏色信息的不足。
(3)對不同時間段、不同地塊的多幅農(nóng)田圖像進行處理,結(jié)果表明,本文算法能夠準確分割出水田中田埂區(qū)域和非田埂區(qū)域,F(xiàn)1分數(shù)達到90.7%。在NVIDIA的Jetson TX2硬件平臺上,算法總運行時間在0.8 s以內(nèi),有效地滿足了水田直播機的實時性要求。