趙剛,饒元,朱軍,李紹穩(wěn)
(安徽農業(yè)大學信息與計算機學院,安徽 合肥 230036)
農業(yè)物聯(lián)網系統(tǒng)已經成為農業(yè)大數(shù)據(jù)最重要的數(shù)據(jù)源之一[1]。通過將具有感知、通信和計算能力的微型傳感器部署應用于農業(yè)生產管理中,全面、準確、高效地監(jiān)測SPAC(土壤-植物-大氣連續(xù)體)系統(tǒng),能夠有效推進“互聯(lián)網+”現(xiàn)代農業(yè)行動,為精準農業(yè)的實現(xiàn)提供重要支撐[2,3]。
對基于物聯(lián)網技術自動獲取的數(shù)據(jù)進行質量控制是開展高價值農業(yè)生產分析以及基礎科研數(shù)據(jù)應用的重要前提。農情監(jiān)測網絡通常部署在野外環(huán)境,持續(xù)供電困難,有限的通信帶寬也給數(shù)據(jù)可靠交付帶來了極大挑戰(zhàn)。實現(xiàn)節(jié)點長期穩(wěn)定運行與高效數(shù)據(jù)獲取一直是農業(yè)無線傳感器網絡部署應用亟待突破的關鍵瓶頸問題。為提高數(shù)據(jù)采集效率、延長網絡生命周期,研究者們分別從路由算法、數(shù)據(jù)壓縮與融合等方面開展研究,試圖減少節(jié)點所采集數(shù)據(jù)的冗余度、降低網絡中的數(shù)據(jù)傳輸量[4]。
壓縮感知CS(Compressive Sensing)技術的出現(xiàn)為解決上述問題提供了新思路。傳感器節(jié)點能夠以較低的速率在采樣的同時對信號進行適當壓縮,Sink端通過求解一個優(yōu)化問題就可以高概率精確重構原信號,有效減少傳感節(jié)點的數(shù)據(jù)獲取能耗[5]。測量矩陣、信號稀疏表示和重構算法等三要素是決定基于壓縮感知的數(shù)據(jù)采集質量關鍵性因素[6,7]。稀疏基矩陣能夠對采樣信號進行稀疏化,測量矩陣用來表示采樣策略,重構算法的選擇對信號恢復質量和代價有著決定性作用。根據(jù)參與數(shù)據(jù)采集的節(jié)點規(guī)模,常用的壓縮感知方法可分為多節(jié)點協(xié)同調度采樣[7,8]和單節(jié)點調度采樣[5,9~11]。當前農情傳感器成本較高,大規(guī)模應用部署較為困難。實際農業(yè)生產環(huán)境中,通常采用選取少量代表性站點進行監(jiān)測,故單節(jié)點的稀疏采樣方法研究更為實用。然而,針對不同的數(shù)據(jù)對象,壓縮感知三要素的具體實現(xiàn)形式與算法往往存在較大的差異。
為此,筆者全面分析了基于壓縮感知的單節(jié)點稀疏采樣與重構方法,設計并使用Python語言開發(fā)了基于壓縮感知的農情監(jiān)測節(jié)點稀疏采樣決策系統(tǒng),以便于實際農情數(shù)據(jù)采集中,快速有效開展測量矩陣、信號稀疏表示和重構算法等三要素的組合應用效果評估,為實現(xiàn)高效率、高質量農情數(shù)據(jù)的獲取提供支撐。
壓縮感知利用被采集數(shù)據(jù)的稀疏特征和原始數(shù)據(jù)的低秩特性,將物理世界的傳感數(shù)據(jù)進行稀疏化表示,在小于Nyquist采樣率的條件下, 獲取信號的少量離散樣本,然后通過非線性重建算法恢復信號。記某傳感器節(jié)點一定時間內采集的物理量時序為X=[x1,x2,…,xN]T,假設向量ψi是RN空間中的N維列向量,組成基矩陣Ψ= [ψ1,ψ2, ….,ψN],則RN空間的任意信號X都可表示為:
(1)
壓縮感知理論指出,在稀疏條件下,用一個與Ψ滿足有限等距性(Restricted Isometry Principle, RIP)約束的觀測矩陣Φ∈RM×NM?N對X進行線性亞采樣得到觀測值Y,可以通過Y求解優(yōu)化問題精確的重構出X[5,10],該理論可表達為:
s.t.Y=ΦΨα
(2)
基于壓縮感知的節(jié)點稀疏采樣與重構研究需要面對3個方面的問題[7~10]:
Ⅰ、對采樣策略設計M×N測量矩陣Φ,使M盡量小以減少采樣次數(shù)。
Ⅱ、稀疏矩陣的構建,針對X的特征,為稀疏化X而設計稀疏基Ψ。
Ⅲ、對已知的測量信號Y和矩陣Φ、Ψ,根據(jù)重構算法Ω,確定α,重建原始信號X=Ψα。
圖1 單節(jié)點采樣測量矩陣
對于問題Ⅰ,傳統(tǒng)的高斯隨機測量矩陣、隨機貝努利矩陣[6,10]等并不適用。傳感器節(jié)點在同一時刻只能采樣一次,故單節(jié)點采樣調度的測量矩陣每列最多一個“1”,每行有且僅有一個“1”,其余元素全為“0”,其基本結構如圖1所示,該矩陣表示對一個長度為N的離散信號X進行M次采樣。矩陣元素(m,n)=1表示節(jié)點的m次采樣在n時刻發(fā)生,(m,n)=0代表非采樣點。該矩陣包含“1”的列可隨機分布或等間隔均勻分布,分別對應隨機采樣和均勻采樣。隨機采樣中,節(jié)點隨機選擇M個時刻采樣。周期性采樣策略是指節(jié)點按照N/M等間隔采樣M次。M值決定了節(jié)點執(zhí)行采樣的總次數(shù),對于節(jié)點能耗與數(shù)據(jù)恢復效果有著關鍵作用。
定義采樣率p=M/N。采樣率越低,節(jié)能效果越好,但可能會導致較大的數(shù)據(jù)恢復誤差。故設計采樣調度策略時要根據(jù)對恢復數(shù)據(jù)的精度需求來對二者進行權衡。為此,長期的數(shù)據(jù)采集過程中,可結合數(shù)據(jù)的變化特征動態(tài)調節(jié)采樣率。通過降低線性變化數(shù)據(jù)段的采樣率,提高非線性變化數(shù)據(jù)段的采樣率,以平衡采樣率和數(shù)據(jù)恢復間存在的矛盾。具體地,設基準采樣率pbase,將節(jié)點數(shù)據(jù)采集過程分解為多個子采樣段,各段采樣率SRi動態(tài)調整方法如下[5,10]:
(3)
(4)
式(3)通過分析歷史同期數(shù)據(jù)的變化特征來確定當前時間段的采樣率[5],式(4)根據(jù)前期相鄰時間段內數(shù)據(jù)特征預測其未來變化趨勢,動態(tài)調節(jié)點的采樣率[10]。
對于問題Ⅱ,選擇的稀疏矩陣Ψ要能夠很好的稀疏化目標信號X。正交變換基容易實現(xiàn)且重建準確度高。最常用于一維信號稀疏化表示的正交基有離散余弦變換DCT (Discrete Cosine Transform)、離散小波變換DWT (Discrete Wavelet Transform)和差分矩陣等[7,9,11~13]。其中,差分矩陣的逆具有如圖2所示的結構,通常元素ζ>0以確保MD可逆。
圖2 差分矩陣結構圖
對于問題Ⅲ,第1類是基于l0范數(shù)的貪婪迭代算法,其通過迭代的方式尋找稀疏向量的支撐集,并使用受限支撐最小二乘估計來重構信號[14~16]。這類算法計算復雜度較低,但需要較高的采樣率,重建精度低。主要包括匹配追蹤算法MP (Matching Pursuit)、正交匹配追蹤算法OMP (Orthogonal Matching Pursuit)、CoSaMP算法(Compressive Sampling Matching Pursuit)、子空間追蹤算法SP (Subspace Pursuit)以及SL0算法(Smooth Norm)等。第2類是基于l1范數(shù)的最小化松弛算法,將求解最小l0范數(shù)轉化為求解最小l1范數(shù),利用凸優(yōu)化方法求解原問題[14~16]。這類方法重建精度較高,但需要較低的采樣率,計算復雜度較高。特別地,SL0、基追蹤算法BP和子空間追蹤算法SP在一維數(shù)據(jù)重構方面恢復精度較高[5,9,10]。
系統(tǒng)由采樣率調節(jié)、核心功能和輔助功能等組成,采用Python3.6語言開發(fā)。如圖3所示,采樣調節(jié)模塊實現(xiàn)了固定/動態(tài)采樣方式,其中固定采樣即直接使用預先設定的基準采樣率,動態(tài)采樣則是基于歷史同期數(shù)據(jù)特征的自適應調節(jié)采樣率、基于數(shù)據(jù)趨勢預測的自適應調節(jié)采樣率,分別對應于式(3)和式(4)的2種采樣率自適應更新方法。核心模塊包括壓縮感知三要素:測量矩陣、稀疏基和重構算法的實現(xiàn)。輔助模塊有數(shù)據(jù)導入/導出、圖形展示和算法評價等模塊,主要實現(xiàn)數(shù)據(jù)導入、算法評價結果輸出和數(shù)據(jù)圖形化展示等功能。各模塊獨立封裝,使用時直接傳參調用,可擴展性強。
2.2.1采樣率調節(jié)實現(xiàn)
圖4所示的是采樣率調節(jié)組成及實現(xiàn)方式。定義采樣率調節(jié) samplerate_adjust_func類,包含固定采樣函數(shù)fixed_sampling_rate(pbase)、歷史同期數(shù)據(jù)特征自適應采樣函數(shù)hist_sampling_rate(pbase,data)和基于數(shù)據(jù)趨勢預測自適應采樣函數(shù)pre_sampling_rate(pbase, data)。其中,參數(shù)pbase為基準采樣率,data是輸入的歷史數(shù)據(jù)。以上函數(shù)調用NumPy、Math和Scipy工具包,返回值均為采樣率srate。
固定采樣函數(shù)fixed_sampling_rate(pbase)返回基準采樣率。歷史同期數(shù)據(jù)特征自適應采樣函數(shù)hist_sampling_rate(pbase,data)調用Scipy庫函數(shù)scipy.stats.pearsonr()求取所輸入數(shù)據(jù)的皮爾遜系數(shù),再平方后獲得決定系數(shù)R2,隨后采用歷史平均決定系數(shù)與R2的差乘以調節(jié)基數(shù)獲得同期采樣率變化值,最后加上基準采樣率得到實際的采樣率?;跀?shù)據(jù)趨勢預測自適應采樣函數(shù)pre_sampling_rate(pbase, data)調用庫函數(shù)scipy.stats.pearsonr()求取最近2個數(shù)據(jù)段的決定系數(shù),根據(jù)決定系數(shù)之差預測下一段數(shù)據(jù)的采樣率。
圖3 基于壓縮感知的農情監(jiān)測節(jié)點稀疏采樣決策系統(tǒng)功能架構
圖4 采樣率調節(jié)模塊組成及實現(xiàn)方式
2.2.2核心功能實現(xiàn)
圖5所示的是測量矩陣、稀疏基和重構算法等核心模塊的組成及實現(xiàn)方式。
1)測量矩陣。定義measure_matric_func類,包含高斯測量矩陣生成函數(shù)gauss_meas_matric(srate, len) 、周期測量矩陣生成函數(shù)period_meas_matric(srate, len)和隨機測量矩陣生成函數(shù)rand_meas_matric(srate, len)。其中,參數(shù)srate是采樣率,len是待采樣信號長度。以上函數(shù)調用NumPy和Random工具包,返回值均為(srate*len)×len的測量矩陣Phi。
高斯測量矩陣生成函數(shù)gauss_masure_matric(srate, len)直接調用numpy.random.randn(srate*len,len)構建。周期測量矩陣生成函數(shù)period_masure_matric(srate, len)先調用numpy.zeros()初始化測量矩陣,接著對矩陣從左上角首元素起每隔?N/M」行、?N/M」列的元素賦值1,再使用numpy.insert()將矩陣尾部連續(xù)的零列插入矩陣內。隨機測量矩陣生成函數(shù)rand_masure_matric(srate, len)先調用numpy.zeros()初始化測量矩陣,再采用random.sample()生成隨機數(shù)集合,接著用Python內建排序函數(shù)sort()排序,最后以隨機數(shù)集合作為列號將初始化矩陣中的相應列元素賦值為1構造隨機測量矩陣。
圖5 核心模塊組成及實現(xiàn)方式
2)稀疏基。定義sparse_matric_func類,實現(xiàn)差分矩陣diff_sparse_matric(len)、離散余弦變換基dct_sparse_matric(len)和離散小波基dwt_sparse_matric(len)等3種稀疏基構造函數(shù)。其中,參數(shù)len是待采樣信號長度。以上函數(shù)調用NumPy、Math工具包和PyWavelets小波工具箱,返回值是大小為len×len的稀疏矩陣。
差分矩陣diff_sparse_matric(len)調用numpy.eye()構造差分矩陣框架,接著替換矩陣最后一個元素,再使用numpy.linalg.inv()求取矩陣的逆得到差分稀疏矩陣。離散余弦變換基dct_sparse_matric(len)調用零矩陣生成函數(shù)numpy.zeros()、余弦求值函數(shù)numpy.cos()、矩陣點積函數(shù)numpy.dot()、矩陣均值函數(shù)numpy.mean()和矩陣范式求解函數(shù)numpy.linalg.norm()。離散小波基dwt_sparse_matric(len)采用PyWavelets工具包中的Wavelet函數(shù)對’haar’小波基進行高通和低通濾波得到該小波的高頻系數(shù)和低頻系數(shù)部分,再調用numpy.flip()函數(shù)對分解的高頻系數(shù)和低頻系數(shù)進行列向量轉置翻轉、numpy.roll()進行矩陣移位、numpy.hstack()進行融合等處理,最后構造出離散小波基矩陣。
3)重構算法。定義rec_ algorithm_func類,實現(xiàn)SL0重構算法rec_ algorithm_SL0(y,A)、基追蹤重構算法rec_ algorithm_BP(y,A)、子空間追蹤算法rec_ algorithm_SP(y,A)等3種重構算法。其中,參數(shù)y為觀測值,A為感知矩陣(測量矩陣與稀疏基之和)。以上函數(shù)共調用NumPy、SciPy和Math工具包,返回值為重構的數(shù)據(jù)。
SL0重構算法rec_ algorithm_SL0(y,A)調用求逆函數(shù)numpy.linalg.pinv(),根據(jù)平滑l0范式的重構算法原理構建?;粉欀貥嬎惴╮ec_ algorithm_BP(y,A)利用numpy.ones()和numpy.hstack()處理線性規(guī)劃模型參數(shù),然后采用線性規(guī)劃模型函數(shù)scipy.optimize.linprog()優(yōu)化求解該參數(shù),以重構數(shù)據(jù)。子空間追蹤算法rec_ algorithm_SP(y,A)調用math.floor()函數(shù)和NumPy工具包中的求逆函數(shù)numpy.linalg.inv()、取絕對值函數(shù)numpy.fabs()和范式求解函數(shù)numpy.linalg.norm()等。
2.2.3輔助功能實現(xiàn)
圖6所示的是輔助模塊組成及實現(xiàn)方式。
1)數(shù)據(jù)導入導出。定義data_in_out類,包含數(shù)據(jù)導入函數(shù)data_import()和數(shù)據(jù)導出函數(shù)data_output()。調用Pandas工具包和GUI庫Tkinter。數(shù)據(jù)導入函數(shù)data_import()調用tkinter.askopenfilename()函數(shù)彈出文件選擇框,返回用戶所選擇文件的完整路徑,再由pandas.datetime.strptime()指定表頭和讀取格式,采用pandas.read_excel()/pandas.read_csv()接收文件路徑及讀取格式后完成Excel/CSV文件數(shù)據(jù)的讀入。數(shù)據(jù)導出函數(shù)data_output()調用tkinter.asksaveasfilename()函數(shù)和Python內建函數(shù)open()。使用tkinter.asksaveasfilename()函數(shù)創(chuàng)建目標文件,再由內建函數(shù)open()以’w’模式將緩存區(qū)數(shù)據(jù)寫入到文件。
圖6 輔助模塊組成及實現(xiàn)方式
2)算法評價與圖形化展示。定義eval_graph類,實現(xiàn)算法評價指標和數(shù)據(jù)圖形化展示等功能,調用NumPy庫和Matplotlib繪圖庫。算法評價指標包括信噪比函數(shù)SNR()和均方根誤差RMSE()函數(shù)。函數(shù)Plot_curve()調用Matplotlib繪圖庫的Canvas控件及NavigationToolbar2TkAgg組件,實現(xiàn)數(shù)據(jù)曲線的展示、縮放、拖拽和圖片保存等功能。
2.2.4系統(tǒng)界面效果
基于以上實現(xiàn)技術,采用Python3.6實現(xiàn)各功能模塊并有機整合。決策系統(tǒng)界面如圖7所示,主要由導入數(shù)據(jù)、數(shù)據(jù)源選擇、分段數(shù)、采樣方式、測量矩陣、稀疏基、重構算法、采樣重構和導出結果等部分組成,各部分按照操作步驟編號。系統(tǒng)的【數(shù)據(jù)顯示】模塊提供原始數(shù)據(jù)與重構數(shù)據(jù)展示、重構數(shù)據(jù)相對于原始數(shù)據(jù)的偏差度分析功能,支持曲線圖的縮放、拖拽和保存,便于開展壓縮感知三要素的遴選。
試驗數(shù)據(jù)來自安徽農業(yè)大學農萃園,自2016年3月13日起部署以色列植物生長監(jiān)測儀PM11z、基于Arduino Mega2560研發(fā)的數(shù)據(jù)采集節(jié)點不間斷收集園區(qū)園藝花卉育苗日光溫室大棚內外的環(huán)境信息、土壤溫濕度(SWR-100W型土壤溫濕度傳感器)、花卉植株莖流(TDP-10型植物莖流計)等本體信息,采樣間隔為15min。筆者取2017年9月1日至30日共30d時間段內植株莖流和土壤濕度數(shù)據(jù)(見圖8)。其中,植株莖流、土壤濕度均呈周期性變化,植株莖流變化周期為24h,土壤濕度變化周期與灌溉間隔時長有關。
為全面評估采樣率調節(jié)方法、壓縮感知三要素的功用,通過設置數(shù)據(jù)分段、基準采樣率,選擇不同的采樣率調節(jié)方法、測量矩陣、稀疏基和重構算法組合,全面評估不同組合條件下的數(shù)據(jù)稀疏采樣及其重構效果。試驗過程中,設置基準采樣率為10%、30%。采用分段數(shù)1、3、6、10、15、30和60,分別對應采樣時段長度為30、10、5、3、2、1、0.5d。試驗過程中發(fā)現(xiàn)采用差分矩陣、重構算法SL0較其他重構算法消耗的重構時間更短,但具有更好的恢復效果,后續(xù)分析僅提供稀疏基、重構算法分別為差分矩陣、SL0算法時的重構效果。選取信噪比SNR(Signal-Noise Ratio)作為數(shù)據(jù)重構精度的評價指標。
圖7 稀疏采樣決策系統(tǒng)界面
圖8 植株莖流與土壤濕度數(shù)據(jù)
圖9表示的是植株莖流數(shù)據(jù)不同數(shù)據(jù)稀疏采樣下的重構效果。為排除動態(tài)采樣調節(jié)的干擾,選取10%、30%兩種定采樣率評估不同測量矩陣下的重構效果,結果如圖9(a)所示。隨著采樣率的增加數(shù)據(jù)重構效果明顯變好,周期測量矩陣的重構效果顯著優(yōu)于隨機和高斯測量矩陣,且過細的分段采樣對于重構效果的提升有限,甚至有負面影響(分60段時)。采樣率從10%提升到30%時,更多的原始數(shù)據(jù)參與重構提升了數(shù)據(jù)重構效果。若用于重構的數(shù)據(jù)量過少,原始數(shù)據(jù)的稀疏性及RIP條件的充要條件受到負面影響,導致1d以內的數(shù)據(jù)為重構單元時恢復效果變差。
為評估不同采樣率調節(jié)方式對重構效果的影響,分析同一測量矩陣在定采樣率、基于歷史同期數(shù)據(jù)特征和基于數(shù)據(jù)趨勢預測的自適應采樣率調節(jié)方式下的數(shù)據(jù)重構效果。圖9(b)所示是采用周期測量矩陣時3種采樣率調節(jié)方式的重構效果。特別地,隨機和高斯測量矩陣下的重構效果與圖9(b)類似。故可得出,不同采樣率調節(jié)方式對重構結果的影響無明顯差異。
圖9 不同數(shù)據(jù)稀疏采樣下植株莖流數(shù)據(jù)重構效果
因此,壓縮感知方法應用于植株莖流數(shù)據(jù)采集時,宜選取固定采樣率、周期測量矩陣進行稀疏采樣;以1d以上的數(shù)據(jù)序列為單位進行重構較為合適;高頻率采樣的數(shù)據(jù)有著更好的重構效果,如采樣率從10%上升到30%,信噪比提升30%。
圖10 定采樣與不同測量矩陣下土壤濕度重構效果 圖11 定采樣率與周期測量矩陣下各分段的重構時間
土壤濕度數(shù)據(jù)在定采樣與不同測量矩陣下重構效果如圖10所示。數(shù)據(jù)重構效果隨著分段數(shù)、采樣率的增加而上升。此外,通過分析不同采樣率調節(jié)方式的重構效果,可得3種采樣調節(jié)方式未對重構結果造成明顯的影響。因此,壓縮感知方法應用于土壤濕度采集時,宜選取固定采樣率、周期測量矩陣進行稀疏采樣;數(shù)據(jù)序列重構單位越小越好;高頻率采樣的數(shù)據(jù)可獲得更好的重構效果。
綜合以上分析可知,采用壓縮感知方法采集植物莖流、土壤濕度數(shù)據(jù)時,宜采用固定采樣率,分別選取周期測量矩陣、差分矩陣、SL0算法為測量矩陣、稀疏基和重構算法,數(shù)據(jù)重構單元因數(shù)據(jù)對象不同而有所差異。值得注意的是,重構數(shù)據(jù)不可避免地與原始數(shù)據(jù)存在偏差,且偏差對實際應用的影響與應用場景密切相關,具體偏差大小可通過改變采樣率進行調節(jié)。采用10%采樣率時,重構數(shù)據(jù)的取值、變化趨勢等與原始數(shù)據(jù)符合度較高,可滿足田間生產管理需求。
具體應用中,重構時長也是數(shù)據(jù)重構單元選取的重要因素之一。圖11為植株莖流和土壤濕度2組數(shù)據(jù)在不同分段數(shù)、定采樣率和周期性測量矩陣下的重構時間對比,運行環(huán)境為Intel i5處理器、4GB內存、Windows 7操作系統(tǒng)??梢钥闯觯貥嫊r長均是在分段數(shù)達到3(10d數(shù)據(jù))后顯著下降,此后逐步趨于穩(wěn)定。故針對植株莖流、土壤濕度數(shù)據(jù)的壓縮感知采集,可每2~10d進行一次稀疏采樣數(shù)據(jù)的重構。
探索農情數(shù)據(jù)的高效采集是農業(yè)物聯(lián)網研究中一項非常有意義的工作。筆者研發(fā)了基于壓縮感知的農情監(jiān)測節(jié)點稀疏采樣決策系統(tǒng),實現(xiàn)了采樣率調節(jié)、測量矩陣、稀疏基和重構算法的多組合調用。通過對30d連續(xù)監(jiān)測、采樣間隔為15min的花卉植株的莖流、土壤濕度數(shù)據(jù)壓縮感知分析,驗證了該系統(tǒng)能夠為基于壓縮感知理論的農情數(shù)據(jù)稀疏采樣決策提供有效支撐。后續(xù)將深入開展基于壓縮感知的非周期性變化、視頻圖像等復雜農情數(shù)據(jù)的稀疏采樣方法研究,為全面提升農情數(shù)據(jù)的獲取質量與效率提供支撐。