王丹丹,范 沖,莫東霖
(中南大學,地球科學與信息物理學院,湖南 長沙 410083)
我國是人口大國,同時也是農業大國,各類農作物的結構、產量等種植情況,將對國際農作物價格產生較大影響。及時獲取并掌握農作物生長信息,意義重大。其時效性也不可忽視,精確并快速地了解農作物情況,無論是對生產管理而言,還是對科學決策避免損失而言,都具有重要意義。
遙感應用于農業的傳統方法主要依靠人工解譯,由專業人員結合影像光譜特征進行目視解譯來獲取目標信息,相當費時、費力。后來發展出人機交互解譯[1]、多種技術結合的半自動解譯[2],豐富了分類方法,改善了分類效果。但由于遙感影像存在“同物異譜”和“異物同譜”的現象,精確的作物分類仍然是一項極具挑戰的任務,在這樣的背景下,研究者將機器學習算法如神經網絡(Neural Networks,NNs)、支持向量機(Support Vector Machine,SVM)等應用于遙感影像的分類,并且在分類過程中加入影像的紋理、結構等特征[3-5]。無論是SVM 還是NNs 都屬于淺層學習算法[6],由于計算單元有限,淺層學習的網絡很難有效地表達復雜函數,所以隨著樣本數量的增大以及樣本多樣性增強,淺層模型也逐漸不能適應復雜的樣本。而由多層非線性映射層組成的深度學習網絡擁有強大的函數表達能力,最近的研究表明,通過神經網絡的特征表示,在大規模圖像識別方面[7-9],目標檢測[10-11]和語義分割[12-13]均有應用,在復雜分類上具有很好的效果和效率[14]。2014 年,Chen Y 等[15]首次應用深度學習的自動編碼器進行高光譜數據分類,并取得了良好的分類結果。趙爽[16]首次將卷積神經網絡模型應用于遙感圖像分類試驗,將影像分為建筑、裸地、水體3 類,發現與傳統分類方法相比,卷積神經網絡分類結果精度較高,并且用時較短。曹林林等[17]利用卷積神經網絡的方法,對高分遙感影像進行分類,提取了林地、草地、房屋、道路、裸露地表5 類地物,并驗證了卷積神經網絡可應用于高分遙感影像分類。Ji S 等[18]提出了一種三維卷積神經網絡的方法實現了時空遙感影像農作物的自動分類。段友祥等[19]提出一種改進的Alexnet 模型,實現了油井抽油機示功圖的自動識別,并與目前常用的神經網絡模型進行了比較,發現改進的Alexnet模型在保證識別準確率高的同時有效降低了訓練學習時間,很好地達到了實際應用要求。
基于深度學習在圖像分類方面的顯著效果,利用深度學習的技術對遙感影像進行作物分類,但深度學習對機器的硬件配置要求很高,而且網絡模型龐大,訓練時間和實際運行時間都比較長。因此,系統通過搭建深度學習服務器降低對客戶端機器配置的要求,并使用改進的Alexnet 深度學習模型,在保證分類精度的前提下加速了模型的收斂速度,通過客戶端與服務器的交互實現了可視化的深度學習模型訓練和影像分類的任務,節省人力、物力和財力,為遙感技術在農業應用中的發展、農作物面積統計工作和對農業資源進行優化配置提供重要的科學指導,解放人類勞作,變人工作業為自動化專題分類產品的生產。
深度學習是機器學習中的一種,其借鑒人腦結構構建多層神經網絡,對數據進行不斷地訓練,訓練過程使用特征組合、特征離散化等非線性操作獲取更高抽象程度的數據特征,在一系列復雜分類問題的解決上表現優異。然而深度學習訓練過程資源消耗大,其良好的性能表現是依賴大量性能強大的計算設備的支撐,為了降低對客戶端的配置要求,借助云計算等相關技術搭建深度學習服務器,以容器為基礎打造PaaS 平臺,提供計算服務,統一處理客戶端模型訓練、影像分類等深度學習任務。
平臺即服務(Platform as a Service,PaaS)是一種云計算服務,提供運算平臺與解決方案服務。在云計算的典型層級中,PaaS 層介于軟件即服務與基礎設施即服務之間。PaaS 提供用戶將云基礎設施部署與創建至客戶端,或者借此獲得使用編程語言、程序庫與服務。用戶不需要管理與控制云基礎設施(包含網絡、服務器、操作系統或存儲),但需要控制上層的應用程序部署與應用托管的環境。PaaS 提供軟件部署平臺(runtime),抽象掉了硬件和操作系統細節,可以無縫地擴展(scaling)。開發者只需要關注自己的業務邏輯,不需要關注底層。PaaS 的典型應用有Google App Engine、Sina App Engine。阿里、騰訊等的機器學習計算服務,也大多以這種形式提供。
機器學習特別是深度學習是一個復雜的探索性過程,其新理論、新方法正不斷涌現。新方法的爆炸性增長意味著需求頻繁變動,這給系統的開發、維護帶來極大的困難。在極為有限的資源下,穩定性、可維護性和彈性這些對于深度學習服務器來說是至關重要的指標了,因此服務器選擇開發難度適中、安全性適中、資源調配靈活且能最大化滿足未來需求的PaaS 形式。
由于PaaS 系統是一個多租戶系統,意味著多個用戶的任務共享同一套執行環境。這種情況下,用戶蓄意或者無意的破壞執行環境,進而影響到其他用戶使用計算服務甚至導致其他用戶數據泄露、丟失,這些都是必須著重考慮的問題。為此,必須引入一個機制隔離不同用戶的資源,服務器選擇了成熟的Docker 容器。
容器在系統內核命名空間層面完成了進程間的隔離。容器內運行的程序有自己的根目錄、自己的網絡連接且無法直接訪問容器外的進程,一般情況下容器內所做的更改不影響實際操作系統。容器在外部表現上像是一個輕量化的虛擬機,得益于容器是位于系統內核之上的隔離,用戶程序的依賴庫均可部署也必須部署在“容器鏡像”中 ,因為用戶程序無法直接訪問容器外的環境。部署時只需要安裝Docker 管理器和任務管理器,與用戶程序有關的東西(如Caffe、GDAL 等)均位于容器鏡像中,容器鏡像只需拷貝并導入Docker 管理器即可立即使用。
目前,市面上主流的深度學習框架包括包括TensorFlow、Caffe、Keras、Torch、MXNet、Theano 等,Caffe 是其中較為成熟和完善的一個深度學習框架。考慮到遙感影像復雜的特性和Caffe 性能強大且簡單易用的優點,系統目前提供的是Caffe 這個主流的深度學習框架。后期若需加入對Tensorflow、PyTorch 等主流的深度學習框架,只需一次性修改或者創建對應的鏡像,并導入服務器。不需要在服務器上重復進行繁瑣的依賴庫編譯、部署操作,保證系統部署和維護的簡便性。
基于卷積神經網絡(Convolutional Neural Network,CNN)的深度學習算法,可以自主學習農作物特征減少人工干預,對于復雜背景的遙感影像能排除噪聲干擾等,提高識別效率。CNN 有很多模型,其中Alexnet 就是經典的CNN 模型。AlexNet 是2012 年ImageNet 競賽冠軍獲得者Hinton 和他的學生Alex Krizhevsky 設計的[7]。目前,AlexNet深度神經網絡已廣泛應用于圖像識別方向,是近年來計算機視覺領域取得的一項重要突破。
但Alexnet 模型比較龐大,訓練時間和實際運行時間都比較長,不適合實際的農作物自動分類的應用要求。因此,系統使用簡化的AlexNet 深度學習模型,減少了模型層數和參數,模型結構如圖1 所示。

圖1 網絡模型Fig.1 The network model
網絡總共有4 層,其前3 層是卷積層,后一層是全連接層,全連接層輸出的softmax數即農作物類別數。第一個卷積層C1 中,得到基本卷積數據后,先進行pooling,然后進行一次Relu 以及Norm 變換,作為輸出傳遞到下一層。第二個卷積層C2,對M1 進行一次Relu 后,進行pooling 池化,然后進行Norm 變換。第三個卷積層C3 與第二個類似,對上層進行一個Relu 后,進行pooling 池化。全連接F3 是接上一個C3 進行池化后的全連接層。最后輸出為融合label 的softmax loss。網絡中各個層發揮的作用如表1所示。

表1 網絡結構Table1 The network architecture
該系統運行環境規定一臺儲存服務器、一臺計算服務器以及客戶機若干,儲存服務器使用標準FTP 協議,計算服務器使用XML-RPC 協議,只支持HTTP 基本認證(RFC 1945)。服務器和客戶端通過異步RPC 實現網絡通信,FTP 實現數據傳輸,可以實現多用戶的并發訪問。系統的總體架構如圖2 所示。

圖2 系統的總體架構Fig.2 The overall architecture of the system
系統運行的基本性能要求包括桌面式服務器(1 個8 核Intel Core I7-7700 3.6 GHz、32GB 內存、1 個240G SSD、1 個4T HDD、1 個NVIDIA GeForce GTX 1080 Ti)、客戶端操作系統要求WIN10/WIN7、內存2G、CPU 雙核處理器。
基于深度學習服務的農作物分類系統主要包括地圖操作、數據傳輸、深度學習模型參數自適應、自動識別分類和成果展示與制圖五大模塊(圖3)。
地圖基本操作。各個用戶功能界面基本都有地圖操作的功能,地圖顯示的數據主要包括遙感影像底圖、農田地塊圖斑矢量數據和分類結果數據,視圖操作包括放大、縮小、全圖、平移、固定比例放大、固定比例縮小、前一視圖、后一視圖、標識等功能,數據查詢主要包括屬性查詢。通過地圖基本操作模塊可以實現數據的可視化和屬性查詢功能。
數據傳輸。數據傳輸模塊主要包括數據的上傳和下載兩部分,實現用戶、客戶端和服務器之間的通信。

圖3 系統的功能模塊Fig.3 The function module of the system
深度學習模型參數自適應。由于現有模型的自適應能力不夠,導致外界情況改變時,特征技術無法對外界變化產生同步調整,存在過擬合現象。因此,深度學習模型參數自適應模塊通過持續的訓練,研究確定適合當前樣本數據的卷積神經網絡參數,主要包括學習率、動量等超參數,從而進一步優化遙感數據光譜和空間分辨率組合,獲取最優的農作物分類結果。本模塊包括模型訓練、模型導入和模型刪除等功能。
自動識別分類。模塊主要包括遙感影像農作物分類和地塊作物識別兩部分,選擇訓練好的農作物分類模型,輸入待分類數據,即可實現遙感數據的農作物自動分類,得到高精度的分類結果。
成果展示與制圖。模塊通過導入農作物分類結果,采用分級設色、唯一值等渲染方式進行柵格數據顯示,并可以添加圖例、指北針、比例尺等地圖要素后輸出農田作物覆蓋專題圖。
結合野外樣方采集成果數據和2015 年的GF-2 衛星4 m 分辨率的多光譜遙感影像數據,共提取4 m×4 m 大小的訓練樣本428144 個(玉米134824 個,大豆85336 個,水稻101424 個,建筑物17520 個,林地59416 個,水體29624 個),其中358016 個樣本用于模型訓練,另外70128 作為模型訓練過程中的測試數據。實驗采用快速訓練策略,共計完成10 萬次訓練。系統訓練時間是1.12 h,僅為單機訓練(3.283 h)的1/3。模型訓練過程的loss 和accuracy 如圖4 所示,在前14000 次訓練中,loss 迅速降低,模型精度逐漸提高,之后,模型整體精度達到了0.93,loss 下降緩慢,到最后基本維持在0.95 左右。訓練過程中沒有出現過擬合現象,網絡參數設置也比較合理,得到的模型滿足精度要求。實驗表明,系統使用服務器進行訓練,與單機訓練相比,不僅提高了模型訓練的速度,還降低了客戶端的配置要求。同時系統使用的簡化的Alexnet模型在保證識別準確率高的同時也有效降低了訓練學習時間,很好地達到了實際應用要求。

圖4 深度學習模型損失值和精度曲線Fig.4 The loss value and accuracy curve of deep learning model
遙感數據具有高維、多尺度、非平穩的內部特性和海量、多源、異構的外部特征,包含豐富的空間信息。經典深度學習的方法通過分層學習來得到一種高級抽象數據的架構,模型訓練通過優化學習率、動量、迭代次數等超參數,確定適合當前樣本數據的最優參數,得到適合遙感數據效果最優的分類模型。模型訓練的過程中,服務器每隔1000次會返回訓練的精度和損失值,客戶端實時顯示(圖5),幫助用戶更加方便直觀的觀測訓練的整體趨勢從而判斷分類模型的好壞。若用戶覺得模型不收斂,可以修改參數重新訓練;若模型分類精度高,通過模型導入到遙感影像自動識別分類模塊,即可用于遙感影像或者地塊的農作物自動分類識別。
像元是遙感影像中最基本的單元,遙感影像農作物分類采用像元級分類的方法,綜合考慮窗口內部的結構紋理以及相鄰像元之間的關聯信息,將窗口的分類結果賦予中心像素,從而得到像元級的分類結果(圖6)。分類結束,系統會根據標簽文件對分類結果進行柵格渲染后加載到視圖中,以便用戶更加直觀、形象地了解作物的種植結構。

圖5 神經網絡處理對話框Fig.5 The dialog box for neural network processing

圖6 影像分類結果Fig.6 The result of image classification
地塊是農作地區最重要的景觀要素,傳統的地塊分類采用人工的方式,耗時耗力。地塊作物識別利用深度學習的方法快速準確的判斷地塊的作物類型。地塊作物識別采用隨機取樣的方法,從每個地塊均勻的選取若干個樣本,然后利用訓練好的深度學習模型對樣本進行分類,最后用多數投票的原則確定地塊最終種植的作物類型(圖7)。地塊作物識別克服了人為干擾,準確性好,同時節省了大量的人力、物力和財力。

圖7 地塊識別結果Fig.7 The result of block classification
該系統采用時下流行的深度學習技術對遙感影像進行農作物分類,順應了遙感農業智能化的趨勢。同時考慮到深度學習對機器配置要求很高,系統部署深度學習服務器,提供主流的Caffe 深度學習框架,通過PaaS 提供計算服務,統一處理客戶端的深度學習任務,從而降低客戶端的IT 成本。服務器采用容器隔離解決資源沖突的問題,保證了系統的靈活性和可擴展性。系統利用CNN 的深度學習方法進行模型訓練得到分類模型,然后進行遙感影像農作物識別,得到精確的農田作物覆蓋的專題圖,為作物的生產管理提供空間尺度的有效指導。
服務器目前僅部署了Caffe 的深度學習框架,今后將集成更多主流的深度學習框架,如TensorFlow、Keras、PyTorch 等。此外,為了保證農作物分類的時效性,系統使用簡化的AlexNet 網絡結構,今后將考慮應用深度學習分類效果更好的算法,比如利用深度學習影像分割技術,提高大規模作業的效率。