肖 枚, 凌偉程, 劉亞波*,劉 霖, 王曉蓓, 劉 翔
(1.中國科學院空天信息創新研究院,北京 100094;2.中國科學院大學電子電氣與通信工程學院,北京 100049)
中國擁有超過18 000 km2的海岸線和超300萬km2的管轄海域,海洋資源極其豐富。船舶作為開發和利用海洋的主要工具,對其進行實時監測監視至關重要。傳統的海洋目標監測監視手段,如船舶巡航和飛機航拍等,監測監視范圍有限,成本高,易受海況、氣候等的影響,無法有效地大面積應用。而星載合成孔徑雷達(synthetic aperture radar, SAR)可以全天時全天候地對大范圍區域開展高分辨觀測。因此相比于傳統手段,其在海洋態勢感知、漁業管理、執法維權等方面具有更重要的意義。
目前,星載SAR船只檢測主要基于地面處理系統,如加拿大海洋監測監視工作站(Ocean-monitoring Workstation, OMW)[1],美國阿拉斯加SAR演示驗證系統(Alaska SAR Demonstration System,AKDEMO)[2-3]和意大利e-GEOS公司SEnSE SAR海洋監視軟件平臺等。然而基于地面處理的方法使得傳輸鏈路過長,無法適應面向用戶直接應用的信息服務要求,更無法滿足衛星組網、星上實時任務規劃和星間協同引導的發展需求,因此有必要進行星上實時處理的研究。與大氣內部環境不同,太空環境更為惡劣,對于處理系統的硬件要求更高,綜合考慮高性能和空間環境適應性的需求,目前較常采用的星上處理技術架構為異構架構,具體為現場可編程門陣列+高級精簡指令集機器(field programmable gate array+advanced RISC machine, FPGA+ARM),或FPGA+DSP(digital signal processor)的組合方式。這種異構技術得益于當前FPGA高性能、高集成度的優勢,處理性能得到大幅提升。使用ARM或者DSP等通用處理器進行任務資源調度,提高了系統可重構性和靈活性,從而使整個系統體積、重量和功耗得到進一步優化。根據公開報告,美國NASA下屬JPL(Jet Propulsion Laboratory)于2005年搭建了一套基于FPGA的高性能、容錯SAR星上實時處理系統;美國SEAKR公司2016年研制基于Virtex-7可重配置計算技術的星載SAR宇航級信號處理平臺。以上SAR星上實時處理系統主要完成SAR成像處理,并不包括目標檢測。
SAR船舶目標檢測較常使用的主要有兩類方法。一類是基于恒虛警率(constant false alarm rate, CFAR)[4-7],如單元平均CFAR(cell averaging CFAR, CA-CFAR)[8]、有序統計CFAR(order statistics CFAR, OS-CFAR)[8-9]、雙參數CFAR[10]等。CFAR類算法復雜度低、應用范圍廣泛但算法精度較低。另一類是基于機器學習[11-14]的方法,如區域卷積神經網絡(region convolutional neural network, R-CNN)[15]、支撐向量機(support vector machine, SVM)[16]等。該類方法精度較高但需要一定量人工標記數據進行模型訓練。目前實時檢測主要基于以下三種處理器件:DSP、FPGA和GPU。DSP編程開發難度較低但處理能力相對較弱,只能用于數據吞吐量較小的應用場景,并不適用于星載SAR數據實時處理;GPU計算能力強,但相應的運算功耗大,抗輻照性弱,也不適用于星上環境。FPGA功耗低、并行處理以及內部豐富存儲資源的集成的優點,適用于星上SAR實時處理系統。據此,綜合考慮船舶檢測算法實時開發的可行性和時效性,基于FPGA處理架構,設計一套用于星載SAR實時處理系統的星載SAR船舶目標檢測算法。首先對CFAR類檢測算法進行考察分析,結合典型星載SAR對海觀測參數指標,最終確定對數正態的CA-CFAR算法。進一步,基于FPGA硬件平臺對所提算法進行設計優化,最終形成用于實時處理系統的SAR船舶目標檢測算法。實驗階段,使用來自高分三號的59幅SAR圖像數據對所設計算法在實時處理系統的性能進行詳盡的驗證。
CFAR算法主要是基于滑窗結構,在給定測試數據區間內順序滑動窗口。在每次測試過程中,利用窗內訓練像素點自適應估計最優閾值,當測試像素點大于該閾值時,則判定為目標點,否則認為是背景噪聲點。CFAR類檢測算法主要有兩個要素,虛警率和雜波背景統計建模,前者與具體CFAR算法無關,為人為設置期望值。后者涉及雜波樣本選取、雜波模型選取和模型參數估計。雜波樣本選取方法大致包含CA-CFAR、最大選擇CFAR(greatest of CFAR, GO-CFAR)、最小選擇CFAR(smallest of CFAR, SO-CFAR)、OS-CFAR等。CA-CFAR適用于單目標和均勻雜波背景;SO-CFAR和OS-CFAR適用于多目標但在雜波邊緣出現虛警;GO-CFAR抗邊緣雜波性能強但會邊緣會出現漏檢;船舶檢測區域為遠海區域或者經過海陸分割后的海面區域,一般不會出現待檢單元位于或靠近不同反射率區域邊界處時所帶來的雜波邊緣效應。同時,星載SAR測繪范圍廣,尤其對海觀測過程中極少會出現多個船舶目標位于一個處理窗口的情況,且滑窗檢測過程中一般設立保護單元避免多目標干擾。并且GO-CFAR、SO-CFAR和OS-CFAR由于檢測原理,閾值計算過程中需要比較或者排序,會增加算法存儲空間。因此,考慮對海觀測,船舶檢測實際情況與星上系統資源空間,選用CA-CFAR作為雜波樣本選取方法。考慮應用場景為海面船舶目標,為了與實際環境更為貼近以提高檢測性能,對海雜波分布加以分析。
目前常用的對海雜波分布主要有:K分布、對數正態分布和韋布爾分布。根據Nathanson等[17]對過去幾十年間海量的海雜波實測數據統計建模擬合的結果,頻率覆蓋0.5~30 GHz,擦地角0.1°~90°,海況(以風速表示)等級為2~6級,如表1所示,給出不同頻率、入射角和海況下的海雜波的最優統計分布模型。結合目前星載SAR系統對海觀測典型參數,即載荷一般為C波段,觀測入射角一般低于45°,因此結合表1,優先考慮對數正態分布和韋布爾分布。表2給出對數正態分布和韋布爾分布統計模型和相關參數估計結果。通過高分三號數據實際測試統計,測試過程中確保處理窗口、虛警率等參數都相同。圖1所示為測試中的一組星載SAR圖像數據對應的兩種分布檢測結果。其中紅色標記區域為算法檢測出的船舶目標,黃色標記框為人工解譯原圖中所有船舶目標,因此剩下未標記的檢測出的紅色框為虛假目標。由此看出,韋布爾分布同對數正態分布一樣,能在圖像相同位置檢測出目標,但韋布爾分布會檢測出更多虛警,這會大大加重分類識別處理的計算負擔。更進一步,測試SAR圖像數據中最大數據量為2 G左右,最小數據量為100 M左右,但兩種分布檢測耗費時間差一般在 10 s 以內且圖像數據量越小時間差越小,可忽略。因此,從時間消耗和檢測結果綜合考慮選擇對數正態分布。綜上,選取基于對數正態的CA-CFAR作為船舶檢測算法。

圖1 數據1原圖與測試結果圖

表1 不同頻率、不同入射角和不同海況下雜波幅度的最佳分布

表2 兩種分布統計模型和相關參數估計結果
基于上述分析,SAR船舶檢測算法具體描述如下:首先對圖像做海陸分割等預處理,如基于主動輪廓模型[18]或Ostu[19]分割;然后利用基于對數正態分布的CA-CFAR對圖像進行粗檢測,其中涉及CFAR參數的設置和對數正態分布參數計算,每個滑動窗口檢測閾值計算獲取目標像素點和通過腐蝕膨脹消除孤立的像素點;最后通過連通域檢測,得到目標區域的等幾何參數,利用長寬比、區域面積,長度等特征進行虛假目標剔除,輸出檢測結果。具體流程如圖2所示。

圖2 船舶檢測流程圖
基于上述對船舶檢測算法描述,整個船舶目標檢測過程實時實現的主要模塊包括:對數正態分布參數計算;DDR數據緩存與分塊讀取;滑窗檢測;大模板腐蝕與大模板膨脹;連通域檢測標記;標記結果篩選剔除。考慮到實時實現的可行性與時效性,對船舶檢測算法加以優化,主要體現在以下幾點。
星載SAR數據量大,并且星載SAR對海檢測一般關注尺寸大于100 m的船只,在高分辨SAR圖像中船只呈現出分布式特征,一般占據幾十至數百個像素點。CFAR檢測算法主要是船舶目標的后向散射一般明顯強于海洋雜波背景,反映到圖像中即為船舶目標的像素點灰度值明顯高于海洋雜波背景。從理論上來講,數百個像素點對于檢測而言有足夠的冗余,因此可以通過對距離向和方位向進行降分辨處理,在保證檢測性能同時提高檢測效率。
利用高分三號衛星圖像數據,對多幅圖像開展試驗。圖3、圖4給出兩景圖像不同分辨率下的檢測結果。表3、表4給出兩景星載SAR數據不同分辨率下同一計算機平臺仿真運行時間。圖3、圖4原始數據距離向×方位向像素點數分別為18 268×21 112和16 766×21 953,分辨率分別為3 m和 5 m。原始圖像檢測結果經人工判別為場景中所有真目標。從檢測結果可看出同一景星載圖像,原圖檢測和降低分辨率檢測對應位置都能檢測到目標。降低分辨率后可能會引入虛假目標,因為該過程中船舶占據的像素越來越少,極有可能與高強度海洋雜波一起被檢測為目標,形成虛假目標,如圖4(a)所示人工判別的非船目標。因此,從檢測率來說,降低分辨率不會影響檢測概率但檢測速率會提高。統計幾十景星載圖像數據,結合實測數據分析,一般檢測過程中原始圖像分辨率可下降一半。因此,為提高檢測速率,可在數據讀入后檢測之前,實時檢測算法方案中設計2倍抽取模塊。

圖3 數據2不同分辨率測試結果

圖4 數據3不同分辨率測試結果

表3 數據2不同分辨率仿真運行時間結果

表4 數據3不同分辨率仿真運行時間結果
檢測算法輸入為一景大小M×N數據類型uint16的單極化SAR圖像,所需存儲空間一般為幾百MB,需存儲在DDR中。根據算法原理需對原始數據進行對數變換,圖像數據類型轉為double。檢測過程中滑窗檢測、腐蝕膨脹、連通域檢測等操作都需要對中間數據進行存儲且多次進行讀寫操作。如處理窗口參數為:背景窗大小(bgh×bgw)、保護窗大小(proh×prow)和目標窗口大小(targ×tarh)。滑窗檢測過程中需要開辟大小為bgh×bgw-proh×prow的空間存儲參考單元數據,并且在每次滑窗過程中需要對該區域重新進行讀寫,同時需要開辟大小Nr×Na的區域用來存儲檢測后的邏輯值。該過程一般需要存儲數據量為幾個MB,一般 FPGA 自身所帶的RAM足夠存儲,且其讀寫速率優于DDR,因此,一般中間數據存儲直接在RAM里。同時考慮到FPGA并行處理的優勢,為提高檢測速率,采用分塊處理,分塊處理過程中,分塊區域應該有重疊,確保處在邊緣的船舶目標不會被分割,尤其是圖像分辨率高的情況。具體分塊原理如圖5所示。其中灰色填充區域為SAR圖像數據區域,紅色實線與黃色實線代表SAR圖像數據的每一個處理分塊(大小為NB×NB,可設置為1 024×1 024),紅色虛線與黃色虛線代表從DDR中讀取SAR圖像數據的每一個讀取分塊(大小為N×N,N=NB+bgh-tarh,其中bgh和tarh分別表示正方形CFAR處理窗口的背景窗口高度和檢測窗口高度),SAR圖像數據區域外,無論在背景窗還是檢測窗內,均不予考慮,相鄰兩塊之間重疊NB/4。

圖5 分塊原理示意圖
理論上,CFAR檢測過程中膨脹腐蝕主要是為了去除很小面積的一些孤立的像素點(可能是海面檢測出占據很少像素點的高強度雜波),不會去除面積大、高亮的船舶目標不會影響CFAR檢測結果。在腐蝕膨脹過程中,仿真常用的有橢圓形模板和鉆石型模板(菱形模板),在模板尺寸為3和5時兩者完全相同;尺寸超過5時,鉆石型模板相比橢圓形模板更具規律性,例如在模板尺寸為7時,橢圓模板如圖6(a)所示,鉆石型模板如圖6(b)所示。星載SAR圖像數據測試,兩種模板檢測結果相同,如圖7所示。在腐蝕膨脹過程中,模板大小會隨著圖像和檢測參數而改變,因此FPGA編程開發過程中模板不再是給出固定大小的0、1矩陣,相比于橢圓形模板更具規律的鉆石型模板更易實現。

圖6 尺寸為7的兩種模板示意圖

圖7 數據4兩種模板檢測結果
基于以上優化分析,實時船舶檢測算法方案示意圖如圖8所示。

圖8 實時船舶檢測算法方案示意圖
實驗過程中,高性能異構實時處理平臺主要由主控及圖像處理單元、信號處理單元組成,主控與圖像處理單元峰值計算能力為5TFLOPS,快速數據緩存容量為160 GB。信號處理單元板卡內部有128 GB的DDR4高速存儲芯片,每個Ultrascale+FPGA芯片配置64 GB的內部存儲,用于緩存處理數據,5 Gbit的NOR Flash芯片,用于存儲FPGA程序。考慮整個系統性能,對高性能異構實時處理系統資源合理有效分配是至關重要的。主控與圖像處理單元接收SAR原始數據,并進行BAQ解碼等預處理,將處理后的數據傳到信號處理單元進行成像得到SAR圖像。SAR圖像傳輸到主控及圖像處理板單元進行目標檢測、識別和確認,獲取高價值目標信息。最后處理結果以信息簡報、切片圖像和子帶圖像三種方式輸出到數據傳輸分系統。具體資源分配如圖9所示。

圖9 平臺資源分配示意圖
實驗首先對船舶檢測算法在計算機仿真平臺與硬件處理平臺檢測結果進行對比分析。圖10、圖11給出2景星載SAR圖像數據的縮略圖、計算機仿真檢測結果與FPGA實時測試檢測結果,檢測結果以紅色框標記。結果表明,船舶檢測算法在硬件平臺與計算機仿真檢測結果基本一致。驗證了算法在硬件平臺的可實現性。其次,采用分辨率為3、5、8、10、25 m的GF3圖像數據在硬件平臺上實時驗證,共使用59幅SAR圖像,具體測試結果如表5所示。總檢測率和總虛警率定義為

表5 GF3圖像數據FPGA檢測性能測試結果

圖10 數據5仿真與FPGA測試結果

圖11 數據6仿真與FPGA測試結果
Pd=Ndt/Ngt×100%
(1)
Pfa=Nfa/(Nfa+Ndt)×100%
(2)
式中:Ngt表示相同分辨率的測試的所有星載SAR圖像場景中真實艦船目標個數;Ndt表示正確檢測到的艦船目標個數;Nfa表示檢測到的虛警個數。測試統計結果表明,典型分辨率下,船舶檢測算法實時實現檢測率在95%以上,虛警率在28%以下。最后,在計算機平臺上使用仿真軟件處理測試,平臺處理器為AMD Ryzen7 4800H with Radeon Graphics,主頻為2.90 GHz,內存為16 GB,系統為 Windows 10 教育版64位操作系統。經多次測試,不同尺寸、64位寬的SAR原始數據檢測消耗時間如表6所示。FPGA測試過程中,檢測輸入長度(方位向)占據32 768個像素點,寬度(距離向)占據16 384個像素點的SAR原始復數圖像,數據流為I和Q兩路數據,每一路數據類型為單精度浮點數,共64 bit位寬,即輸入星載SAR數據大小為4 GB。對此,數據累計和處理時間在12 s左右,實時率為1,即數據傳輸完成檢測即完成。相比于仿真軟件測試,硬件平臺處理速度可提高10倍,滿足時效性需求。

表6 不同尺寸64位寬的SAR原始數據檢測消耗時間
結合星上SAR實時處理系統,綜合考慮船舶檢測算法實時開發的可行性和時效性,基于FPGA處理架構,設計了一套用于星上SAR實時系統的星載SAR船舶目標檢測算法。首先對現存的檢測算法進行考察分析,結合星載SAR實時處理的性能指標,最終確定基于對數正態的CA-CFAR算法。進一步,基于FPGA硬件平臺上對所提算法進行設計優化,最終形成一套可用于用于星上SAR實時系統的星載SAR船舶目標檢測算法。實驗階段,使用來自高分三號的59幅SAR圖像數據對所設計算法在實時處理系統上的性能進行了詳盡的驗證。測試結果表明,算法能滿足平臺可行性和時效性需求。