劉柏森,劉志衡,孔偉力
(黑龍江工程學(xué)院 電氣與信息工程學(xué)院,黑龍江 哈爾濱 150001)
根據(jù)農(nóng)業(yè)農(nóng)村部發(fā)布的農(nóng)業(yè)綠色發(fā)展技術(shù)導(dǎo)則(2018—2030),推動智慧型農(nóng)業(yè)技術(shù)模式發(fā)展對構(gòu)建農(nóng)業(yè)綠色發(fā)展的技術(shù)體系起著重要的支撐作用。高光譜圖像[1]處理是智慧農(nóng)業(yè)技術(shù)鏈中重要的一環(huán)。高光譜有著波段數(shù)量多且連續(xù)、光譜范圍狹小、數(shù)據(jù)信息量大、信息冗余高等特點,面對復(fù)雜農(nóng)業(yè)生產(chǎn)情況,特別是在有害生物遠(yuǎn)程診斷[2]、實時監(jiān)測和地物識別分類等方面有著獨到的優(yōu)勢。然而1幅高光譜[3]往往由數(shù)百甚至上千個波段組成,這些同一像元的光譜信息帶來了數(shù)據(jù)量的幾何性增長,這都造成了信息提取和處理的困難。
在已往的高光譜數(shù)據(jù)研究中,分類是一個重點和熱點。分類需要人工標(biāo)記,但這是一個費時費力的過程,盡量減少人工樣本的數(shù)量,達到好的高光譜數(shù)據(jù)分類效果是分類研究的主要目的。目前已經(jīng)有一些取得了一定成果的成熟的高光譜圖像分類算法。而本文提出的聚類系統(tǒng),相較于分類是一種無監(jiān)督的分類學(xué)習(xí)方法,區(qū)別在于沒有任何先驗知識,不需要人工標(biāo)簽,由計算機自主對數(shù)據(jù)進行分類處理。目的是將高光譜樣本中所有相同或相似的元素盡可能分為一類,而使不在同一類中的元素盡可能不相似。在經(jīng)過這個過程以后,數(shù)據(jù)量會大大減少,為下一步的處理和應(yīng)用帶來方便。因此,高效而準(zhǔn)確的聚類結(jié)果對高光譜圖像數(shù)據(jù)的處理及應(yīng)用有非常積極的影響,對比依賴傳統(tǒng)經(jīng)驗的分類算法[4],聚類可更深層次地發(fā)現(xiàn)一些數(shù)據(jù)的本質(zhì)特征,更好地了解地物目標(biāo)。
深度學(xué)習(xí)[5]的威力在于其能夠逐層地學(xué)習(xí)原始數(shù)據(jù)的多種表達方式。每一層都以前一層的表達特征為基礎(chǔ),抽取出更加抽象、更加適合復(fù)雜情況的特征,然后做一些分類等任務(wù)。堆棧自動編碼機(Stacked Autoencoder,SAE)實際上就是做這樣的事情,它由多層能自我表達的自編碼器[6](autoencoder,AE)組成,每一個自編碼機通過虛構(gòu)1個x→h→x的三層網(wǎng)絡(luò),學(xué)習(xí)得出1種特征變化h=f(wx+b)。實際上,當(dāng)訓(xùn)練結(jié)束后,輸出層已經(jīng)沒有什么意義了,一般將其去掉,即將自編碼器表示為x→AE→h。
每一個自編碼器都有三層神經(jīng)網(wǎng)絡(luò):輸入層、隱含層、輸出層,一般選用sigmoid或者relu函數(shù)作為神經(jīng)元激活函數(shù)。對于輸入矩陣X,經(jīng)過隱層特征表達h(x)=σ(WX+b),讓它能夠接近或重構(gòu)輸入數(shù)據(jù)X。在編碼器損失函數(shù)中,通過反向傳播算法將誤差更新到每一個神經(jīng)元參數(shù)上完成1次訓(xùn)練。假設(shè)aj(x)代表隱層第j個神經(jīng)元,對于輸入矩陣X,在正向傳播過程中,隱含層的激活單元的輸出可以表示為a=relu(WX+b),W是連接輸入層和隱含層的權(quán)值矩陣,b是兩層之間的偏差值矩陣。
在神經(jīng)網(wǎng)絡(luò)中,一般使用均方差作為損失函數(shù),可以寫成
(1)
(2)
在整個編碼過程中,需要得到優(yōu)化的連接權(quán)重W和偏差b,采用在使用批量訓(xùn)練的同時使用反向傳播的算法來實現(xiàn);權(quán)值在梯度下降法的作用下每迭代1次便更新1次。方程如下
(3)
(4)
式中:ε表示學(xué)習(xí)率。
當(dāng)損失函數(shù)下降到一定值,對輸出和輸入進行對比,如果相似,認(rèn)為成功地進行了自動編碼訓(xùn)練。而中間的編碼層,就是想要的數(shù)據(jù)特征。堆棧自動編碼機就是把特征表達h再作為原始信息,訓(xùn)練1個新的自編碼器,如此循環(huán)。最后系統(tǒng)看起來如圖1所示。
圖1 堆棧自動編碼機
相較于傳統(tǒng)的特征提取方式,如主成分分析(PCA)、線性判別分析法(LDA)等,堆棧自動編碼機能夠做到無需先驗知識提取特征的同時獲得很好的非線性映射能力。
在聚類中根據(jù)不同的需要,選擇不同的距離來度量相似度,如歐氏距離、明考斯距離以及曼哈頓距離。在眾多距離標(biāo)準(zhǔn)中,最常用也最直接的是歐氏距離,所以本文采用歐式距離。
假設(shè)高光譜圖像數(shù)據(jù)有N個波段[7],每幅單波段圖像有M個樣本像元點,則第i個像元點的光譜向量可以表示為Xi={xi1,xi2,…,xiN},其中,1≤i≤M。第i個樣本和第j個樣本的歐氏距離可以表示為
(5)
每個波段的光譜差異用同等的權(quán)重來計算,然后再求和以計算兩個樣本的整體波段差異,這個差異也就是前面說到的相似性,距離越小,相似性越大,將它作為衡量樣本點是否為同一類的標(biāo)準(zhǔn)。
實際聚類中用于判斷迭代次數(shù)的準(zhǔn)則函數(shù)一般采用誤差函數(shù)來表示,設(shè)聚類結(jié)果要聚成K類,當(dāng)采用歐氏距離作為相似性度量時,準(zhǔn)則函數(shù)可以表示為
(6)
式中:Vk表示第k個類中心。
設(shè)Ck為第k個類的所有樣本數(shù)據(jù)集合,則
Ck={Xi∈S|k=argmind2(Xi,Vk)}.
(7)
由此可得聚類中心為
(8)
傳統(tǒng)的K-means算法有著計算量大、奇異值對計算結(jié)果影響大的缺點,這些缺點通過SAE提取特征去減小,而放大它對數(shù)據(jù)分類的能力。
在經(jīng)過堆棧自動編碼機訓(xùn)練之后,原本數(shù)據(jù)量x降維到hn,通過圖像重構(gòu),計算損失函數(shù):L=-log(Px|x′),來達到約束特征重構(gòu)圖像的目的,如圖2所示。
圖2 SAE訓(xùn)練過程
其中,循環(huán)3次的網(wǎng)絡(luò)結(jié)構(gòu)變化如圖3所示。
圖3 循環(huán)過程中維數(shù)變化
處理SAE輸出的高光譜數(shù)據(jù)的K均值算法和經(jīng)典的K均值算法思路大致相同,可以概括為以下幾步:
1)初始化:確定初始聚類中心,隨機挑選原始高光譜數(shù)據(jù)樣本的k個點作為第1次聚類的聚類中心;
2)聚類:計算樣本集中的其他樣本點到選定的k個聚類中心的歐氏距離,并將樣本點分別歸到距離其歐式距離最小的類別中,作為同一類;
3)重新計算聚類中心:分別計算各類內(nèi)樣本的平均值,作為每一類的新的聚類中心;
4)循環(huán)迭代:重復(fù)執(zhí)行2)和3),直到循環(huán)次數(shù)達到最大值;
5)聚類結(jié)束:取最后1次循環(huán)的結(jié)果作為聚類結(jié)果,計算所有樣本的聚類精度OA(Overall Accuracy)和各個類的聚類精度。
高光譜數(shù)據(jù)的K均值聚類算法流程如圖4所示。
圖4 基于光譜信息的高光譜數(shù)據(jù)K均值聚類算法
由AVIRIS成像光譜儀拍攝的美國加利福尼亞州的 Salinas[8]山谷構(gòu)成的Salinas 數(shù)據(jù),它的空間分辨率達到3.7 m。該圖像原本有 224 個波段,但是因為第108~112、154~167和第 224 個波段不能夠被水反射,所以將他們剔除,最后剩下的圖像含有 204個波段[9]。該圖像的尺寸為 512×217,共包含 111 104個像素,其中,有 56 975個像素是背景像素,可應(yīng)用于分類的像素有 54 129個,這些像素總共分為 16 類,包括休耕地(Fallow)、芹菜(Celery)等。這次研究取其中的6類進行聚類分析實驗(將第10~16類共計7類數(shù)據(jù)標(biāo)簽置0,將第1、2類合稱為一類,第3、4、5類合稱為一類,第6、7、8、9四類不做改變)。
用于高光譜聚類實驗的地物包括椰菜、休耕地、殘梗、芹菜、葡萄和土壤,各類地物編號和像素點個數(shù)如表1所示。
表1 Salinas高光譜數(shù)據(jù)地物信息
處理后的數(shù)據(jù)如圖5所示。
圖5 處理后的高光譜圖像展示
為了將高光譜的空間信息結(jié)合到聚類系統(tǒng)中,將高光譜像素點的位置(x,y)作為兩個波段添加到數(shù)據(jù)中,使原來(x,y,b)的數(shù)據(jù)量變?yōu)?x,y,b+2)。其中,x為高光譜圖像縱坐標(biāo),y為高光譜圖像橫坐標(biāo),b為高光譜波段。
首先搭建SAE神經(jīng)網(wǎng)絡(luò),因為數(shù)據(jù)處理后的波段數(shù)為204,所以使用流行的2n次方的數(shù)作為中間神經(jīng)元的數(shù)量,搭建1個6層神經(jīng)網(wǎng)絡(luò)。最中間的隱含層是數(shù)據(jù)最終壓縮的維度,這個維度需要盡量小以幫助在接下來的聚類系統(tǒng)中更快地運算,但也需要達到能夠較好地重構(gòu)圖片的效果。這里用直方圖來計算重構(gòu)程度相似度,隨著中間層數(shù)的變化,重構(gòu)程度的變化如表2所示。
抽取第7層第45個波段與原始圖像的第45個波段的圖像做對比(這個選擇是隨機的,只是從另一個角度來驗證SAE重構(gòu)是否成功。),如圖6所示。
表2 SAE重構(gòu)程度隨中間層變化 %
圖6 原始數(shù)據(jù)和SAE重建的對比(45波段)
可以看到,SAE重建之后的輸出確實很好地還原了原始圖像。以此作為基礎(chǔ)進行下一步實驗。
將SAE的中間層(即特征表達)作為K-means聚類算法的輸入,聚類中心個數(shù)為7個,是圖像所包含的總個數(shù)。測試SAE中間層數(shù)不同的情況下,地物分類的精度得到的數(shù)據(jù)如圖7所示。
可以看到,當(dāng)中間層數(shù)小于5層時,地物目標(biāo)的分類已經(jīng)失真,一些地物精度低于50%,已經(jīng)不能達到數(shù)據(jù)處理的要求。而當(dāng)中間層為5層時,不能夠很好地還原原始圖像,當(dāng)中間層數(shù)大于等于6層時,重構(gòu)程度和地物分類精度才能達到要求[10],綜合考慮下, 6層或7層對于堆棧自動編碼機來說,是一個合適的選擇。
以中間層7層為例,展示一下SAE表達特征之后K-means聚類算法的聚類效果,如圖8所示。
圖7 SAE分類精度隨中間層數(shù)變化
圖8 中間層為7層的SAE特征聚類
重復(fù)10次試驗查看算法表現(xiàn)的穩(wěn)定性,結(jié)果如圖9所示,匯總數(shù)據(jù)如表3所示。
圖9 中間層為7層的SAE結(jié)合聚類精度
從圖中可以看到,算法的平均聚類精度達到了98.378 6%,正負(fù)誤差不超過0.12%,穩(wěn)定性和精度都能滿足使用要求,相對于依賴先驗知識的分類系統(tǒng)[11],在部分地圖上甚至有著更好的表現(xiàn)。而且從原始圖像中可以看出,部分地物的人工標(biāo)簽被模塊化,針對單個像素點級別有些分類與實物并不相同,如果將這部分因為標(biāo)簽差異造成的誤差去除,精度能夠進一步提高。
利用SAE非線性地提取高光譜圖像特征,在能確保重構(gòu)圖像加以驗證的同時,提取高光譜圖像的深層光譜特征,之后借助聚類算法分類地物,達到
表3 地物分類精度及其正負(fù)誤差
良好的聚類效果。但是,本文只是初步地將高光譜圖像的像素點的位置信息加入波段中,沒有很好地利用高光譜圖像的空間信息;此外,聚類算法中K-means算法雖然是基礎(chǔ)有效的一環(huán),但是也可以尋找其他能更好處理高光譜圖像信息的聚類算法加以嘗試。