邵亞東, 邵遠斌, 武奧迪, 萬 雪
(1. 中國科學院大學 計算機科學與技術(shù)學院,北京 100049;2. 中國科學院大學 航空宇航學院,北京 100049;3. 中國科學院空間應(yīng)用工程與技術(shù)中心,北京 100094;4. 中國科學院太空應(yīng)用重點實驗室,北京 100094)
自從上世紀人類開啟探索太空,開發(fā)太空,利用太空的征程后,近地空間的航天器數(shù)量不斷增加。其中有些航天器由于設(shè)備老化,或者遭受嚴重毀損,失去原有作用。這類航天器本身造價不菲,并且占據(jù)著珍稀的不可再生的軌道資源。如果對其開展在軌服務(wù)[1],通過更換部組件進行在軌延壽或者輔助離軌以釋放占據(jù)的軌道資源,則將產(chǎn)生巨大的經(jīng)濟價值和戰(zhàn)略價值。對于一些在軌任務(wù),如對沒有靶標的部件進行操作時,需要首先識別出目標部件的區(qū)域,然后跟蹤該部件,以完成后續(xù)的操作。因此在相關(guān)的在軌服務(wù)中,精確并連續(xù)地識別出相關(guān)部件,是任務(wù)成功的關(guān)鍵和前提,這也是本文著眼要解決的主要問題。近些年來,基于深度學習的計算機視覺技術(shù)獲得迅猛的發(fā)展,在相關(guān)任務(wù)上已遠遠領(lǐng)先傳統(tǒng)方法。使用基于深度學習的方法解決本文關(guān)注的問題,首先需要一個高精度的航天器部件檢測器來獲取包含相關(guān)部件的區(qū)域,然后需要一個穩(wěn)定的跟蹤器在時序幀上進行相關(guān)部件的關(guān)聯(lián)。
針對目標檢測器,目前的研究主要分為基于目標檢測的方法,和基于實例分割的方法。基于目標檢測的方法,主要形式是在圖像中以一個最小矩形包絡(luò)標識出相關(guān)目標;這種方法對于部件的精細操作,顯得較為粗糙。基于實例分割的方法,主要形式是在圖像中用不同的實例級像素掩膜表示不同的目標;這種方法和基于目標檢測的方法相比精細化程度更高。實例分割方法基本上可以看做是目標檢測和語義分割兩個任務(wù)的合并[2],由于該方法是兩個任務(wù)的合并,那么根據(jù)兩個任務(wù)的先后順序便可以將實例分割分為先檢測后分割的方法(也稱為自上向下的方法),先分割后檢測的方法(也稱為自下向上的方法),以及同時完成兩個任務(wù)的方法(也稱為直接法)。對于自上向下的方法,主要做法是在檢測到的目標區(qū)域添加語義分割分支來預(yù)測目標的像素掩膜;代表方法有在YOLOv3[3]的基礎(chǔ)上發(fā)展出來的Poly-YOLO[4],在Faster-RCNN[5]的基礎(chǔ)上發(fā)展來的Mask RCNN[6]和Cascade Mask RCNN[7]等。自下向上的方法主要采用像素編碼然后通過相似度聚類得到實例的思路,比如SGN[8]和SSAP[9]等。直接法目前的技術(shù)范式并不統(tǒng)一,有一類方法將圖像劃分成若干柵格,對落在其中的物體進行類別和掩膜預(yù)測,代表方法有在目標檢測網(wǎng)絡(luò)YOLOv1[10]的基礎(chǔ)上發(fā)展出來的SOLOv1[11]和SOLOv2[12]。根據(jù)目前的發(fā)展現(xiàn)狀,自上向下的方法在精度上基本優(yōu)于自下向上的方法和直接法,但其依賴于精確的目標檢測結(jié)果,掩膜分割的細節(jié)相對不夠精確,速度相對較慢;自下向上的方法容易產(chǎn)生不連續(xù)的掩膜,精度較低,往往需要復(fù)雜的后處理。為了滿足在軌操作的安全性和精確性,仍需對部件實例分割的精度進行提升。
針對目標跟蹤器,主要有單目標跟蹤和多目標跟蹤方法,在研究領(lǐng)域上兩者關(guān)注的重點不同,比如前者更關(guān)注不基于檢測的跟蹤,主要形式是提前給定一個目標,然后在后續(xù)圖像上進行跟蹤;后者則更多關(guān)注基于檢測的跟蹤,主要是通過檢測器給定多個目標,在后續(xù)圖像上進行跟蹤。為了區(qū)分航天器上的多個相似部件(比如雙翼帆板),本文采用多目標跟蹤方法。多目標跟蹤算法目前主要存在兩類方法,一是基于運動的方法,二是基于形貌的方法??柭鼮V波器是大多數(shù)基于運動的方法的基礎(chǔ);這類方法中有代表性的SORT[13]算法,其根據(jù)線性運動假說對于目標矩形包絡(luò)建立預(yù)測方程進行預(yù)測,通過預(yù)測結(jié)果和檢測結(jié)果之間的交并比完成目標指派,并將檢測結(jié)果作為觀測信息來更新運動模型,最后迭代預(yù)測完成目標跟蹤。當幀率較低且存在遮擋時該方法直接使用預(yù)測結(jié)果來更新運動模型,這會導(dǎo)致累計誤差和跟蹤失敗。相對于SORT 以預(yù)測為中心的跟蹤思路,OC-SORT[14]提出以觀測為中心的跟蹤思路,其更依賴高精度的檢測結(jié)果來進行運動建模,對于遮擋等非線性運動情況更加魯棒?;谛蚊驳姆椒ê突谶\動的方法相比,主要是在目標指派時,考慮了目標形貌之間的相似性。具有代表性的Deep-SORT[15],Deep-OC-SORT[16],都是在原有方法的基礎(chǔ)上添加了對目標區(qū)域進行特征編碼的重識別網(wǎng)絡(luò),借助編碼特征的相似性來輔助目標指派。由于目標的形貌具有較強的穩(wěn)定性,因此通過存儲重識別網(wǎng)絡(luò)對跟蹤目標的編碼特征,可以有效處理目標跟蹤短暫失敗或者目標在視野中消失后又出現(xiàn)的情況,減少已有目標被指派為新目標的概率,所以在一定程度上重識別可以保證長時序的穩(wěn)定跟蹤。截止到目前,Deep-OC-SORT 在各個跟蹤數(shù)據(jù)集均取得了領(lǐng)先成績。不過在軌服務(wù)過程中,由于復(fù)雜的運動和在軌環(huán)境,觀測到的待服務(wù)航天器會發(fā)生明顯的形貌變化,這對于依賴形貌信息的算法是不利的。因此仍需要對相關(guān)算法的重識別模塊進行改進,使其具有更強的形貌區(qū)分能力。
綜上,本文提出了一種航天器部件分割與跟蹤算法,旨在實現(xiàn)在軌服務(wù)過程中對目標部件的精確分割和穩(wěn)定跟蹤。具體創(chuàng)新點如下:
第一,在實例分割方法Mask RCNN 的掩膜分支中,添加了一個掩膜優(yōu)化模塊,提高了航天器部件的實例分割精度。
第二,提出了一種考慮時序和部件類別的分層加權(quán)五元組損失,在多目標跟蹤算法Deep OC SORT 中提升了重識別網(wǎng)絡(luò)對實例分割網(wǎng)絡(luò)輸出目標的形貌區(qū)分能力,從而提高了部件的跟蹤成功率。
一般的實例分割網(wǎng)絡(luò),得到的分割結(jié)果比較粗糙,不利于在軌服務(wù)過程中針對相關(guān)部件的精細操作。本文使用10 000 張左右的包括主體、帆板和天線三種常見部件的航天器部件數(shù)據(jù)集(如圖1 所示),對精度較優(yōu)的Mask-RCNN實例分割網(wǎng)絡(luò)進行訓練,實現(xiàn)了對主體、帆板和天線的部件級實例分割;然后在相關(guān)實例分割網(wǎng)絡(luò)的掩膜分支上添加了一個屬于CascadePSP[17]網(wǎng)絡(luò)的掩膜優(yōu)化模塊,對其粗糙的原始掩膜進行優(yōu)化;最后使用優(yōu)化后的掩膜作為分割輸出結(jié)果,以及使用掩膜的最小矩形包絡(luò)作為輸出的檢測框(整個方法如圖2 中的部件實例分割模塊所示)。
圖1 部分航天器部件實例分割數(shù)據(jù)集Fig.1 Part of the spacecraft component instance segmentation dataset
圖2 系統(tǒng)總體流程圖Fig.2 Overall flow chart of the system
CascadePSP 網(wǎng)絡(luò)[17]是一個與類別無關(guān)的掩膜優(yōu)化網(wǎng)絡(luò),它主要是通過復(fù)用三次掩膜優(yōu)化模塊(Refinement Module,簡記為RM)來優(yōu)化分割掩膜;其中掩膜優(yōu)化模塊是一個金字塔網(wǎng)絡(luò),其結(jié)構(gòu)如圖3 所示,它接受一個原始圖像和三個掩膜作為輸入,輸出三種下采樣分辨率的優(yōu)化掩膜。在每一次的掩膜優(yōu)化中,CascadePSP 網(wǎng)絡(luò)首先對上次輸出的若干掩膜進行上采樣,并利用其替換掉上次作為輸入的相關(guān)掩膜;然后將新的掩膜集合連同原始圖像作為優(yōu)化模塊新的輸入進行下一次的級聯(lián)優(yōu)化。該網(wǎng)絡(luò)可以有效提升掩膜分割精度,但是連續(xù)三次的優(yōu)化會導(dǎo)致速度顯著下降。由于選用的實例分割網(wǎng)絡(luò)本身具有一定的精度保障,為了保證一定的時效性,本文只使用了一次掩膜優(yōu)化模塊對初始的部件分割結(jié)果進行優(yōu)化。
圖3 掩膜優(yōu)化模塊Fig.3 Mask refinement module
在軌服務(wù)過程中,目標的部件形貌變化明顯,為了區(qū)分不同部件并穩(wěn)定地獲得前后關(guān)聯(lián)的部件,本文使用部件重識別數(shù)據(jù)集并基于分層加權(quán)的五元組損失對重識別網(wǎng)絡(luò)進行了訓練,提高了其對實例分割輸出部件的區(qū)分能力;之后將訓練好的重識別網(wǎng)絡(luò)嵌入Deep-OC-SORT 框架,提升了相關(guān)部件的連續(xù)跟蹤能力(方法如圖2 中的部件跟蹤模塊所示)。
Quit_trihard[18]損失的主要思想是通過選擇多個正例和一個(或若干個)負例,讓錨和正例在編碼空間內(nèi)的距離盡可能的小,錨和負例之間的距離盡可能的大,以實現(xiàn)區(qū)分的目的。當選擇兩個正例時和一個難的負例時,其形式化描述如公式(1)所示:
其中:h(x)=max(x,0),g(a)為錨圖像在編碼空間的編碼向量,g(p1)為正例圖像1 在編碼空間的編碼向量,g(p2)為正例圖像2 在編碼空間的編碼向量,g(n1)為不易區(qū)分的較難的負例在編碼空間的編碼向量,這三個樣本與錨圖像之間的編碼距離需滿足;α為一正則項,表示負例和錨之間的編碼距離應(yīng)至少大于α,為了方便起見后續(xù)實驗將該值取作0。
結(jié)合航天器部件重識別任務(wù),本文提出的分層加權(quán)五元組損失,將正例區(qū)分為時序較近的同一部件正例和時序較遠的同一部件正例,將負例區(qū)分為同類部件負例和不同類部件負例兩種,并對不同的正例和負例使用不同的權(quán)重;其形式化描述如公式(2)所示,示意如圖4。
圖4 分層加權(quán)五元組損失Fig.4 Hierarchical weighted quintuple loss
其中:η為同類部件負例和錨圖像編碼距離的權(quán)重,μ為時序較遠的同一部件正例和錨圖像編碼距離的權(quán)重,兩者需大于1,后續(xù)實驗均取值為2;同時這四個樣本與錨圖像的之間的編碼距離需滿足,α和h(x)與其在公式(1)中的含義和取值相同。
使用改進的分層加權(quán)五元組損失訓練重識別網(wǎng)絡(luò),前提是要獲得分層級的部件重識別數(shù)據(jù)集(示意如圖5)。具體做法是,首先對章節(jié)2 里面提到的數(shù)據(jù)集中包含航天器部件的圖像區(qū)域進行剪裁,然后將同一個部件的數(shù)據(jù)進行聚類,再將同種類部件的數(shù)據(jù)按照太陽能帆板、主體和天線進行第二次聚類。
本次工程新建八字墻、涵洞與閘井位于老涵洞首端,新建閘井通過新建涵洞與老涵洞相連。新建涵洞為矩形箱涵,閘井兩側(cè)做混凝土板護坡,總長度29.2m,護坡混凝土面板采用C20F200現(xiàn)澆混凝土板。建筑工程部分詳細概算如表1,得到建筑工程部分總概算91.59萬元。
圖5 部分部件重識別數(shù)據(jù)集Fig.5 Part of the component re-identification dataset
在訓練過程中,首先選定數(shù)據(jù)集中一個圖像作為錨,接著分別加載和錨屬于同一部件的時序不同的圖像作為正例,和錨同一類的其他部件圖像作為同類負例,和錨不同類的其他部件圖像作為異類負例;然后將五幅圖像輸入重識別網(wǎng)絡(luò)獲得對應(yīng)維度的編碼向量,并在編碼空間分別計算錨向量和其他向量的編碼距離;最后將相關(guān)編碼距離代入公式(2)計算損失,并通過梯度反傳算法更新網(wǎng)絡(luò)中的參數(shù)。
實驗在Ubuntu18.04 操作系統(tǒng)上進行訓練和測試,CPU 使用16 核的Intel(R)Core(TM)i9-9900K@3.60 GHz,顯卡使用Nvidia GeForce RTX 2080 Ti,深度學習框架為Pytorch2.0.1。部件實例分割的訓練數(shù)據(jù)在前文中已經(jīng)進行了介紹;其測試圖像是通過Blender 仿真引擎對一個雙翼衛(wèi)星模型進行繞飛和直線迫近得到的,共計400 張,示意圖如圖6。部件重識別的訓練和測試數(shù)據(jù)由文中方法獲得,跟蹤算法的測試數(shù)據(jù)和實例分割的測試數(shù)據(jù)一致。其中訓練數(shù)據(jù)和測試數(shù)據(jù)之間不存在數(shù)據(jù)泄漏,下文的實驗結(jié)果是通過多次實驗求平均得到的。
圖6 分割和跟蹤測試集示意Fig.6 Schematic representation of segmentation test set and tracking test set
為了驗證基于掩膜優(yōu)化的實例分割算法的有效性,我們在目標檢測平臺mmdetection 下選取了比較經(jīng)典的Mask RCNN[6],Cacade Mask RCNN[7],SOLOv2[12],YOLACT[19]和 SparseInst[21]網(wǎng)絡(luò)模型,在航天器部件數(shù)據(jù)集上進行訓練和驗證;之后選用最優(yōu)的模型,添加掩膜優(yōu)化模塊對測試集上置信度大于0.8 的初始分割結(jié)果進行優(yōu)化(太陽能帆板的分割優(yōu)化示意如圖7,主體的分割優(yōu)化示意如圖8)。
圖7 太陽能帆板的分割優(yōu)化示意Fig.7 Segmentation refinement of a solar panel
圖8 主體的分割優(yōu)化示意Fig.8 Segmentation refinement of a main body
在訓練時,所有網(wǎng)絡(luò)模型訓練的樣本批量大小為2,具體的迭代次數(shù)為6 萬到27 萬不等。各網(wǎng)絡(luò)的訓練損失曲線如圖9,從圖中可以看出經(jīng)過相應(yīng)的迭代次數(shù)的訓練后各算法基本收斂。
圖9 各網(wǎng)絡(luò)的訓練損失曲線Fig.9 Training loss curves for each network
在測試時,具體的實例分割精度采用mmdetection 實現(xiàn)的segm_mAP 指標,速度采用每秒處理幀數(shù)(FPS)的指標,相關(guān)實驗結(jié)果如表1 所示。其中segm_mAP 是多個類別的平均精度的平均,結(jié)合部件實例分割其具體定義如下:
表1 分割測試集上航天器部件實例分割性能Tab.1 Result of spacecraft component instance segmentation accuracy on segmentation test set
第一步,對于某類部件的平均精度segm_AP,首先選定一系列的掩膜交并比閾值,然后在每個掩膜交并比閾值下把和真值超過掩膜閾值的實例分割結(jié)果按置信度進行排序;
第二步,對于每一個排好序的隊列,再選定若干置信度閾值,對于每個置信度閾值,把超過交并比閾值和置信度閾值的實例分割結(jié)果當做真陽性樣本,不滿足的和重復(fù)出現(xiàn)的以及類別預(yù)測錯的結(jié)果則當做假陽性樣本,對于沒有預(yù)測到的真值則作為假陰性樣本;由此可以計算某類部件某交并比閾值下的精度(Precision)和召回率(Recall)曲線下面積(越接近于1越優(yōu));
第四步,將每一類的segm_AP 進行平均得到最終的所有部件類的segm_mAP。
表1 中的segm_mAP_50:5:95 指的是掩膜交并比閾值取0.5 到0.95 間隔0.05 的10 個數(shù),segm_mAP_75 指的是掩膜交并比閾值取0.75,segm_mAP_s 則指的是選擇那些像素數(shù)量小于一定閾值的小目標進行評價。
基于表1 的實驗數(shù)據(jù),可以看出各個實例分割算法在不添加掩膜優(yōu)化模塊時,Mask RCNN 取得81.80mAP 的最高實例分割精度;在添加掩膜優(yōu)化模塊后各實例分割算法的精度均獲得提升,提升幅度在 1.50mAP 至4.10mAP,其中對應(yīng)的Mask RCNN 方法亦取得了84.90mAP 的最高實例分割精度。在速度上,添加優(yōu)化模塊后,各網(wǎng)絡(luò)的速度均有明顯下降,但總體上各個方法均可以提供1 FPS 以上的運行速度。速度的明顯下降是因為計算量的大幅度增加;具體原因包括掩膜優(yōu)化模塊的輸入為四張圖片(一張原始圖像和三張初始掩膜),該模塊自身是一個計算量偏高的金字塔網(wǎng)絡(luò),并且每一個置信度超過0.8 的部件識別結(jié)果都會進行一次優(yōu)化。從表1 中還可以看出,添加掩膜優(yōu)化模塊后各方法速度的下降程度不同,比如SOLOv2 的速度下降幅度明顯小于其他方法。這是由于不同實例分割網(wǎng)絡(luò)的對結(jié)果的置信情況不一致,因而它們對于同一批圖像會進行不同次數(shù)的優(yōu)化。
為了驗證使用分層加權(quán)五元組損失的有效性,分別使用Triplet[23]損失、Quit_Trihard[18]損失、不加權(quán)的分層五元組損失以及本文提出的分層加權(quán)五元組損失對一個21 層的重識別網(wǎng)絡(luò)進行訓練。所有網(wǎng)絡(luò)模型訓練時,樣本的批量大小為32,一共進行了1600 余次的迭代計算。使用各損失函數(shù)的網(wǎng)絡(luò)損失曲線如圖10,從圖中看出經(jīng)過相應(yīng)迭代次數(shù)的訓練后,網(wǎng)絡(luò)的損失基本收斂。
圖10 使用各損失函數(shù)的訓練損失曲線Fig.10 Training loss curves using each loss function
在部件重識別測試集上進行測試時,每次加載一個圖片作為錨,加載一個相同部件的圖片作為正例,加載31 個其他部件的負例,分別計算圖像相似度;當正例和錨的相似度高于所有的負例時,認為這一次判別成功,最終統(tǒng)計各方法最優(yōu)訓練結(jié)果的識別成功比例作為部件識別成功率(如表2 所示)。
表2 部件識別測試集上的部件識別成功率Tab.2 Component identification success rate on component identification test set
為了進一步驗證使用分層加權(quán)五元組損失用于多目標跟蹤的有效性,分別將以上損失函數(shù)訓練得到的最優(yōu)部件重識別網(wǎng)絡(luò)嵌入Deep-OCSORT 多目標跟蹤算法;然后使用精度最優(yōu)的部件實例分割網(wǎng)絡(luò)Mask RCNN+RM 提供置信度高于0.9 的檢測目標并進行跟蹤(短時序的跟蹤結(jié)果如圖11,長時序的跟蹤結(jié)果如圖12);最后統(tǒng)計有關(guān)部件被分配至同一ID(Identity)的次數(shù)占總共檢測結(jié)果的比例作為跟蹤成功率(如表3所示)。
表3 跟蹤測試集上的部件跟蹤成功率Tab.3 Component tracking success rate on tracking test set
圖11 短時序的部件跟蹤結(jié)果Fig.11 Component tracking results for short timings
圖12 長時序的部件跟蹤結(jié)果Fig.12 Component tracking results for long timings
根據(jù)表2 和表3,可以發(fā)現(xiàn)使用分層加權(quán)五元組損失訓練的部件重識別網(wǎng)絡(luò)對于相同部件的識別成功率較高;并且使用該重識別網(wǎng)絡(luò)進行多部件跟蹤時,其跟蹤成功率也較高。此外,從圖11 和圖12 可以看出,本文方法除了在短期內(nèi)可以提供穩(wěn)定的部件跟蹤;在長期跟蹤過程中,即使由于極端情況(帆板成為一條線)而導(dǎo)致相應(yīng)的部件出現(xiàn)跟蹤丟失,隨著后續(xù)觀測條件的好轉(zhuǎn),該算法也可以繼續(xù)穩(wěn)定地跟蹤。
根據(jù)前文的實驗結(jié)果,本文選取實例分割精度最優(yōu)Mask RCNN+RM 作為實例分割方法,將分層加權(quán)五元組損失訓練的部件重識別網(wǎng)絡(luò)嵌入Deep OC SORT 進行多部件跟蹤,統(tǒng)計在測試數(shù)據(jù)上各模塊及系統(tǒng)整體運行速度如表4所示。
表4 算法運行速度Tab.4 Algorithm running speed
從表4 中可以看出,該系統(tǒng)整體上可以提供大于1 FPS 的運行速度,不過其速度受制于實例分割模塊。
針對空間在軌服務(wù)過程中航天器部件的精細分割和穩(wěn)定跟蹤問題,本文通過對實例分割網(wǎng)絡(luò)Mask RCNN 的分割分支添加掩膜優(yōu)化模塊,在測試數(shù)據(jù)上將部件分割精度提高至84.90 mAP;通過使用區(qū)分時序遠近正例和同類異類負例的分層加權(quán)五元組損失對部件重識別網(wǎng)絡(luò)進行訓練,在測試集上將部件跟蹤的成功率提升至89.38%。下一步將通過知識蒸餾方法將掩膜優(yōu)化模塊的功能蒸餾至一個輕量級的實時網(wǎng)絡(luò),以實現(xiàn)提高部件分割精度的同時保證較高的運行速度。