羅耀華 ,郭 科,趙仕波
(1.成都理工大學(xué) 網(wǎng)絡(luò)與教育技術(shù)中心,四川 成都 610059;2.成都理工大學(xué) 數(shù)學(xué)地質(zhì)四川省重點(diǎn)實(shí)驗(yàn)室,四川 成都 610059;3.成都理工大學(xué) 管理科學(xué)學(xué)院,四川 成都 610059)
高光譜遙感[2]影像包含了豐富的空間、輻射、光譜信息,光譜分辨率能達(dá)到幾納米,同時(shí)可以提供地物的連續(xù)光譜。相對多光譜影像,它是以光譜分析為主要的處理模式。高光譜遙感的每個(gè)像元都是地物光譜信息的綜合,不同地物有不同的光譜特征。由于空間分辨率限制以及地物的多樣性,使得在單像元點(diǎn)處得到的光譜一般是幾種不同物質(zhì)光譜的混合,稱為混合像元。光譜混合從本質(zhì)上可以分為線性與非線性混合二種模式。線性模式假設(shè)物體間沒有相互作用,每個(gè)光子僅能“看到”一種物質(zhì),并將其信號疊加到像元光譜中。目前使用的端元提取方法大部份都基于線性模型,每個(gè)像元都可近似為圖像各個(gè)端元的線性混合。常用的混合像元分解方法[3]有最小二乘法、端元投影向量法、單形體體積法等。
目前針對大數(shù)據(jù)量高光譜遙感影像的處理,主要采用多核CPU 或者集群模式,該模式對于環(huán)境配置和硬件要求較高,運(yùn)算速度的提升空間也不理想,很難實(shí)現(xiàn)對海量數(shù)據(jù)高光譜遙感影像的實(shí)時(shí)處理。高性能計(jì)算技術(shù)是圖像處理技術(shù)發(fā)展的重要方向,可編程圖形處理器(GPU)[4]技術(shù)發(fā)展極為迅速。從并行的角度來看,現(xiàn)代的多核CPU 針對地是指令集并行(ILP)和任務(wù)并行(TLP),而GPU 則是數(shù)據(jù)并行(DLP)。在同樣面積的芯片之上,CPU 更多地放置了多級緩存(L1/L2/LLC)和指令并行相關(guān)的控制部件,而GPU 上則更多的是運(yùn)算單元。此外,GPU的顯存帶寬更大,在大數(shù)據(jù)量地處理中性能更高。因此,作者在本文中提出一種在GPU 框架下,對端元投影向量法進(jìn)行并行優(yōu)化的高性能計(jì)算算法。
現(xiàn)代的顯示芯片擁有較高的內(nèi)存帶寬以及大量執(zhí)行單元,具備高度的可程序化能力。CUDA 是NVIDIA的新一代顯示芯片框架,GPU 程序包括二部份[5]:①設(shè)備(device)端;②服務(wù)器(host)端。其中,“device”端程序控制顯卡的運(yùn)算部份,“host”端控制CPU 上計(jì)算的部份。數(shù)據(jù)由“host”端提出,復(fù)制到顯卡開辟的內(nèi)存空間中,執(zhí)行device端程序,計(jì)算結(jié)束后由host端將結(jié)果從顯卡內(nèi)存中讀回。
(1)內(nèi)存存取等待。為了減少內(nèi)存空閑等待時(shí)間,CPU 采用緩存技術(shù),通過降低內(nèi)存操作的次數(shù)來提高執(zhí)行效率。CUDA 則采用并行執(zhí)行的模式來減少內(nèi)存的等待時(shí)間,其基本原理是當(dāng)前一個(gè)線程處于等待內(nèi)存讀取結(jié)果的空閑期時(shí),下一個(gè)線程開始執(zhí)行。
(2)分支指令。由于顯示芯片處理多分支的效率不高,因此CPU 的模式采用分支預(yù)測來減少分支指令的運(yùn)算流水線通道。而CUDA 可以實(shí)現(xiàn)上千個(gè)線程同時(shí)執(zhí)行,最適合解決并行化的問題。
使用顯示芯片來進(jìn)行運(yùn)算工作的優(yōu)勢是十分明顯的,以GeForce 8800GTX 為例[7]:①顯卡芯片擁有較大內(nèi)存帶寬。目前比較高級的CPU,內(nèi)存帶寬一般為10GB/s左右,而GeForce 8800GTX 有50 GB/s以上的內(nèi)存帶寬;②顯卡芯片的執(zhí)行單元數(shù)更多。GeForce 8800GTX包含128個(gè)流處理器,頻率達(dá)到1.35GHz,相對于CPU 的執(zhí)行單元數(shù)目要高很多;③顯卡芯片的性價(jià)比高。GeForce 8800GT價(jià)格要低于2.4GHz四核心CPU 的價(jià)格[8]。
GPU 被定義為“一個(gè)單芯片的處理器,集成了幾何變換、光照、三角形構(gòu)造、裁剪和繪制引擎等功能,并具有每秒至少一千萬個(gè)多邊形的處理能力”。它極大地提升了圖形的處理速度,并使圖形的質(zhì)量得到增強(qiáng),推進(jìn)了圖形處理相關(guān)領(lǐng)域的迅速發(fā)展。作者在本次實(shí)驗(yàn)采用NVIDIAGeForce GT540M顯卡,包含96個(gè)CUDA 處理器核心,處理器頻率為1 344 MHz,紋理填充速率10.8billion/sec。
在高光譜遙感圖像中,每個(gè)像元都是其L維特征空間的一個(gè)點(diǎn)(L為圖像波段數(shù)),并由端元構(gòu)成了其基本元素。從數(shù)學(xué)的角度,像元點(diǎn)都可以轉(zhuǎn)換成端元的線性組合(省略去誤差項(xiàng)n),在此基礎(chǔ)上,所有像元點(diǎn)集合構(gòu)成一個(gè)n-1維空間凸集,端元點(diǎn)的位置在該凸面單形體的頂面。這就是以高光譜遙感數(shù)據(jù)在特征空間凸面幾何學(xué)模型的基本依據(jù)[9]。圖1是一個(gè)二維空間下由三個(gè)端元構(gòu)成的單形體。
根據(jù)圖1所示光譜的凸面幾何模型[10],我們設(shè)第i個(gè)端元以外所有端元構(gòu)成的超平面為第i個(gè)超平面。由圖1可知:第i個(gè)端元是到這第i個(gè)超平面最遠(yuǎn)的點(diǎn)。因此,可以根據(jù)每個(gè)像元與第i個(gè)超平面的距離,判斷該像元中所含第i個(gè)端元的組份。以第2波段第3端元為例,端元A、B、C是構(gòu)成三角形的三個(gè)頂點(diǎn),點(diǎn)D、E、F是各自對應(yīng)邊的垂足,如圖2所示(見下頁),由此可以得到三個(gè)單位矢量:
在式(1)中,線段AD、BE、CF作為矢量處理,也就是所要獲得的端元投影向量,對其進(jìn)行投影處理得到地物與背景的最佳分離效果。在矢量AD方向上進(jìn)行投影,則可以將A 點(diǎn)對應(yīng)的地物信息與點(diǎn)B點(diǎn)、C點(diǎn)所組成的背景信息作最大區(qū)分(見下頁圖2)。具體算法過程如下:
(1)假設(shè)(e1,e2,…,eN)是從圖像中求出的所有端元,下面以端元eN為例,介紹從圖像獲取出對應(yīng)目標(biāo)的具體算法(對其它端元同理):
再對(b1,b2,…,bN-1)進(jìn)行正交化,得到lN:
圖1 二維空間(平面)上的凸面單形體Fig.1 Convex simplex in two-dimensional space
圖2 端元投影向量Fig.2 Endmembers projection vector
(2)然后將所有像元投影到lN,計(jì)算出到端元eN對應(yīng)的地物,在整個(gè)圖像中的分布情況,即:
gij=rij·lN(5)
式中rij為原始高光譜遙感圖像中第i行、第j列像元點(diǎn)的光譜向量;G為端元eN對應(yīng)地物的分布圖。
(3)再對N個(gè)端元進(jìn)行投影變換,就可以得到N個(gè)端元投影向量。在對N個(gè)單位向量作投影操作,可以計(jì)算出圖像中的各種地物的分布圖。并且縮小了背景地物間的區(qū)別,最大程度地區(qū)分了地物與背景。其基本算法流程如圖3所示。
結(jié)合線性光譜算法分析我們可以看到,由于通常所選取的端元數(shù)目較少,一般(ETE)-1ET的計(jì)算量很小,故作者在本項(xiàng)目中不對它們的計(jì)算進(jìn)行并行化。見下頁圖4,在本項(xiàng)目中采用的并行化原則,是以像元點(diǎn)為基準(zhǔn)產(chǎn)生相應(yīng)的進(jìn)程數(shù),每個(gè)進(jìn)程負(fù)責(zé)一個(gè)像元點(diǎn)的計(jì)算。設(shè)T=(ETE)-1ET,則每個(gè)像元點(diǎn)對應(yīng)的GPU 進(jìn)程只計(jì)算TX。
圖3 端元投影向量法流程圖Fig.3 Flow chart of endmembers projection vector
實(shí)驗(yàn)采用的數(shù)據(jù)為我國東天山地區(qū)高光譜遙感圖像。為了進(jìn)行多組數(shù)據(jù)的對比實(shí)驗(yàn),作者首先對原始影像數(shù)據(jù)進(jìn)行預(yù)處理,通過裁減獲得影像的像幅分別為140像素×170像素×229;279像素×201像素×229;1 036像素×235像素×229共三組實(shí)驗(yàn)數(shù)據(jù)。實(shí)驗(yàn)所用的平臺環(huán)境為:Intel(R)CoreI7-2630QM 2.0GHZ,系統(tǒng)內(nèi)存為2GB,顯卡為NVIDIA 公司的GeForce GT540M。這三組不同大小的實(shí)驗(yàn)數(shù)據(jù)串行計(jì)算和并行計(jì)算時(shí)間如下頁表1所示,加速比見圖5(見下頁)。
經(jīng)實(shí)驗(yàn)結(jié)果表明,當(dāng)影像像素低于279像素×201像素×229時(shí),GPU 并行算法的加速比曲線斜率略微下降較大,而當(dāng)影像的像素增大到1 036像素×235像素×229時(shí),曲線表現(xiàn)得十分陡峭,表明并行算法加速效果十分明顯。這說明整個(gè)計(jì)算時(shí)間包括CPU 交換數(shù)據(jù)的通信時(shí)間和GPU 并行計(jì)算時(shí)間,且通信時(shí)間相對固定,當(dāng)數(shù)據(jù)量較小時(shí),GPU 處理時(shí)間相對整個(gè)計(jì)算時(shí)間比例較小,效果不明顯。隨著處理影像像素的不斷增大,GPU 并行算法配合系統(tǒng)豐富的并行計(jì)算資源,顯示出了強(qiáng)大的并行計(jì)算優(yōu)勢。它既有效地躲避了創(chuàng)建CPU線程時(shí)花費(fèi)的時(shí)間,也成功地克服了系統(tǒng)交換數(shù)據(jù)帶來的巨大傳輸延遲。當(dāng)然,隨著數(shù)據(jù)量持續(xù)增大時(shí),考慮帶寬限制問題,加速比又會呈現(xiàn)平緩趨勢。
圖4 并行算法設(shè)計(jì)圖Fig.4 Design chart of parallel algorithm
表1 實(shí)驗(yàn)結(jié)果Tab.1 Experimental result
圖5 并行加速比Fig.5 The speedup of parallel computing
為了對GPU 并行在高光譜遙感中的其它處理進(jìn)行驗(yàn)證,在相同實(shí)驗(yàn)環(huán)境條件下,對無約束的最小二乘法以及和為“1”的部份約束最小二乘法進(jìn)行了并行優(yōu)化,實(shí)驗(yàn)結(jié)果與端元投影向量法的提速效果接近,這說明了利用GPU 并行優(yōu)化在高光譜遙感應(yīng)用是可行且有效的。同時(shí),在實(shí)驗(yàn)過程中我們也發(fā)現(xiàn),對于高光譜遙感而言,像元之間的相互關(guān)系對于數(shù)據(jù)的解譯非常重要,而目前設(shè)計(jì)的并行方法是逐個(gè)像元的處理,像元間以及波譜間的數(shù)據(jù)關(guān)聯(lián)性需要人為的進(jìn)行控制,這將是影響并行效果的瓶頸問題,也是后續(xù)研究的重點(diǎn)。
作者利用GPU 的片元處理器,實(shí)現(xiàn)高光譜遙感影像的端元投影向量法主要有兩個(gè)優(yōu)點(diǎn):
(1)減輕CPU 的計(jì)算負(fù)擔(dān)。
(2)提高混合像元分解的處理速度。
當(dāng)CPU 將系統(tǒng)內(nèi)存中的影像數(shù)據(jù)交給GPU之后,既可以清除在內(nèi)存中的影像數(shù)據(jù),又可以將計(jì)算過程完全交由GPU 處理,CPU 就能專注于控制和調(diào)度工作,使整個(gè)計(jì)算更為合理。
圖形硬件的飛速發(fā)展,為解決大數(shù)據(jù)量的遙感影像處理問題帶來了一種解決思路,也將是海量高光譜遙感數(shù)據(jù)處理的方向之一。
[1]耿修瑞.高光譜遙感圖像目標(biāo)探測與分類技術(shù)研究[D].北京:中國科學(xué)院遙感應(yīng)用研究所,2005.
[2]耿修瑞,童慶禧,鄭蘭芬.一種基于端元投影向量的高光譜圖像地物提取算法[J].自然科學(xué)進(jìn)展,2005,15(4):509.
[3]童慶禧,張兵,鄭蘭芬.高光譜遙感—原理、技術(shù)與應(yīng)用[M].北京:高等教育出版社,2006.
[4]郭雷,劉進(jìn)鋒.GPU 上實(shí)現(xiàn)的向量點(diǎn)積的性能分析[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(2):201.
[5]YAOHUA LUO,KE GUO,DAMING WANG,et al.Hyperspectral remote sensing classification processing parallel computing research based on GPU[C].Proceedings of the 2012International Conference on Computer Science and Electronic Engineering,2012.
[6]SONG JI,ZHOU SONG-TAO.Fast Image Matching Based on GPU Parallel Computing[J].Journal of Hubei University for Nationalities(Natural Science Edition),2011(9):306.
[7]張舒,褚艷利.GPU 高性能計(jì)算之CUDA[M].北京:中國水利水電出版社,2009.
[8]吳恩華,柳有權(quán).基于圖形處理器(GPU)的通用計(jì)算[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2004,16(5):601.
[9]陳峰,邱全毅,熊永柱,等.基于線性光譜模型的混合像元分解方法與比較[J].遙感信息,2010(4):22.
[10]薛彬,趙葆常,楊建峰,等.改進(jìn)的線性混合模型用于高光譜分離實(shí)驗(yàn)?zāi)P停跩].光子學(xué)報(bào),2004,33(6):689.
[11]游曉斌,游先祥,相瑩瑩.混合像元及混合像元分析[J].北京林業(yè)大學(xué)學(xué)報(bào),2003(25):28.