楊欽寧, 佘浩平, 龐羽佳
(1.北京理工大學 宇航學院, 北京 100081;2.中國空間技術研究院 錢學森空間技術實驗室, 北京 100094)
隨著人類對空間探索的不斷深入,空間技術對科技的發展也相應地提出了更高的要求。當前,空間任務已不局限于衛星發射與實現衛星功能,在軌服務正成為空間技術研究中一個新的關鍵領域[1]。其中包括:在軌航天器的維修更換、衛星燃料加注、廢棄衛星的回收和空間碎片的回收等[2]。而這些技術都離不開對目標航天器的識別和檢測技術[3]。
在空間目標識別檢測中,光學傳感器因其體積小、成本低、信息內容直觀豐富等優點受到了廣泛關注,其中,光學相機作為其中最常用、成本最低的解決方案,自然成為了空間目標檢測的重要選擇之一。
目前針對空間目標識別與檢測使用較多的是傳統機器視覺算法。這種方法通常根據先驗信息設計,在特定識別場景中具有很高的精度,但其泛化能力一般[4-5]。同時,由于大多數的空間任務中服務飛行器的服務對象一般都是不具有固定外形和結構的非合作目標。這就更要求視覺檢測算法具有較高的泛化能力[6]。此外,因為目標航天器運動及空間環境的特殊性,使得傳統視覺檢測算法面臨這3個技術難點:1)外形、尺度問題:目標航天器在運動時可能因光學相機的拍攝角度變化導致目標產生較大的成像輪廓變化。同時,在距離光學相機的距離變化比較大時,其在圖像上的大小尺度也會發生較大變化;2)光照問題:空間中由于缺少漫反射的存在,導致飛行器不同表面反射太陽光的亮度會有較大差異。當光照太強或過弱時,都不利于視覺識別和檢測的進行;3)運動模糊與遮擋問題:當目標在相機視野中移動較快時,會導致視野中目標圖像出現模糊;當目標被其他物體遮擋時,可能導致目標的特征部分或全部損失,增大了檢測失敗的可能性。綜合以上原因,傳統機器視覺方法可能無法很好地完成空間目標識別檢測任務[7]。
近年來,基于深度學習的目標識別檢測方法逐漸被廣泛使用,其建模靈活方便,綜合性強,且能自適應的提取目標不同層級的特征[8]。能將訓練好的模型應用在不同場景,其對檢測物的泛化能力大大提升。且可以同時識別和檢測多類目標,主動性好,目前已廣泛應用于車輛[9]和行人檢測[10]等領域,在航天領域中使用較多的是對衛星遙感圖進行地面物體或云層等信息的識別和檢測[11],但在空間目標識別和檢測方面的研究目前較少,尚缺乏專用的深度學習框架。Girshick等[12]首次使用RCNN(Regions with CNN),將卷積神經網絡運用到目標檢測中來,為目標檢測開辟了新的道路,但其檢測精度和效率均不高。Fast R-CNN在R-CNN的架構上引入了金字塔池化層并進行單尺度池化,極大提高了檢測速度[13]。之后,Faster R-CNN在Fast R-CNN的基礎上引入了區域建議網絡(RPN),進行了端到端的訓練,提高了區域提取的速度和網絡訓練的速度,從此目標檢測終于進入到了可實時檢測的階段[14]。Mask R-CNN將Faster R-CNN中使用RoIAlign方法代替RoIPooling,通過雙線性插值方法降低了邊界框的誤差,一定程度上提高了檢測精度,同時加入了Mask分支,將每個待檢測目標進行了像素級分割,實現了實例分割功能[15]。Chen等[16]使用輕量級的實力分割網絡,為改善殘差模塊,使用了深度可分離卷積的方法,并且使用了非線性激活代替線性激活,簡化殘差網絡的層數以減輕網絡負擔,通過仿真軟件生成衛星的模型圖片,經測試可實現對典型衛星部件的識別和檢測,但其訓練及測試的圖像均為理想條件下的正視圖,未代入實際空間應用中的實際場景,因此在實用性方面欠缺一定考量。
本文提出了Ring-Engine-Mask R-CNN,是一種改進的Mask R-CNN。針對衛星這一特定目標下特征部位檢測任務的特點和要求,使用深度學習方法完成對衛星目標部位的檢測,主要工作包括:1)建立專用于衛星目標識別檢測的數據集,確保數據具有代表性,提高訓練數據集的質量;2)針對Mask R-CNN對大面積遮擋目標檢測效果差的問題,采用局部標注方法,以使網絡能學習到衛星目標部位的更多的局部特征信息,以提高在遮擋情況的網絡對于目標局部外形的識別能力。3)將其主干網絡規模進行改進,減少卷積運算量,同時縮減分類回歸、Mask分支,以減少網絡模型在末端的運行量,保證網絡模型更適合衛星目標部位的檢測任務。
針對衛星目標,由于其星箭對接環作為最常用的對接裝置[17],所以它與其同一面的遠地點發動機噴管也成為了衛星的識別與檢測中最常用的特征部位之一。
所選取的檢測目標為衛星星箭對接環和遠地點發動機噴管,如圖1所示。為了提高模型的泛化能力,數據集樣本分別采集于實物模型和仿真平臺。

圖1 衛星星箭對接環和遠地點發動機噴管示意圖
實物圖像采集自實驗室中衛星星箭對接環和遠地點發動機噴管及衛星艙體的1:1實物模型,使用光學相機拍攝,物理分辨率為4 000*3 000,分別以多種不同視角和過曝光-正常曝光-欠曝光3種不同照度情況,拍攝實物模型的全局圖片,通過圖像旋轉拉伸翻轉的操作進行數據增強,并篩選掉效果不佳的圖片,最終選定1 000張圖片用于制作數據集。同時,因為本課題應用背景為空間對接、抓捕等,在航天器對目標衛星進行對接過程后期,由于目標距離光學相機較近,目標難免會溢出光學相機的視野,導致相機無法獲得目標的全部圖像。針對該問題,采用局部標注方法,制作了兩種目標的局部圖像數據集。使用相機在較近距離下拍攝目標,使其部分輪廓溢出相機視野,在該情況下拍攝了1 000張圖片,同樣經過數據增強和篩選,選定1 000張圖片制作數據集。
將獲取到的圖片使用Labelme軟件進行標注,標注之后生成一個對應的json文件,使用Labelme軟件進行處理得到訓練所需數據集,其可視化后的全局圖像數據集如圖2所示,局部圖像數據集如圖3所示。最終得到目標的實物圖像數據集2 000個,按照訓練集:驗證集:測試集=6:2:2的比例進行隨機分配,所得三者的數目分別為1 200、400、400。

圖2 兩種目標的實物全局圖像數據集

圖3 兩種目標的實物局部圖像數據集
受空間限制的約束,實驗室中采集的目標實物圖像的距離較近,只滿足了較近距離下數據集的構建。由于仿真平臺不受現實空間約束,可采集目標距相機任意距離的圖像。為了增加中遠距離時的數據集樣本,同時提高近距離時的樣本豐富性,在3dsMax中建立了某衛星的三維模型,并渲染生成仿真圖像。同樣,為了解決目標距離光學相機較近時可能會導致的檢測失敗問題,也同制作實物圖像數據集時一樣,建立其全局圖像數據集和局部圖像數據集,數量均為1 000張。生成數據集的方法與實物圖像數據集相同,均使用Labelme軟件完成。建立的全局圖像數據集如圖4所示,局部圖像數據集如圖5所示。最終得到目標的仿真圖像數據集2 000個,按照訓練集:驗證集:測試集=6:2:2的比例進行隨機分配,所得三者的數目分別為1 200、400、400。

圖4 兩種目標的仿真模型全局圖像數據集

圖5 兩種目標的仿真模型局部圖像數據集
最終,形成了樣本量為4 000個的深度學習數據集,其中,實物樣本數據量與仿真樣本數據量均為2 000,它們各自包含1 000個全局圖像樣本和1 000個局部圖像樣本。
Ring-Engine-Mask R-CNN分別由主干網絡、區域建議網絡(RPN)、ROI分類器和邊框回歸、Mask分支構成,網絡結構如圖6所示。

圖6 網絡結構圖
在Ring-Engine-Mask R-CNN中,主干網絡是一個殘差網絡結構,同Mask R-CNN主干網絡原理相同,其使用shortcut直接將輸入連接至后面的層,以降低特征損失[18]。相對于基于ResNet-101作為主干網絡的Mask R-CNN,其改進處為網絡的第3階段的4個Block增加至6個,第4階段的23個Block縮減至4個,每個Block內部為標準殘差結構,包含3個卷積層。這兩個階段的通道數與卷積核大小均不變。改進后的網絡的仍然采用5階段方式,第1、2、5階段的卷積核尺寸、通道數、Block數量均不變。所以,改進后的主干網絡5個階段共計68個卷積層,其結構見表1。

表1 Ring-Engine-Mask R-CNN主干網絡結構表
針對待檢測的兩類衛星特征部位,Ring-Engine-Mask R-CNN中分類回歸分支和Mask分支中的通道數均將Mask R-CNN的80修改為3,分別對應著背景(background)、星箭對接環和遠地點發動機噴管。
對于每一張輸入的圖片,在第1階段中,使用零填充和7×7的卷積核對其進行卷積運算,在這之后接有BatchNorm層進行歸一化,ReLU層進行非線性激活,MaxPooling層進行池化。除第1階段外,每個階段都采用Block塊的方式,Block數代表每一階段中含有的殘差結構模塊數量,每一個Block包含3個卷積層,其后都跟隨著一個BatchNorm層和ReLU激活層。其中每個Block的首端卷積層和末端卷積層采用的是1×1的卷積核,中間采用的是3×3的卷積核,這樣做的目的是在保證網絡精度的情況下降低網絡的計算消耗,以第5階段的第1個Block為例,首先通過1×1的卷積進行降維,將輸入的降低為512維,然后是正常的3×3的卷積操作,最后通過1×1的卷積將維度提升至與shortcut對應上。
經主干網絡計算得到的特征圖經由RPN網絡得到RoI,它與主干網絡提取的特征圖共同經由RoIAlign處理,RoIAlign使用雙線性插值的方法,相比Faster R-CNN中的RoIPooling降低了由于像素無法對齊引起的誤差。從RoI出來后分為兩個分支,第一個分支經過一個卷積核為7×7,通道數為256的卷積,再經過兩個1 024維的全連接層,完成目標的分類和邊界框的回歸;另一個分支經過多個3×3卷積層生成5個14×14×256的特征圖,一個反卷積生成28×28×256的特征圖,最終通過全連接層為每張圖片生成Mask掩碼,完成目標的實例分割。
在Ring-Engine-Mask R-CNN中,損失函數由三部分組成,其損失函數具體為:
L=Lcls+Lbox+Lmask
(1)
其中:Lcls為多分類損失;Lbox為邊界框損失;Lmask為掩碼損失。
多分類損失Lcls和邊界框損失Lbox這兩部分與Faster R-CNN相同,分別用來預測目標的類別和進行邊界框的回歸。掩碼損失Lmask即實例分割損失,使用平均二值交叉熵損失來定義,Mask分支對于每個RoI有個k*m2個輸出,即k個類別數和每個類別所包含的分辨率為m*m的掩碼,對于每一個像素,利用了sigmoid函數計算相對熵,最后得到平均相對熵誤差,這里需要注意的是,由于掩碼分支與分類回歸分支共享一個RoI,所以對于一個確定RoI,在分類回歸分支計算出其所屬類別后,掩碼分支就僅計算這一類分類的相對熵誤差,并作為其誤差值進行loss運算,這樣做可以不需要去區分每一個像素屬于哪一個類別,避免了類別競爭,最后通過與閾值0.5進行比較,最后生成二值掩碼。
本次實驗平臺選用臺式計算機,其硬件環境配置為:CPU:i5-4750 3.2 GHz×4核心,GPU:NVDIA GeForce RTX2080s 8 GB,內存:8 GB。軟件環境配置為:操作系統:Ubuntu 18.04.5LTS,編程語言:Python,網絡框架:Keras + TensorFlow1,IDE:Jupyter Notebook。
圖像采集及數據集的建立見前文內容。
這里用于訓練完測試的圖片也使用前述的圖像采集方法,分別有實物圖片及仿真模型圖片。
為了提高模型的適應性,減少對標定數據的依賴,從側面擴大數據集,使用遷移學習的方法,使用已經在COCO數據集上訓練好的Mask R-CNN模型對網絡進行初始化[19]。COCO數據集為微軟推出的通用數據集,包含80個語義分割的類別[20],可以為網絡提供一個較優的初始化結果。
Ring-Engine-Mask R-CNN實驗流程如圖7所示,其具體流程步驟如下:

圖7 Ring-Engine-Mask R-CNN實驗流程圖
1)采集目標圖像,制作兩種目標的數據集,按6:2:2的比例將其分為訓練集、驗證集和測試集[21]。
2)搭建Ring-Engine-Mask R-CNN并配置軟件環境。
3)使用COCO數據集對網絡進行初始化,同時使用數據集進行Ring-Engine-Mask R-CNN的訓練,經訓練得到對應模型。
4)使用驗證集對得到的模型進行驗證,得檢測及分割圖像并計算mAP指標。
5)根據檢測分割圖片及mAP指標,重新進行(2)~(4)步,直到效果達到預期。
3.3.1 Ring-Engine-Mask R-CNN模型網絡結構選擇
為了得到較優的改進網絡模型的性能,在實驗開始前對Ring-Engine-Mask R-CNN模型的網結構進行了多次調優測試,使用平均交并比(mIoU,mean Intersection over Union),來評價模型的檢測分割精度,測試的結果見表2。其中,改進模型1、2和原Mask R-CNN在階段4擁有不同的Block數,其他階段的Block數相同,可以看到改進模型1的的精確度較原模型有1.6%的提升。改進模型3、4在原Mask R-CNN基礎上調整了階段3的Block數,但模型3改進效果很小,模型4效果變差。改進模型5、6在改進模型1的基礎上分別將階段3改為2個Block和6個Block,其中改進模型5的精度出現下降,分析原因為該模型在階段3模型使用2個Block未能充分提取訓練集特征,而模型6的精度提高,較改進模型1提高了3%,較原Mask R-CNN提高了5.6%。綜上,選用改進模型6作為Ring-Engine-Mask R-CNN的最終主干網絡結構,其卷積層和全連接層共68層。

表2 Ring-Engine-Mask R-CNN網絡參數調優
3.3.2 不同模型性能對比
為了比較Ring-Engine-Mask R-CNN模型與現有模型的性能差異,使用了制作的4 000個樣本的數據集對改進模型和基于ResNet-101的Mask R-CNN進行訓練。之后使用相同的測試圖片在Ring-Engine-Mask R-CNN模型與Mask R-CNN模型進行檢測與分割,結果如圖8所示。

圖8 兩種網絡模型檢測分割結果比較圖
由兩種網絡模型檢測分割的結果圖來看:Ring-Engine-Mask R-CNN模型與原版Mask R-CNN模型均可以正確地進行目標分類;在分割精度上Ring-Engine-Mask R-CNN模型優于原版Mask R-CNN模型,且在目標較大時,Ring-Engine-Mask R-CNN在兩種目標圖像輪廓接觸處和輪廓角較銳利處擁有更高的精度。
本研究服務于空間在軌服務,目的是檢測和分割衛星星箭對接環和遠地點發動機噴管。使用環境為太空中的星載嵌入式系統,這必然對模型的大小,檢測運算量和實時性有較高的要求,因此最后在這幾個方面對兩種模型進行性能比較,結果見表3。

表3 兩種網絡模型性能比較
本文算法模型相比于傳統的Mask R-CNN網絡,在檢測分割精度上有5.6%的提升,說明了對于該場景下星箭對接環和發動機噴管的檢測分割,網絡結構不是越復雜越好,過深的網絡的結構會導致網絡分割性能的過擬合,不能很好的處理兩種目標的邊緣接觸區的分割問題,同時還造成了運算資源的浪費。同時,也要適當增加網絡中部分結構的卷積層數,這樣可更好的提取圖形的特征信息,能使分割精度進一步提高。改進的Ring-Engine-Mask R-CNN模型比原版Mask R-CNN體積縮小了27.2%,檢測分割所用時間減少17.8%,同時,檢測分割精度提高了5.6%,具有較好的效果。
本文提出了一種改進的衛星目標識別檢測實例分割網絡模型Ring-Engine-Mask R-CNN,可應用于空間在軌服務的目標航天器識別檢測中,該網絡模型在Mask R-CNN基礎上改進了主干網絡結構和分類回歸、Mask分支通道數,以便更好的適應所需任務。
1)Ring-Engine-Mask R-CNN模型在測試集上均得了較好的效果,檢測分割精度達到了91.2%,比Mask R-CNN在同樣情況下的精度提高5.6%。相比于Mask R-CNN,在網絡模型規模上縮小了27.2%,檢測速度也提升17.8%。
2)改進模型對空間衛星目標檢測性能較好,可用于空間在軌服務抵近停靠和抓捕控制階段的衛星目標的識別檢測。