杜娟,薛武,趙蓓蕾
(航天工程大學(xué),北京 101416)
無(wú)人機(jī)(unmanned aerial vehicle,UAV)憑借機(jī)動(dòng)靈活、性價(jià)比高的優(yōu)勢(shì)在航空遙感中發(fā)揮了重要作用,利用無(wú)人機(jī)影像進(jìn)行目標(biāo)定位成為遙感測(cè)繪與無(wú)人機(jī)應(yīng)用領(lǐng)域的熱點(diǎn)問(wèn)題[1-4]。隨著無(wú)人機(jī)遙感數(shù)據(jù)量越來(lái)越大,提高數(shù)據(jù)處理的效率成為不可回避的問(wèn)題,特別是無(wú)人機(jī)影像的快速區(qū)域網(wǎng)平差是實(shí)現(xiàn)高精度對(duì)地定位的前提條件。因此,有必要研究無(wú)人機(jī)遙感影像的快速處理技術(shù),為搶險(xiǎn)救災(zāi)、軍事行動(dòng)等應(yīng)急測(cè)繪保障提供技術(shù)支撐。
為了控制硬件成本,目前無(wú)人機(jī)遙感平臺(tái)搭載的相機(jī)通常是消費(fèi)級(jí)單反相機(jī),其幅面一般從2 000萬(wàn)像素到5 000萬(wàn)像素,對(duì)于同樣大小的測(cè)區(qū),要想得到相同的立體覆蓋的影像,所需要拍攝的影像數(shù)量是大面陣航測(cè)相機(jī)的數(shù)十倍。同樣,受限于平臺(tái)的載重能力,也為了降低成本,大多數(shù)無(wú)人機(jī)上沒(méi)有搭載專業(yè)的POS(positioning and orientate system)設(shè)備,僅有用于平臺(tái)本身姿態(tài)控制的導(dǎo)航級(jí)GPS(global positioning system)和INS(inertial navigation system)。因此不同于常規(guī)的載人遙感平臺(tái),無(wú)人機(jī)獲取的數(shù)據(jù)無(wú)論是影像外方位元素還是加密點(diǎn)的數(shù)量均會(huì)增加很多。這就導(dǎo)致了區(qū)域網(wǎng)平差時(shí)待求參數(shù)的數(shù)量顯著增多,對(duì)應(yīng)誤差方程和法方程的規(guī)模也明顯增大。計(jì)算機(jī)處理時(shí)需要更多的RAM資源和更長(zhǎng)的時(shí)間[5]。國(guó)內(nèi)外學(xué)者針對(duì)光束法平差的收斂性、精度、魯棒性等開(kāi)展了諸多研究并取得了豐富的成果。但是,針對(duì)如何提高光束法平差的解算效率方面的研究相對(duì)偏少[4,6]。本文結(jié)合無(wú)人機(jī)遙感影像的特點(diǎn),就如何提高無(wú)人機(jī)影像光束法平差的效率提出了一種解決方案。
為了解決無(wú)人機(jī)影像的“先天不足”,充分挖掘硬件平臺(tái)的計(jì)算潛力,對(duì)大規(guī)模方程組的解算方法進(jìn)行了改進(jìn),主要包括采用共軛梯度法迭代解算法方程,利用預(yù)條件矩陣減小法矩陣的條件數(shù),計(jì)算矩陣的舒爾補(bǔ)減小計(jì)算量,并發(fā)揮計(jì)算機(jī)的計(jì)算優(yōu)勢(shì)對(duì)矩陣運(yùn)算進(jìn)行了并行化改進(jìn)。
無(wú)人機(jī)搭載中小幅面數(shù)字傳感器,其成像模型與傳統(tǒng)航測(cè)面陣相機(jī)相同,即共線條件方程[7],如式(1)所示。
由于作業(yè)中各種誤差的存在,式(1)并不嚴(yán)格成立,為了得到影像外方位元素和加密點(diǎn)的地面坐標(biāo)的最大似然估計(jì),將式(1)進(jìn)行線性化,得到誤差方程[8]:
vx=c11dXS+c12dYS+c13dZS+c14dφ+c15dω+
c16dκ+c17dX+c18dY+c19dZ-lx,
vy=c21dXS+c22dYS+c23dZS+c24dφ+c25dω+
c26dκ+c27dX+c28dY+c29dZ-ly.
(2)
光束法平差的目標(biāo)是所有像方觀測(cè)點(diǎn)的反投影誤差平方和達(dá)到最小,其目標(biāo)函數(shù)形式如下:
通常采用最小二乘方法對(duì)式(3)進(jìn)行求解,式(2)的法方程如式(4)所示。求解法方程得到待求參數(shù)的最大似然估計(jì),然后利用待求參數(shù)的更新值前方交會(huì)得到加密點(diǎn)地面坐標(biāo)。
在實(shí)際的無(wú)人機(jī)遙感作業(yè)生產(chǎn)中,由于未知數(shù)的數(shù)量比較多,法方程系數(shù)矩陣具有奇異性,導(dǎo)致式(4)解算不穩(wěn)定,本文采用參數(shù)估計(jì)中的列文伯格-馬夸爾特(levenberg marquardt,L-M)方法克服法方程的奇異性。L-M方法能夠自適應(yīng)調(diào)整未知數(shù)的變化幅度,從而有效克服解的不穩(wěn)定性,有些文獻(xiàn)中也將其稱為阻尼高斯牛頓法[9-10]。通過(guò)啟發(fā)式方法,L-M在高斯牛頓法與梯度下降法之間自主轉(zhuǎn)換,使得迭代運(yùn)算快速收斂到全局極小值[1]。具體在無(wú)人機(jī)影像處理中,采用L-M方法后,能夠在沒(méi)有控制信息時(shí)自適應(yīng)調(diào)整待求參數(shù)的變化幅度,克服法方程奇異帶來(lái)的解的不穩(wěn)定[11]。對(duì)式(4)應(yīng)用L-M方法后,得到:
(5)
式中:λ1,λ2分別為對(duì)應(yīng)于無(wú)人機(jī)影像外方位元素和加密點(diǎn)地面坐標(biāo)的阻尼系數(shù)。
無(wú)人機(jī)影像區(qū)域網(wǎng)平差時(shí)需要求解未知數(shù)較多,以n幅影像和m個(gè)加密點(diǎn)為例,待求參數(shù)的數(shù)量為6n+3m(6n個(gè)無(wú)人機(jī)影像外方位元素和3m個(gè)坐標(biāo))。尤其是為了得到更稠密的連接點(diǎn),需要求解的地面點(diǎn)坐標(biāo)往往超過(guò)百萬(wàn)級(jí)別,如此規(guī)模的方程組求解比較困難,直接解算會(huì)消耗大量的內(nèi)存和計(jì)算時(shí)間,普通計(jì)算機(jī)也難以處理。
考慮到加密點(diǎn)坐標(biāo)的數(shù)量遠(yuǎn)大于影像外方位元素的數(shù)量,因此借助Schur補(bǔ)方法將影像外方位元素和加密點(diǎn)坐標(biāo)2類變量分開(kāi)求解。在答解法方程時(shí),首先解算無(wú)人機(jī)影像外方位元素,然后求解加密點(diǎn)坐標(biāo)[12]。Schur補(bǔ)本質(zhì)上是一種高斯消元法,通過(guò)分塊的方式答解方程組,以下列方程組的答解為例:
未知數(shù)x,y的求解可以分為2步:利用高斯消元法,式(6)變換為如下形式:
得到未知數(shù)x的解后,帶入式(6)求解未知數(shù)y,從而實(shí)現(xiàn)了2類變量的分離和分步求解,減少了未知數(shù)的數(shù)目。需要注意的是,對(duì)無(wú)人機(jī)影像處理而言,得到待求參數(shù)更新值之后可通過(guò)前方交會(huì)直接計(jì)算連接點(diǎn)三維坐標(biāo),無(wú)需回代到原來(lái)的方程進(jìn)行計(jì)算,從而可以進(jìn)一步減少計(jì)算量。
處理大規(guī)模無(wú)人機(jī)數(shù)據(jù)時(shí),式(7)是一個(gè)典型的大型稀疏矩陣,本文引入?yún)?shù)估計(jì)中的共軛梯度方法對(duì)其進(jìn)行答解。如果按照求解方式劃分,共軛梯度法是一種直接解法,但是運(yùn)算中由于舍入誤差的存在需要迭代求解,所以可以看作是正定方程組的迭代解法。共軛梯度法所需迭代次數(shù)與系數(shù)矩陣條件數(shù)是有關(guān)的,條件數(shù)越大需要的迭代次數(shù)越多。由于大規(guī)模無(wú)人機(jī)影像處理時(shí)未知數(shù)的數(shù)量多,而且系數(shù)矩陣的條件數(shù)比較大,因此在解算時(shí)會(huì)出現(xiàn)迭代次數(shù)多、收斂速度慢的情況。對(duì)此,本文采用預(yù)條件矩陣來(lái)降低式(7)的條件數(shù)[13],以下面的方程為例:
Ax=b.
(8)
為降低方程的條件數(shù),等式兩邊各乘一個(gè)矩陣M-1可得:
M-1Ax=M-1b.
(9)
M-1的引入使得方程的條件數(shù)從A的條件數(shù)變?yōu)镸-1A的條件數(shù)。如果M-1設(shè)計(jì)得當(dāng),可以大大降低式(8)的條件數(shù),通常把矩陣M-1稱為預(yù)條件矩陣??紤]到式(5)的雅克比矩陣是塊狀對(duì)角矩陣,容易構(gòu)造和進(jìn)行求逆運(yùn)算,所以通常將其作為預(yù)條件矩陣。
預(yù)條件矩陣的引入能夠在一定程度上減少共軛梯度法的迭代次數(shù),如果處理海量數(shù)據(jù)、方程組規(guī)模非常大時(shí),收斂速度依然比較慢。實(shí)際上,共軛梯度法在解算時(shí),僅前面幾次迭代對(duì)待求參數(shù)的修正量比較大,后面的迭代改正量較小。因此可以把消耗時(shí)間比較多、改正量不大的迭代運(yùn)算舍去,僅保留前面幾次改正量比較大的幾次迭代。這樣做還有一個(gè)重要原因就是在整個(gè)平差解算過(guò)程中,每次解算的結(jié)果均作為下一次迭代的初值,所以提前結(jié)束共軛梯度的迭代,用近似解代替嚴(yán)密解是可行的。
常用的共軛梯度法的近似解是截?cái)嗯nD法,顧名思義,截?cái)嗯nD法是牛頓法的一種改進(jìn)方法,將迭代的終止條件從待求參數(shù)殘差向量的閾值變?yōu)閺?qiáng)制序列系數(shù)。強(qiáng)制序列系數(shù)的計(jì)算公式如(10),ηk表示第k次迭代的強(qiáng)制序列系數(shù),c表示法方程常數(shù)向量,sk+1表示第k+1次迭代的殘差向量。這樣在進(jìn)行法方程解算時(shí),迭代的終止條件變?yōu)楫?dāng)前的強(qiáng)制序列系數(shù)小于閾值,從而有效減少了迭代次數(shù),同時(shí)保持了迭代的收斂性。
當(dāng)前消費(fèi)級(jí)計(jì)算機(jī)都配置有多核CPU和GPU,可以充分發(fā)揮其計(jì)算潛力,在算法優(yōu)化的基礎(chǔ)上通過(guò)并行運(yùn)算提高矩陣運(yùn)算的效率。大規(guī)模無(wú)人機(jī)影像定位解算過(guò)程中消耗時(shí)間較多的步驟主要有:
(1) 像方殘差計(jì)算;
(2) 稀疏矩陣計(jì)算;
(3) 預(yù)條件矩陣M構(gòu)建;
(4) 矩陣相乘JcΔxc+JpΔxp;
(6) 矩陣相乘Mv。
以上運(yùn)算中,(4)和(5)的時(shí)間開(kāi)銷最大,因?yàn)槔媒財(cái)嗯nD法迭代解算法方程時(shí),每次迭代都進(jìn)行一次運(yùn)算,再考慮到定位解算整體迭代過(guò)程,其計(jì)算次數(shù)是十分可觀的。而其他步驟雖然計(jì)算量也比較大,但僅在L-M的迭代求解時(shí)才運(yùn)行一次,因此采用硬件對(duì)區(qū)域網(wǎng)平差過(guò)程進(jìn)行加速的關(guān)鍵在于步驟(4)和步驟(5)。
從前文的介紹可以看出,無(wú)人機(jī)影像的定位解算過(guò)程需要頻繁地讀取和存儲(chǔ)大型稀疏矩陣。如果按照傳統(tǒng)數(shù)字?jǐn)z影測(cè)量中的方式直接存儲(chǔ)原始矩陣會(huì)消耗大量的內(nèi)存空間,普通計(jì)算機(jī)難以滿足需求,特別是大區(qū)域(上萬(wàn)幅)影像的處理將無(wú)法進(jìn)行。為了解決這個(gè)問(wèn)題,本文引入了一種更緊湊的矩陣存儲(chǔ)形式——塊壓縮稀疏行(blocked compressed sparse row, BCSR)。BCSR本質(zhì)上是壓縮存儲(chǔ)技術(shù),其高度壓縮、分塊存儲(chǔ)的特性能夠大大減少對(duì)存儲(chǔ)空間的需求[14]。BCSR利用4個(gè)向量
通過(guò)算法優(yōu)化,區(qū)域網(wǎng)平差解算過(guò)程拆解為系列基礎(chǔ)的矩陣計(jì)算,編程中結(jié)合使用SIMD (single instruction multiple data)和SSE(streaming SIMD extensions)以充分發(fā)揮當(dāng)前計(jì)算機(jī)平臺(tái)CPU和GPU的并行運(yùn)算潛力[15-16],實(shí)現(xiàn)無(wú)人機(jī)影像的快速定位解算。
為對(duì)本文提出的大規(guī)模無(wú)人機(jī)影像區(qū)域網(wǎng)平差方案的效率進(jìn)行驗(yàn)證,選擇4組具有代表性的無(wú)人機(jī)影像進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)的軟硬件環(huán)境如表1所示,實(shí)驗(yàn)數(shù)據(jù)情況如表2所示。為了體現(xiàn)本文加速方法的有效性,采用3種傳統(tǒng)解決方案與本文方法進(jìn)行對(duì)比實(shí)驗(yàn),每種方案的技術(shù)流程如圖2,3所示。具體來(lái)講,方案1直接對(duì)Schur補(bǔ)矩陣進(jìn)行Cholesky矩陣分解,方案2利用稀疏矩陣表示Schur補(bǔ)矩陣,方案3和方案4都采用本文方法對(duì)解算流程進(jìn)行了算法優(yōu)化,不同的是方案3在計(jì)算過(guò)程采用CPU多核并行進(jìn)行了加速,方案4利用GPU并行對(duì)計(jì)算過(guò)程進(jìn)行了加速。實(shí)驗(yàn)結(jié)束后,分別統(tǒng)計(jì)每種方法的時(shí)間消耗,結(jié)果見(jiàn)表3。
表1 實(shí)驗(yàn)軟硬件環(huán)境Table 1 Experimental software and hardware environment
表2 實(shí)驗(yàn)數(shù)據(jù)情況Table 2 Experimental data situation
表3 時(shí)間消耗統(tǒng)計(jì)Table 3 Time consumption statistics
分析表3可以得出以下結(jié)論:
(1) 從不同方案的處理結(jié)果來(lái)看,方案1僅能處理幾百幅量級(jí)的影像,方案2和方案3可以處理千余幅影像,而本文提出的方案4可以處理1萬(wàn)余幅影像。
(2) 從時(shí)間消耗來(lái)看,本文提出的方案計(jì)算效率很高,具有較高的加速比,能夠快速處理大數(shù)據(jù)量無(wú)人機(jī)影像,具有重要的實(shí)用價(jià)值。
(3) 本文提出的解決方案在處理無(wú)人機(jī)影像時(shí)具有效率高、支持?jǐn)?shù)量多的優(yōu)勢(shì),對(duì)于無(wú)人機(jī)影像在應(yīng)急測(cè)繪保障中的應(yīng)用具有重要的實(shí)用價(jià)值。
無(wú)人機(jī)影像已經(jīng)成為遙感探測(cè)的重要數(shù)據(jù)源,快速高效的無(wú)人機(jī)影像處理方案具有重要的研究?jī)r(jià)值和廣闊的應(yīng)用前景。本文為提高大規(guī)模無(wú)人機(jī)影像區(qū)域網(wǎng)平差的效率,分別從算法優(yōu)化設(shè)計(jì)與硬件并行加速2個(gè)方面開(kāi)展研究。算法優(yōu)化方面采用矩陣的Schur補(bǔ)減少了未知數(shù)的數(shù)目,采用預(yù)處理矩陣減小了法矩陣的條件數(shù),并利用共軛梯度的截?cái)嗯nD法答解法方程,同時(shí)利用塊壓縮稀疏行的緊湊方式存儲(chǔ)稀疏矩陣,從而降低了對(duì)計(jì)算機(jī)內(nèi)存和顯存的開(kāi)支。硬件加速方面分別采用CPU和GPU并行對(duì)矩陣運(yùn)算進(jìn)行了加速。通過(guò)幾組有代表性的數(shù)據(jù)進(jìn)行實(shí)驗(yàn),證明了本文提出方法的有效性。下一步將針對(duì)無(wú)人機(jī)影像序貫平差開(kāi)展研究,為無(wú)人機(jī)遙感數(shù)據(jù)的在線實(shí)時(shí)處理奠定技術(shù)基礎(chǔ)。