許 寧,肖新耀,胡玉新,溫 靜,汪大明
(1.中國科學(xué)院空間信息處理與應(yīng)用系統(tǒng)技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京100190;2.中國科學(xué)院電子學(xué)研究所,北京100190;3.中國科學(xué)院大學(xué),北京100049;4.中國國土資源航空物探遙感中心,北京100083;5.中國地質(zhì)調(diào)查局油氣資源調(diào)查中心,北京100029)
高光譜遙感數(shù)據(jù)由于其豐富的光譜信息,在地質(zhì)勘探、環(huán)境監(jiān)測、偽裝判別等領(lǐng)域發(fā)揮了巨大作用,是定量遙感發(fā)展的一個(gè)重要方向。在高光譜遙感數(shù)據(jù)的地質(zhì)資源勘探應(yīng)用領(lǐng)域,端元提取、光譜角制圖 (Spectral Angle Mapping,SAM)、匹配濾波等技術(shù)得到了廣泛應(yīng)用[1~3]。由于高光譜數(shù)據(jù)波段多、數(shù)據(jù)量大,這些處理算法通常需要在特征空間或光譜空間進(jìn)行大量的向量計(jì)算,造成較大的計(jì)算資源開銷,因此高光譜數(shù)據(jù)處理算法的效率提升顯得尤為重要。在國外,Gillis D等[4]基于不同的多核處理器,利用MPI多線程技術(shù)對(duì)ORASIS系統(tǒng)中的N-Findr等端元提取算法的處理效率進(jìn)行了優(yōu)化和對(duì)比;Tilton J C[5]利用MPI對(duì)ETM數(shù)據(jù)非監(jiān)督分層分割算法進(jìn)行了實(shí)驗(yàn)、分析和驗(yàn)證;針對(duì)高光譜數(shù)據(jù)的目標(biāo)檢測,Wang Jianwei等[6]利用FPGA實(shí)現(xiàn)了約束能量最小算法的實(shí)時(shí)處理。近年來,基于圖形處理器 (Graphic Processor Unit,GPU)的高性能計(jì)算技術(shù)蓬勃發(fā)展,在圖像處理、地震資料分析、經(jīng)融計(jì)算與分析等領(lǐng)域得到了推廣和應(yīng)用;在高光譜遙感數(shù)據(jù)處理領(lǐng)域,針對(duì)GPU并行計(jì)算技術(shù)也開展了一些研究和驗(yàn)證。Setoain J等[7]利用GPU對(duì)高光譜數(shù)據(jù)的端元提取算法進(jìn)行了效率對(duì)比,發(fā)現(xiàn)對(duì)于SAM光譜分析算法,GPU相較CPU可提升效率10倍左右;Agathosd A等[8]利用多顆GPU協(xié)同開展了高光譜數(shù)據(jù)最小體積單形體分析解混方法研究,驗(yàn)證了GPU高性能計(jì)算的有效性。在國內(nèi),也有學(xué)者開展了基于GPU的遙感圖像快速處理方法探索。楊靖宇等[9]針對(duì)SAM算法進(jìn)行了GPU并行化方法研究;羅耀華等[10]利用GPU開展了MNF變換算法的并行處理和比較;宋義剛等[11]開展了基于GPU的PPI端元提取算法的優(yōu)化和分析。
考慮到ENVI/IDL在遙感地質(zhì)領(lǐng)域的廣泛應(yīng)用,本文著重探討基于IDL開發(fā)語言的GPULib庫在配置GPU的工作站環(huán)境中實(shí)現(xiàn)高性能計(jì)算效率的提升。實(shí)驗(yàn)利用一景新疆東天山地區(qū)的星載Hyperion高光譜遙感數(shù)據(jù),針對(duì)一些常用的高光譜數(shù)據(jù)處理算法開展應(yīng)用和驗(yàn)證,最后通過這些算法處理效率的對(duì)比來分析GPU在高光譜數(shù)據(jù)地質(zhì)應(yīng)用領(lǐng)域的應(yīng)用前景。
目前常用的并行計(jì)算環(huán)境有OpenMP、MPI及支持GPU運(yùn)行的CUDA等,本文只對(duì)GPU的組成和環(huán)境做簡單介紹。GPU的造價(jià)低,且具有強(qiáng)大的浮點(diǎn)數(shù)據(jù)計(jì)算能力。與CPU類似,GPU由GPU內(nèi)存、緩存和多個(gè)流處理器 (Stream Multiprocessor)組成,其中流處理器是真正的處理單元,由多個(gè)處理核心 (Core)及一級(jí)緩存、寄存器和指令發(fā)射單元等部分組成。
盡管GPU的運(yùn)算能力非常強(qiáng)大,但其只是作為協(xié)處理器在CPU的協(xié)調(diào)下完成數(shù)據(jù)處理。圖1為單一總線架構(gòu)下CPU和GPU形成的非對(duì)稱處理架構(gòu),GPU與CPU不是通過內(nèi)部總線互連,而是通過PCI-E接口作為外圍設(shè)備進(jìn)行工作;同時(shí),GPU和GPU不能訪問對(duì)方的存儲(chǔ)器,多個(gè)GPU之間也不能互相進(jìn)行內(nèi)存訪問。這樣,在數(shù)據(jù)處理的過程中,數(shù)據(jù)必須首先存儲(chǔ)在CPU內(nèi)存中,當(dāng)GPU需要進(jìn)行數(shù)據(jù)處理時(shí),必須先將數(shù)據(jù)從CPU內(nèi)存?zhèn)鬏數(shù)紾PU內(nèi)存,處理完成后再將數(shù)據(jù)傳回CPU內(nèi)存。因此,基于GPU實(shí)現(xiàn)高速數(shù)據(jù)處理的效率不只取決于GPU的性能,還要取決于計(jì)算機(jī)系統(tǒng)架構(gòu)與GPU的配合程度。
GPULib是Tech-X公司開發(fā)的一套支持ENVI/IDL、Matlab等開發(fā)語言的GPU運(yùn)行算法庫,它的運(yùn)行基于CUDA平臺(tái),為單機(jī)IDL開發(fā)語言使用GPU提供了良好的環(huán)境。
本次實(shí)驗(yàn)采用的工作站硬件環(huán)境:CPU為4核Intel Quad(Q6600)處理器,主頻2.40 GHz,內(nèi)存3.5 G,硬盤容量500 G,另外通過PCI-E插槽連接一塊C2050型號(hào)的GPU。工作站的軟件環(huán)境:Windows XP Pro 32bit操作系統(tǒng),另外安裝配置了CUDA Developer Drivers驅(qū)動(dòng)和CUDA Toolkit工具包軟件,采用的編程軟件為IDL7.1,并配置了專門的GPULib算法庫。
除高光譜遙感數(shù)據(jù)處理中常用的向量點(diǎn)積、矩陣乘法、矩陣轉(zhuǎn)置等,本次還增加了快速傅立葉變換 (FFT)的測試?;拘阅軠y試分別對(duì)5000×5000和10000×10000大小的單精度浮點(diǎn)數(shù)據(jù)進(jìn)行實(shí)驗(yàn),結(jié)果見表1。從表1中可以看出,利用GPU進(jìn)行矩陣乘法和FFT計(jì)算時(shí),GPU可以獲得很大的效率提升;但對(duì)于矩陣轉(zhuǎn)置這種運(yùn)算量很小的數(shù)據(jù)處理,GPU反而沒有運(yùn)行優(yōu)勢,因?yàn)镚PU處理時(shí)消耗了更多的從CPU向GPU傳輸數(shù)據(jù)的時(shí)間。
圖1 工作站主機(jī)和GPU組成的工作環(huán)境Fig.1 Sketch of work environment constructed by Host and GPU
表1 CPU-GPU基本性能測試Table 1 Basic performance comparison of CPU and GPU
高光譜遙感數(shù)據(jù)具有波段多、數(shù)據(jù)量大、處理耗時(shí)等特點(diǎn),而GPU具有造價(jià)低、體積小、速度快、并行性高的優(yōu)勢,因此GPU可以為高光譜數(shù)據(jù)的快速處理提供一種新的解決途徑?;谏鲜鏊枷?,本文主要驗(yàn)證應(yīng)用GPU的高光譜遙感數(shù)據(jù)快速處理關(guān)鍵技術(shù),基于常用的IDL語言開發(fā)和實(shí)現(xiàn)典型的SAM、PPI算法的并行處理。采用星載Hyperion高光譜數(shù)據(jù)進(jìn)行驗(yàn)證實(shí)驗(yàn)和分析,該數(shù)據(jù)在實(shí)驗(yàn)中已經(jīng)完成了壞線去除、水汽吸收波段剔除以及大氣校正處理,數(shù)據(jù)大小為1700行×250列×176波段,數(shù)據(jù)量為285 M。在SAM算法驗(yàn)證過程中,采用不同數(shù)量 (包括5條光譜和200條光譜庫中的參考光譜)的光譜庫數(shù)據(jù)進(jìn)行了運(yùn)算測試。
SAM算法在高/多光譜遙感領(lǐng)域應(yīng)用較廣,多用于遙感數(shù)據(jù)的分類處理,即像元光譜與參考光譜 (包括在圖像中選擇的像元向量和光譜庫向量)的相似度計(jì)算。其算法原理是將像元向量和參考向量看作是N維空間 (N為波段數(shù)量)的2個(gè)點(diǎn),通過計(jì)算2個(gè)向量在N維空間的向量夾角對(duì)比2個(gè)光譜向量的相似性,夾角越小,表明2個(gè)光譜的相似性越高。SAM算法通過下式來計(jì)算測試光譜ti與實(shí)驗(yàn)室光譜ri之間的相似性[12]:
式中:nb為波段數(shù)。兩個(gè)光譜之間的相似性不受向量長度及增益的影響,因而可以減低地形對(duì)照度的影響,α取值區(qū)間為0°—90°。
本次選用SAM算法進(jìn)行基于IDL+GPU的處理實(shí)驗(yàn)。根據(jù)GPU和CPU的關(guān)系,單顆GPU實(shí)驗(yàn)中二者之間的邏輯關(guān)系如圖2所示。其中主機(jī)為多核單機(jī)工作站,高光譜數(shù)據(jù)和光譜庫數(shù)據(jù)首先被導(dǎo)入到主機(jī)內(nèi)存中,進(jìn)行測試的數(shù)據(jù)根據(jù)需要通過接口傳輸?shù)紾PU顯存中,GPU再讀取顯存中的數(shù)據(jù)進(jìn)行處理。
圖2 基于單顆GPU實(shí)現(xiàn)的SAM處理流程圖示Fig.2 Flowchart of implementation for SAM algorithm on single GPU
在GPULib庫和CUDA運(yùn)行時(shí)API等的支持下,為了進(jìn)行CPU和GPU處理效率的對(duì)比,本文采用以下處理流程進(jìn)行SAM算法的處理實(shí)驗(yàn):
①首先獲取待處理的高光譜遙感數(shù)據(jù)和參考光譜數(shù)據(jù),本文選擇我國東天山地區(qū)的一景Hyperion高光譜數(shù)據(jù),選擇美國USGS礦物光譜庫中的云母、方解石等作為參考光譜數(shù)據(jù);
②參考光譜的光譜分辨率和Hyperion數(shù)據(jù)不同,需要對(duì)參考光譜進(jìn)行重采樣;
③將數(shù)據(jù)全部讀入到工作站內(nèi)存,首先利用CPU進(jìn)行處理,輸出整景數(shù)據(jù)的處理時(shí)間;
④初始化GPU,將相同的數(shù)據(jù)從CPU傳送到GPU中;
⑤在GPU中進(jìn)行Hyperion數(shù)據(jù)的SAM處理,主要涉及到數(shù)據(jù)的矩陣乘法運(yùn)算;
⑥將處理完成后的產(chǎn)品數(shù)據(jù)從GPU返回到CPU,輸出處理后的結(jié)果和處理時(shí)間;
⑦對(duì)兩種方式處理的結(jié)果進(jìn)行對(duì)比,包括產(chǎn)品結(jié)果的一致性和時(shí)間 (性能)的變化。
像元純凈指數(shù) (Pixel Purity Index,PPI)認(rèn)為在N-維像元特征空間中 (N為高光譜數(shù)據(jù)波段數(shù)),所有像元成散點(diǎn)分布,而那些比較純的像元 (端元)將分布在N維空間中散點(diǎn)分布形成的N+1個(gè)頂點(diǎn)的凸面體的頂點(diǎn)處[13~14]。PPI的處理采用由最小噪聲分離 (Minimum Noise Fractions,MNF)[15]變換得到的高光譜降維數(shù)據(jù),將降維后的像元光譜向量逐像元投影到隨機(jī)生成的不同方向單元向量上,對(duì)每個(gè)隨機(jī)單位向量統(tǒng)計(jì)像元投影到各隨機(jī)單元向量端點(diǎn) (或接近于端點(diǎn))處的次數(shù),記錄每次投影到端點(diǎn)的像元,每個(gè)像元被標(biāo)記為極值的總次數(shù)稱為“純像元指數(shù)”,指數(shù)圖像的像元越亮,表明該像元越純凈,更可能為圖像中存在的光譜端元 (Endmember),其基本原理如圖3所示。
圖3 PPI算法中像元投影極值計(jì)數(shù)原理Fig.3 Principle of PPI algorithm for projection of pixel vectors on skewers
本次基于IDL+GPU的PPI并行算法實(shí)驗(yàn)處理流程如下:
①利用IDL實(shí)現(xiàn)的PPI算法與ENVI集成的PPI模塊進(jìn)行處理實(shí)驗(yàn),并進(jìn)行效率對(duì)比。處理時(shí)對(duì)ENVI和程序IDL算法都采用了逐個(gè)像元迭代和分塊迭代的方式,其中分塊迭代表示分塊中的所有像元均參與與隨機(jī)單位向量 (skewer)的矩陣乘法運(yùn)算;
②基于GPULib庫函數(shù)對(duì)原來的IDL PPI算法程序進(jìn)行更改和優(yōu)化;
③利用ENVI完成其PPI算法的處理測試,包括逐像元處理和分塊處理,記錄時(shí)間;
④在CPU主機(jī)上完成原來PPI算法的測試,也包括逐像元的處理和分塊處理,記錄時(shí)間;
⑤通過循環(huán),將高光譜數(shù)據(jù)逐像元傳送到GPU進(jìn)行處理,記錄時(shí)間;
⑥采用分塊方式將數(shù)據(jù)傳送到GPU進(jìn)行處理,并保存返回的處理結(jié)果,記錄時(shí)間;
⑦對(duì)ENVI處理結(jié)果和IDL處理的結(jié)果進(jìn)行對(duì)比。
針對(duì)SAM算法,按照SAM算法實(shí)驗(yàn)設(shè)計(jì)的處理流程,利用Hyperion星載高光譜數(shù)據(jù)進(jìn)行實(shí)驗(yàn),其中參考光譜從USGS光譜庫中挑選;為比較不同數(shù)量參考光譜對(duì)處理效率的影響,分別選擇5條和200條參考光譜進(jìn)行SAM處理。本次采用單顆GPU進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)輸出的統(tǒng)計(jì)時(shí)間見表2。在處理過程中需要對(duì)原始三維數(shù)據(jù)進(jìn)行重列,因此增加了矩陣重列時(shí)間的對(duì)比 (矩陣重列時(shí)間是指矩陣完成行列重組形成新矩陣的Reform的時(shí)間)。
表2 CPU與GPU的SAM性能測試Table 2 Performance comparison of SAM algorithm between CPU and GPU
可以看出,在只采用4核CPU進(jìn)行處理和利用GPU進(jìn)行處理的時(shí)間效率對(duì)比上,當(dāng)參考光譜較少時(shí),SAM處理效率提升并不明顯,只有2.5倍;但采用200條光譜進(jìn)行SAM計(jì)算時(shí),二者的時(shí)間效率差了6倍。而在矩陣重列方面,參考光譜較少時(shí),GPU對(duì)數(shù)據(jù)重列所花的時(shí)間更少,效率更高。
對(duì)于PPI算法,按照PPI算法實(shí)驗(yàn)設(shè)計(jì)中的處理流程進(jìn)行處理,程序輸出的測試時(shí)間見表3;對(duì)高光譜數(shù)據(jù)進(jìn)行PPI處理的結(jié)果見圖4,從左到右為選擇參加處理實(shí)驗(yàn)的Hyperion高光譜三波段彩色數(shù)據(jù)、ENVI處理結(jié)果和程序處理結(jié)果。從結(jié)果圖可以看出,CPU和GPU二者運(yùn)行結(jié)果一致。
表3 測試程序PPI與ENVI性能測試 (CPU)Table 3 Performance comparison of PPI between test program and ENVI on CPU
圖4 進(jìn)行PPI實(shí)驗(yàn)的處理數(shù)據(jù)和處理結(jié)果Fig.4 Hyperspectral data and results of PPI algorithm on CPU and GPU
PPI算法運(yùn)行效率的比較采用兩種方式,一種為測試程序與ENVI商業(yè)軟件的比較,一種為基于CPU和GPU的測試程序運(yùn)行效率比較。從表3測試程序和ENVI自帶的PPI算法的運(yùn)行結(jié)果可以看出,實(shí)驗(yàn)中編寫的IDL程序采用逐像元處理 (采用循環(huán)方式,生成一個(gè)隨機(jī)單位向量Skewer,將圖像所有像元光譜逐個(gè)與其計(jì)算內(nèi)積)時(shí),消耗的時(shí)間較長,為ENVI逐像元處理的2倍;進(jìn)行分塊處理 (利用IDL的矩陣運(yùn)算優(yōu)勢)后,ENVI在效率上得到了很大的提升,但測試程序采用分塊處理獲得的優(yōu)勢并不明顯 (僅使用CPU處理)。
使用GPU參與處理后 (見表4),對(duì)于逐像元的處理,GPU在處理效率上并沒有什么優(yōu)勢,并且由于數(shù)據(jù)傳輸時(shí)間的消耗,其處理時(shí)間實(shí)際比CPU更長;但對(duì)于分塊處理,GPU則體現(xiàn)了它的優(yōu)勢,相較CPU效率提升達(dá)到了10倍以上。當(dāng)然,由于測試程序沒有進(jìn)行優(yōu)化處理,與ENVI相比,GPU在處理效率上沒有體現(xiàn)出較大優(yōu)勢,在1000個(gè)隨機(jī)單位向量參加運(yùn)算時(shí),CPU處理時(shí)間為13 s(見表3),而GPU為10.3 s(見表4);在10000個(gè)單位隨機(jī)向量參加運(yùn)算時(shí),CPU處理時(shí)間為125 s,GPU為95.682 s。
表4 CPU與GPU測試程序PPI性能對(duì)比Table 4 Performance comparison of PPI using test program between CPU and GPU
本文基于高光譜數(shù)據(jù)處理的特點(diǎn)和目前GPU高性能計(jì)算的發(fā)展和應(yīng)用現(xiàn)狀,以單機(jī)工作站掛接GPU為并行計(jì)算環(huán)境,驗(yàn)證GPU在高光譜數(shù)據(jù)處理中的應(yīng)用效能。通過對(duì)高光譜數(shù)據(jù)地質(zhì)應(yīng)用處理中常用的矩陣計(jì)算、SAM算法、PPI算法的應(yīng)用分析,設(shè)計(jì)驗(yàn)證流程,分別對(duì)這些算法開展GPU和CPU處理效能的對(duì)比實(shí)驗(yàn),并通過AVRIS機(jī)載數(shù)據(jù)和Hyperion星載高光譜數(shù)據(jù)進(jìn)行了實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,基于IDL和GPU的小型并行計(jì)算環(huán)境可以實(shí)現(xiàn)高光譜數(shù)據(jù)處理效能的提升,GPULib庫可以為廣大的研究人員提供相對(duì)簡單的研究和應(yīng)用環(huán)境;單顆GPU集成的工作站在高光譜數(shù)據(jù)常用的SAM處理和PPI端元提取算法方面均得到了效率的提升,平均效率可以達(dá)到10倍左右;測試數(shù)據(jù)采用GPU并行處理算法得到的處理結(jié)果與CPU的處理結(jié)果一致。
[1] 王潤生,甘甫平,閆柏琨,等.高光譜礦物填圖技術(shù)與應(yīng)用研究[J].國土資源遙感,2010,(1):1~13.WANG Run-sheng,GAN Fu-ping,YAN Bai-kun,et al.Hyperspectral mineral mapping and its application [J].Remote Sensing for Land& Resources,2010,(1):1~13.
[2] 王潤生,熊盛青,聶洪峰,等.遙感地質(zhì)勘查技術(shù)與應(yīng)用研究[J].地質(zhì)學(xué)報(bào),2011,85(11):1699~1743.WANG Run-sheng,XIONG Sheng-qing,NIE Hong-feng,et al.Remote sensing technology and its application in geological exploration [J].Acta Geological Sinica,2011,85(11):1699 ~1743.
[3] 程賓洋.高光譜遙感蝕變礦物填圖算法并行設(shè)計(jì)與實(shí)現(xiàn)[D].成都:成都理工大學(xué),2013.CHENG Bin-yang.The parallel design and implementation of hyperspectral remote sensing mineral mapping algorithm [D].Chengdu:Chengdu University of Technology,2013.
[4] Gillis D,Bowles J H.Parallel implementation of the ORASIS algorithm for remote sensing data analysis[C] //Plaza A J,Chang C I.High performance computing in remote sensing.US:Taylor& Francis Group,2008.
[5] Tilton J C.Parallel implementation of the recursive approximation of an unsupervised hierarchical segmentation algorithm[C] //Plaza A J,Chang C I.High performance computing in remote sensing.US:Taylor& Francis Group,2008.
[6] Wang Jianwei,Chang Chein-I.FPGA design for real-time implementation of constrained energy minimization for hyperspectral target detection [C] //Plaza A J,Chang C I.High performance computing in remote sensing.US:Taylor&Francis Group,2008.
[7] Setoain J,Prieto M,Tenllado C,et al.Parallel morphological endmember extraction using commodity graphics hardware[J].IEEE Geoscience and Remote Sensing Letters,2007,4(3):441 ~445.
[8] Agathos A,Li J,Petcu D,et al.Multi-GPU implementation of the minimum volume simplex analysis algorithm for hyperspectral unmixing [J].IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing,2014,7(6):2281~2296.
[9] 楊靖宇,張永生,董廣軍.基于GPU的遙感影像SAM分類算法并行化研究[J].測繪科學(xué),2010,35(3):9~11.YANG Jing-yu,ZHANG Yong-sheng,DONG Guang-jun.Investigation of parallel method of RS image SAM algorithmic based on GPU [J].Science of Surveying and Mapping,2010,35(3):9~11.
[10] 羅耀華,郭科,趙仕波.基于GPU的高光譜遙感MNF并行方法研究[J].四川師范大學(xué)學(xué)報(bào):自然科學(xué)版,2013,36(3):476~479.LUO Yao-hua,GUO Ke,ZHAO Shi-bo.Minimum noise fraction of hyperspectral remote sensing in parallel computing based on GPU [J].Journal of Sichuan Normal University:Natural Science,2013,36(3):476~479.
[11] 宋義剛,葉舜,吳澤彬,等.基于GPU的高光譜遙感圖像PPI并行優(yōu)化[J].航天返回與遙感,2014,35(4):74~80.SONG Yi-gang,YE Shun,WU Ze-bin,et al.Parallel optimization of Pixel Purity Index algorithm based on GPU for hyperspectral remote sensing image[J].Spacecraft Recovery& Remote Sensing,2014,35(4):74~80.
[12] Kruse F A,Lefkoff A B,Boardman J W,et al.The Spectral Image Processing System(SIPS):Interactive visualization and analysis of imaging spectrometer data [J].Remote Sensing of Environment,1993,44:145 ~163.
[13] Boardman J W.Geometric mixture analysis of imaging spectrometery data [J].Proc.Int.Geoscience and Remote Sensing Symp,1994,4:2369~2371.
[14] 許寧,胡玉新,雷斌,等.一種基于PPI的高光譜數(shù)據(jù)礦物信息自動(dòng)提取方法[J].測繪科學(xué),2013,38(4):138 ~141.XU Ning,HU Yu-xin,LEI Bin,et al.Automated mineral information extraction based on PPI algorithm for hyperspectral image[J].Science of Surveying and Mapping,2013,38(4):138~141.
[15] Green A A,Berman M,Switzer P,et al.A transformation for ordering multispectral data in terms of image quality with implications for noise removal[J].IEEE Transactions on Geoscience and Remote Sensing,1988,26(1):65 ~74.