劉景赫, 林寶軍,3*
(1. 中國科學院 微小衛星創新研究院, 上海 201203;2. 中國科學院大學, 北京 100049;3. 中國科學院 空天信息創新研究院, 北京 100049)
隨著空間技術的發展,兩個航天器之間的空間在軌服務開始受到學術界和工業界的關注[1-3]。在諸如衛星維修、航天器對接、碎片清理等在軌服務中,獲取對方航天器相對于己方的姿態是關鍵的一步。一般而言,空間目標分為合作性和非合作性兩類。合作性目標可自主提供自身姿態信息。然而,對于故障衛星和太空碎片等非合作目標而言,其自身無法提供準確的姿態參數,這類目標的姿態只能通過一系列傳感器獲取。相對于激光雷達的高功耗和立體相機的復雜性,單目相機作為傳感器具有輕便、低能耗的特點,非常適用于航天器之間的相對導航場景。因此,如何從單張圖像中獲取目標的6D(Dimension)姿態是值得深入研究的問題。6D 意為6 個自由度,包含3 個平移自由度和3 個旋轉自由度。衛星姿態,亦稱剛體姿態,是指拍攝圖像當前時刻與衛星固連的參考系相對于相機坐標系的旋轉和平移。
傳統的單目姿態算法[4-6]主要依賴從二維圖像中手動提取特征,依據特征建立模版匹配,從而估計目標衛星相對于相機所在航天器的姿態。然而,手工提取特征的過程速度慢且魯棒性差,當圖像過曝光或曝光不足時,特征無法被準確提取。
目前姿態估計領域的進步主要依賴深度學習算法。這類算法利用神經網絡自動提取特征的能力取代傳統的圖像處理流程。目前,依賴深度神經網絡的姿態算法主要分為兩類:一階段算法和二階段算法。
一階段算法嘗試直接從二維圖像空間映射到六維姿態空間,屬于端到端范式,依靠神經網絡的擬合能力完成上述映射的搜索[7-9]。該端到端范式一般有兩種形式:分類形式和擬合形式。分類形式將姿態空間離散成一個個小的區間,每個區間用一個類別表示,然后用神經網絡預測圖中航天器的類別[10-11]。擬合形式則不依賴離散化,而是直接根據輸入圖像預測一個六維姿態向量[12-13]。一階段算法雖然流程簡單,但普遍精度不高、泛化能力不好,神經網絡的優化難度大,網絡難以學到有效的特征以表征目標姿態。
基于神經網絡的兩階段算法首先在圖像上定位若干二維關鍵點,然后利用2D-3D 匹配技術尋找目標圖像與三維模型的關系,從而計算目標姿態[14-17]。在此類方法中,圖像中的關鍵點充當了姿態估計的中間表示,因此關鍵點的定位越準確,姿態估計越精確。得益于關鍵點定位技術的魯棒性,目前二階段算法在各個姿態估計數據集上都得到了高于一階段算法的準確度。但衛星上的關鍵點分布較分散,關鍵點之間間距較大,卷積神經網絡由于感受野受限,存在關鍵點定位精度不高的問題。且二階段算法為了訓練關鍵點的定位模型,往往需要人工標注大量圖像的掩膜和關鍵點的位置標簽,因此二階段算法還存在標注成本高的問題。
本文針對卷積神經網絡的感受野小、全局建模能力差的問題,基于像素投票網絡PVNet 進行改進,引入了自注意力機制,提高其全局建模能力,提高了關鍵點定位的準確度。針對二階段姿態估計算法需要大量人工標注的問題,提出了一種自動獲取圖像掩膜和關鍵點標簽的流程,具體是通過空間雕刻重構衛星的點云,將點云重投影到像素平面,得到了關鍵點的像素坐標和粗略的衛星掩膜,再經過形態學閉操作完善掩膜,避免了人工標注這些信息的過程,提高了算法的實用性。實驗結果表明,所提方法在省略了大量標注過程的情況下,取得了更高的姿態估計精度。
本文構造衛星的點云代表其三維形狀,目標點云用Fref表示。為了構造該點云,從數據集中隨機選取N張參考圖像鑒于姿態估計數據集都提供了每張圖像中的衛星姿態標簽,這些姿態標簽用表示。然后利用多邊形標注工具Labelme[18],手動將參考圖像中的衛星輪廓標注出來,圖1 中用表示這些輪廓。

圖1 點云重構過程Fig.1 Point cloud reconstruction
為了構造衛星的點云,設該衛星的最小外接球面直徑為r,首先初始化一團以r為長寬高的點云立方體Aref∈RS×S×S,如圖1 中的立方體所示,其中-r≤(X,Y,Z)≤r。對于每個參考索引n∈(1,…,N),根據姿態參數和相機內參K,將Aref投影到圖像平面,圖1 中的虛線代表該投影過程,并設得到的投影區域為∈RS×S,根據單目相機的投影原理,可由式(1)表示:
是Aref在圖像平面的投影。由于Aref是初始化的點云立方體,必有部分點投影到了目標輪廓區域內以及部分點投影到輪廓區域外,投影到輪廓區域內的點得以保留,其余點切除。由此產生一個三維掩膜∈RS×S×S,其數學表示如式(2)所示:
其中:(grefn)x和(grefn)y是Grefn的(x,y)坐標,如此經過N張圖像的雕琢,N張三維掩膜的交集,便構成了衛星較為精細的形狀。圖1 展示了點云雕刻過程,雕刻后的點云如圖2(a)所示。

圖2 為訓練樣本自動生成掩膜Fig.2 Pipeline of generating mask for training set
之所以對目標衛星進行點云重構,一是后面需要進行關鍵點的2D 和3D 匹配,有了點云數據,便擁有了關鍵點的3D 坐標;二是在訓練關鍵點定位網絡時,需要關鍵點的位置標簽和掩膜標簽,有了目標的點云數據后,便可以根據每張圖像的姿態標簽將點云重投影到像素平面,由此可自動得到訓練集每張圖像的掩膜標簽和關鍵點標簽,從而省略了大量人工標注的過程。
圖2 展示了如何根據衛星的點云得到數據集中每張圖像的掩膜。姿態估計數據集提供了每張圖像的姿態標簽[Ri|ti],利用該信息可將衛星點云投影到每張圖像上,得到如圖2(b)所示的掩膜。但該掩膜存在空洞,原因在于點云數據并不是一種連續數據,于是利用形態學閉操作修補空洞,得到最終的掩膜如圖2(c)所示,其對應的原圖如圖2(d)所示。可見所提方法準確地得到了訓練樣本的掩膜標簽。
本文中估計衛星姿態的算法分為兩階段:第一階段預測向量場,用于定位目標關鍵點;第二階段由關鍵點計算目標姿態。流程簡圖如圖3所示。

圖3 姿態估計算法流程圖Fig.3 Flowchart of the pose estimation algorithm
首先將輸入圖像裁剪為H×W大小,輸入向量場回歸網絡,再由向量場投票預測關鍵點位置,最后使用PnP 算法計算得到姿態。
本文基于PVNet[15]進行改進。針對衛星上的關鍵點分散、卷積神經網絡的感受野受限問題,引入自注意力機制,增強模型的全局建模能力,提高關鍵點的定位精度。自注意力機制的核心在于:其掃描序列中的每個元素并通過聚合序列中的信息來更新每個元素。自注意力機制的優勢在于全局計算和記憶功能,這使得其相比于卷積算子更適合對全局信息進行建模。本文神經網絡結構如圖4 所示。

圖4 神經網絡結構Fig.4 Structure of neural network
圖4 中,考慮到卷積算子在提取低階語義以及收斂速度方面的優越性,本文采用卷積層做為backbone,并設backbone 輸出的特征圖為z0∈Rd×h×w。根據文獻[19],自注意力算子處理的是一維度序列,故在進入自注意力模塊前,將特征圖變形為z0∈RL×d,其中L=h×w。然后將特征圖分別映射到query、key 和value 矩陣:
其中,Wq、Wk、Wv∈Rd×d為待學習參數。接下來通過Q矩陣和K矩陣計算注意力矩陣
其中,A∈RL×L為注意力矩陣,代表了特征圖中任意兩個特征點之間的相關性。矩陣A再點乘矩陣V,得到新的特征圖,即為融合了全局信息的特征圖。上述過程即為自注意力算子,在實踐中通常采用多頭自注意力算子提取更加豐富的特征。
由于神經網絡為每個像素點均預測一個方向向量,理論上方向向量的交點即為關鍵點的位置,但圖像中屬于目標體的像素點往往有數萬個,這些像素點的方向向量無法嚴格相交于一點,于是需要投票機制來決定最終關鍵點的位置[20]。
設關鍵點數量為K,對于任意一個關鍵點xk,首先隨機選取兩個像素點,這兩個點對應的方向向量的交點記為候選點hk,i。該過程重復N次,得到的候選點集合記為{hk,i|i∈1,…N},代表xk可能的位置。接下來為每個候選點賦予權重,該權重由所有正樣本投票決定(正樣本即為屬于目標體的像素點):
其中:p∈O 表示所有正樣本參與投票,vk(p)表示在向量場中p像素點為第k個關鍵點所預測的方向向量。
上述關鍵點的候選位置及其權重代表了關鍵點在圖像空間中的分布概率。該概率的均值代表該關鍵點的最終定位,而方差則代表該定位的不確定性。于是,經過投票,第k個關鍵點的定位為:
該定位的不確定性為:
前述內容通過點云重構,獲悉了關鍵點的三維坐標;又通過關鍵點檢測技術,獲取了關鍵點在圖像中的二維坐標。于是衛星相對于相機參考系的姿態(R,t)可通過優化如下馬氏距離得到:
其中:π是透視投影函數,由相機內參決定;Xk是第k個關鍵點的三維坐標;μk為第k個關鍵點的二維坐標;Σk為二維坐標的方差。R,t為待求的姿態參數,其初始值由EPnP[21]算法初始化。為了優化方程(8),本文對比了梯度下降法和LM算法。相比于后者,前者對學習率較敏感,于是選擇LM 算法進行方程(8)的優化。
關鍵點的選取需要依目標衛星的形狀而定,選取的關鍵點最好位于衛星的表面,同時,關鍵點之間的間距應當盡量分散。考慮到Tango 衛星的形狀近似于長方體與3 根天線的組合,于是本文選取了長方體的8 個頂點與3 根天線的頂點,共K=11 個關鍵點。圖5 從多個視角展示了11 個關鍵點的分布。

圖5 選取的11 個關鍵點Fig.5 Selected 11 landmarks
神經網絡輸出兩個分支:語義分割分支和向量場分支,兩部分的損失函數分別用lseg和lvector表示。對于向量場的監督,本文使用平滑一范數(smoothl1)[22],損失函數如式(9)所示:
其中:K是關鍵點個數,p∈O表示屬于目標體的像素點參與計算,(p)為神經網絡預測的方向向量,vk(p) 為方向向量的真值,Δvk(p)|x和Δvk(p)|y分別是Δvk(p)兩個分量。
對于語義分割分支的監督,本文使用二值交叉熵損失(Binary cross entropy):
其中:是神經網絡預測的每個像素點屬于前景的概率;yp為真值,yp=1 意味該像素屬于前景而yp=0 說明該像素屬于背景。
神經網絡總的損失函數由以上兩部分損失構成:
本文在Spacecraft PosE Estimation Dataset[2](SPEED)上進行實驗。SPEED 由歐洲航天局和斯坦福大學空間交匯實驗室在2019 年發布,是關于衛星姿態估計的數據集。其包含關于Tango航天器的12 000 張合成圖像和300 張真實圖像,用以估計空間物體的距離和方向。每張圖像中包含一個Tango 航天器,并給出該目標相對于相機的姿態。隨后,為了充分模擬空間環境中復雜多變的光照條件,組織者又發布了SPEED+[23],擴充了樣本數量,圖像中的光照條件更加多變。數據樣例可見圖5。
為了全面分析算法的有效性,本文分別對關鍵點的定位精度和姿態估計精度進行評估,所用的評估指標分別如下。
4.2.1 關鍵點定位的評估指標
PCK指標是關鍵點定位方面常用的精度指標。PCK 定義為關鍵點被正確定位的比例(Percentage of Correct Keypoints),意為模型檢測出來的關鍵點與其真值之間的歸一化距離小于閾值的比例。當閾值為0.5 時,產生的指標即為PCK@0.5。
4.2.2 姿態估計的評估指標
根據文獻[2],衛星的姿態誤差分為兩部分:旋轉誤差eq和平移誤差et,圖6 展示了目標系和相機系之間的相對位姿。平移誤差定義為:

圖6 衛星系與相機系的相對變換Fig.6 Transformation between satellite body reference and camera reference
其中:B 和C 分別是目標系和相機系的原點,t^BC為算法預測的二者之間的位移,tBC則代表其真值。
旋轉誤差則定義為四元數之間的夾角:
在點云重構過程中,本文從SPEED 數據集[2]中隨機選取了N=70 張參考圖像并手動標注其多邊形分割掩膜然后初始化一個3D 立方體,根據70 張圖像的姿態標簽,分別將該立方體投影到圖像平面,只有其投影全部落在內的點才得以保留。經過70 張圖像的雕刻,得到衛星的點云形狀如圖2(a)所示。
在實驗數據方面,SPEED 提供了12 000 張圖像及姿態標簽,其中10 000 張用于神經網絡的訓練,2 000 張用于實驗驗證。
實驗的所有代碼都采用Python 語言基于深度學習框架Pytorch 和圖像處理工具OpenCV 編寫,運行環境為Ubuntu 20.04 操作系統,并使用Nvidia 2080 GPU 加速。
4.4.1 消融實驗
為了證明自注意力機制對關鍵點定位的有效性,本文與原像素投票網絡PVNet[15]進行了消融實驗,如圖7 所示。未引入自注意力機制前,原PVNet 的定位精度為88.3%;引入一層自注意力層后,定位精度達到了91.5%,即加入了自注意力模塊的神經網絡取得了更高的關鍵點定位精度。此外,為了探究自注意力的層數對模型性能的影響,本文逐層增加自注意力層數。隨著層數增加至4 層,模型的定位能力逐漸提高并趨于穩定。

圖7 關鍵點定位精度Fig.7 Accuracy of landmark localization
4.4.2 與其他方案的對比實驗
作為對比,本文在SPEED 數據集上還試驗了其他姿態估計領域的經典算法,性能對比如表1 所示。由于一階段算法沒有關鍵點定位過程,故該指標省略。

表1 不同算法的性能對比Tab.1 Performance comparison of different algorithms
通過表1 可見,一階段算法的姿態誤差要普遍高于二階段算法。在二階段算法中,本文方法也取得了更高的關鍵點定位精度和更低的姿態誤差。之所以本文方法取得了更小的姿態誤差,原因在于兩方面:一是3D 點云重構更為精細,二是關鍵點的定位更加精確。
為了直觀地說明本文方法的效果,從SPEED測試集中隨機抽取了9 張圖像,圖8 展示了模型的語義分割效果和關鍵點定位效果。圖8 中綠色區域代表模型預測的掩膜,藍色點代表模型定位出來的關鍵點。圖8 顯示所提算法精準地在圖中識別了衛星區域,這得益于本文自動化地得到了大量掩膜標簽,模型得以充分訓練;同時模型準確地檢測到關鍵點位置,這得益于自注意機制帶來的全局建模能力。圖8 還顯示,所提方法對目標的尺寸具有較好的魯棒性。通過優化方程(8),圖8 中的衛星姿態得以解算,并以衛星坐標軸的形式顯示在了圖9 中。

圖8 隨機測試的衛星的分割效果和關鍵點定位效果Fig.8 Randomly selected images with the predicted segmentation of the satellite and the landmarks
本文聚焦于單目視覺衛星姿態估計,著重改善兩個問題:一是傳統方法需要人工標注關鍵點位置和圖像的掩膜,針對該問題提出了基于空間雕刻的衛星點云重構方式,再將點云投影到像素平面,可自動化生成圖像的掩膜和關鍵點的2D 標簽,提高了算法實用性;二是衛星上的關鍵點分布較分散,卷積神經網絡由于感受野受限,存在關鍵點定位精度低的問題,本文在PVNet 的基礎上,將自注意力機制引入其中,提高了關鍵點的定位精度,降低了姿態估計誤差。在SPEED數據集上的實驗結果表明,相比于原PVNet,本文方法的關鍵點定位精度提升了4.2%,姿態平移誤差降低了17.2%,姿態旋轉誤差降低了20.7%。
由于太空中的光照變化大(背光或逆光)、背景變化大(地球為背景或深空為背景)以及目標的尺寸變化大,因此要求姿態估計算法對上述條件具有魯棒性。考慮到實驗數據SPEED 充分模擬了上述太空條件,在此條件下本文依然取得了較高的精度,說明本文方法對衛星的6 自由度姿態估計具有實用性。