2024 年 3 月出版

科儀新知 第 238 期

立方衛星與儀器酬載

0238028

立方衛星之智能遙測酬載系統與邊緣運算電路設計

CubeSat Intelligent Remote Sensing Payload System and Edge Computing Circuit Design

李佩君、徐培翔

Pei-Jun Lee, Pei-Hsiang Hsu

將邊緣人工智慧 (edge artificial intelligence, Edge AI) 技術應用於智能遙測立方衛星的星載系統,進行衛星影像處理執行任務將成為遙測衛星技術發展趨勢。通過整合人工智慧邊緣運算,實現星載上對衛星取影的即時且低資源消耗的處理,研究的關鍵目標是設計基於邊緣人工智慧的低功耗遙測酬載影像處理電路,成功實現人工智慧的邊緣運算。為應對低亮度影像的挑戰,我們提出了一種有效的亮度增強演算法,透過與不同損失函數的比較確保處理後的影像更容易辨識。此邊緣計算採用實現於 FPGA 的卷積 (convolution) 架構,提供了高效的神經網路加速以及達到低亮度影像增強功能。

This project is dedicated to the application of artificial intelligence (AI) technology in the onboard system of intelligent remote sensing CubeSats, specifically focusing on RGB satellite image processing. By integrating AI edge computing, we have achieved rapid and resource-efficient processing of satellite images. The key objective of the research is to design a low-power remote sensing payload image processing circuit based on edge AI, successfully implementing AI edge computing. To address the challenge of low-light images, we propose an effective brightness enhancement algorithm, ensuring that the processed images are more easily recognizable through comparisons with different loss functions. The edge computation employs a convolution architecture implemented on an FPGA, providing an efficient neural network acceleration with the same functionality.

一、智能遙測酬載

1. 邊緣運算於大型衛星和立方衛星上之應用

邊緣運算 (edge computing) 是一種將數據處理能力移到數據生成的地方,而不是依賴中央數據處理中心的計算模型。在衛星應用中,邊緣運算可以應用在大型衛星和立方衛星的不同情境中。大型衛星 (large satellites) 大型衛星通常攜帶較強大的計算資源,用於處理龐大的感測器數據、進行影像處理、任務計畫和控制等。在大型衛星上,邊緣運算可用於即時的數據分析、壓縮、過濾,以減少對地球上的地面站的通信需求。這可以提高系統的效能和即時性,並減少對地球上的基地站基礎設施的依賴。

立方衛星 (CubeSats) 的邊緣運算可用於局部數據預處理、特徵提取或簡單的決策。例如當立方衛星偵測到特定事件或目標時,可以使用邊緣運算執行初步的分析,僅將重要的訊息或影像傳送回地球,而不是全部原始數據。但相較於大型衛星,立方衛星具有多方面的優點,這些優點使它們成為太空科學、地球觀測、科學研究和商業應用中越來越受歡迎的選擇。由於小巧輕便、標準化的結構和元件,設計和製造成本相對較低,立方衛星的標準化尺寸 (如 1U、2U、3U 等) 使得它們易於設計和製造。這種標準化促使了更快的開發週期,更容易實現大量生產,同時減少了工程師在設計和組裝上的困難,使得更多的機構可以參與太空探索。

2. 酬載處理單元與控制軟體

為了實現拍攝和即時影像處理,將致力於光學酬載系統以及超微型深度學習影像增強框架。這個系統將會符合立方衛星的規範,同時也能夠成為深度學習智能遙測的平台。光學酬載系統包含兩個部分,用以完成取像及影像增強處理,包含了以 Python2000 為主要取像單元以及以 Microsemi Smartfusion2 FPGA SoC 為主的影像處理及計算模塊。影像擷取單元為一高解析度 CMOS 感測的光學系統,此系統提供的解析度為 1920×1200 像素。搭配 35 的鏡頭可提供單點解析度達 68 公尺的影像,而整幅影像可涵蓋的範圍為 131×82 平方公里。運算處理單元為一搭配有 MCU 之高效能的 FPGA SoC (system on chip) 並採用抗幅射、低功耗與支援錯誤修正碼 (ECC) 記憶體之設計。故本光學酬載將提供多種介面以因應任務的調派、資料的儲存與資料之傳送等需求,因此擁有多種類的輸出入介面如 USB/UART/SPI/I2C/GPIO,且搭載高達 2GB 的抗輻射 NAND 快閃記憶體。如此,所擷取與處理過的影像資料可以有效地儲存並依規劃傳送回地面站。同時,可因遙測任務之需求更改相關之排程。圖 1 為酬載之影像擷取單元及運算處理與存儲單元。此兩單元以太空規連接線相連接,經由此傳輸線傳輸影像及控制訊號。

圖 1. 光學酬載之影像擷取單元及運算處理單元。

3. 酬載處理單元與控制軟體

利用神經網路影像增強功能,首先將拍攝後的影像資料經由 MCU 控制 FPGA IP 進行智能影像增強的計算,計算完的增強影像結果或是原始影像資料 (RAW data) 皆可經由 SPI 介面傳輸至衛星本體的酬載電腦 (on board computer, OBC),留待可傳輸時再行將資料與影像傳輸至地面站。圖 2 為影像運算處理單元 IP 之關聯方塊圖,保留既有的 FPGA 運算 IP,且含有泛用性高的矩陣運算處理單元以達成提升影像運算處理 IP 之計算能力及泛用性之目的。

  

  

圖 2. 各影像運算處理 IP 關聯方塊圖。

酬載之控制軟體開發方面主要是為了能在惡劣的環境下操作,且須能符合任務的要求,因此在軟體的設計考慮上需注意大量的資料檢查跟通訊協定處理。系統方面主要使用常見於立方衛星的 FreeRTOS 來做為主要即時操作系統。圖 3 為操作系統的功能架構圖。

  

圖 3. 操作系統功能架構圖。

圖 4. 酬載和衛星本體間之連結通道。

任務調度皆由 FreeRTOS 來控制。而操作系統也處理各種周邊 I/O 的控制如:SPI、ADC、UART、FLASH 等。酬載主要是經由 UART 通道和衛星本體間傳送控制命令跟回傳資料,如圖 5 命令經由 UART 界面傳輸,而影像資料則經由 SPI 界面傳輸。酬載影像數據傳輸方面則是需要利用 FreeRTOS 上之任務,來控制 FPGA 中之硬體來進行 SPI 界面資料的傳輸,圖 5 為酬載影像資料傳輸的結果。

  

圖 5. 酬載經由 SPI 介面將影像資料傳輸至桌上型電腦之結果。

影像壓縮方面目前是採用 LZO 無損壓縮格式(1) 來處理影像,壓縮一張 9 MB 的影像約可壓縮掉 20% 資料量,壓縮率 (CR) 約為 1.25,執行時間約 14 秒。

二、增強低亮度影像之先進模型

1. 為何使用 ZeroDCE(1) 作為基本架構

衛星影像中的低亮度影像是需要透過增強影像的亮度、對比度以及清晰度來進行改善,改善時須保留影像的細節並減少雜訊,這是一大挑戰。為了增強低亮度影像的實現,有傳統的影像處理以及現在更先進的機器學習方法,傳統的影像處理技術包含了線性/非線性轉換、直方圖均衡化以及影像融合技術等等…。

基於機器學習的方法與傳統技術相比,實驗結果方面顯示出具有顯著的優勢,然而基於機器學習技術的效果取決於數據集,且模型的複雜性會增加計算時間。在低亮度影像增強的問題中,生成對抗網路 (generative adversarial networks, GANs)(3) 可以利用低亮度影像來產生新的影像,但 GANs 的計算成本很高,而且增強後的影像會受到顏色失真與雜訊的影響,這兩個問題進而限制遙感影像的使用。zero-reference deep curve estimation for low-light image enhancement (ZeroDCE)(2) 可以從低亮度影像中產生出高階色調曲線,可以調整動態範圍並且保留著影像的細節,同時減輕了雜訊和顏色失真的問題,且計算成本也比 GANs 還要低。Retinex-Net(4) 的步驟包含了影像分解與連續增強,達到增強影像的低亮度,但這種方法有可能會導致重建影像失真以及產生雜訊;在非監督機器學習模型被用於低亮度增強的基準評估中,三個架構相比,ZeroDCE 在人類主觀視覺、全參考影像評估指標和執行時間方面都有優異的性能,因此 ZeroDCE 適合被使用在遙感任務中。架構如圖 6。

圖 6. ZeroDCE 之網路架構圖。

2. 前沿技術曲線估計 (cutting-edge curve estimation, CECe)

低亮度影像會降低對比度並且增加雜訊,這會使影像中的背景與物體難以辨別,通常物件偵測演算法是依據影像中的特徵和特性進行分類。因此提出可以被用於酬載的增強低亮度影像之曲線估計方法,擁有著低計算量的優勢,利於使用在有著資源量限制的衛星;此方法採用了後訓練方法進行神經網路的壓縮,將壓縮技術應用預先存放在神經網路模型的訓練權重以及偏差值中。使用地面站全精度的計算來產生權重與偏差參數,量化後被部署在酬載上,參考圖 7 的流程。

圖 7. 所提出的訓練模型與推理模型 CECe。

3. 訓練模型 (在地面站進行)

所提出的方法包括將訓練和推理階段劃分成不同的模型,訓練的模型是在具有無限資源的地面站進行訓練,相比之下 CECe 的推理模型在衛星上運作,衛星上的計算資源與功耗是有限的。此研究的主要目的是將基於 ZeroDCE 低亮度影像增強網路部署在衛星上,此研究減少隱藏層的數量,可以實現更小 DCE-Net 模型,達到明顯地降低隱藏層的複雜性與網路參數大小。圖 8 的內容呈現了原始的 DCR-Net 模型和減少隱藏層模型與第二個簡化層模型進行了比較。

  

圖 8. 基於 DCE-Net 的減少隱藏層模型:(a) Original DCE-Net;(b) 1st minimalist layer model;(c) 2nd minimalist layer model with enhanced sigmoid layer, training model。

表 1. 比較乘法矩陣複雜度。

表 1 將原始 DCE-Net 矩陣乘法複雜性與兩個簡化層 (minimalist layer) 進行比較。第一個簡化層模型由五個卷積層組成,乘法矩陣複雜度為 91.5 GMac,明顯的低於原始的 DCE-Net,第二個簡化層模型僅由三個卷積層組成,並且只有 25.52 GMac 的最低矩陣乘法複雜度。在本研究中使用第二個簡化層作為訓練模型,因為它有最低矩陣乘法複雜度,更適合在有限資源的衛星酬載上實現。此外訓練模型使用 sigmoid 作為激勵函數,因為它比原先的Tanh函數計算複雜度還要更低。

4. 訓練損失函數

因為衛星影像的特點是暗的部分與亮的部分分布不平均,影像在塊之間有很高的區分性方程式 (1) 是原始的顏色損失函數,圖 9(a) 為原始影像,亮度非常低。為了更符合遙感影像的特性,因此在本研究引入了一種新的顏色損失函數,方程式 (2) 是新的顏色損失函數,結果為圖 9(b),但顏色還是不利於肉眼判斷以及目標偵測。

新的色彩損失函數比原始損失函數產生出更好的模擬結果。此外在本研究中還引入了一種新的增強色損失函數,該函數基於新的顏色損失函數方程式 (2) 和 Kullback-Leibler divergence (KL) 損失函數(5, 6)。方程式 (3) 是應用於每個成對影像通道 (R–B;R–G;G–B) 的 KL 損失函數。結果如圖 9(c),雖然提亮了許多,但還是有些許色偏。因此最後提出目前所使用的損失函數。

最新的增強損失函數結合了新的色彩損失函數和 KL 損失函數,使背景色彩更接近原始影像。並減少溫暖 (紅色) 的照明條件。圖 9(d) 將原始影像與差異損失函數進行了比較。結果發現,結合兩個損失函數的增強損失函數是最佳的損失函數,並在本研究中用於增強低亮度影像。

圖 9. 使用不同損失函數的增強影像:(a) 原始影像 (b) 使用原本的損失函數之影像 (c) 使用新的顏色損失函數之影像 (d) 使用新的增強顏色損失函數之影像。

5. 推理模型 (執行在衛星酬載上)

推理模型使用的方法是前沿技術曲線估計 (cutting-edge curve estimation, CECe),所提出的 CECe 模型被設計為高效且可以直接部署在微衛星 (CubeSAT) 硬體上,具有低功耗和計算限制。此推理模型分成五個部分,首先是第一層對輸入的影像進行 signed-16-bit 的歸一化。第二個及第三個部分會使用卷積核大小為 3 的深度卷積 (depth-wise convolution),接著逐點卷積和使用 RELU 作為激勵函數。第四部份包括量化的深度卷積 (depth-wise convolution) 以及使用激勵函數 sigmoid。第五部分是曲線增強迭代,用於估計低光度和增強影像之前的光增強曲線;為了實現上述內容,所提出的模型採用了最小的卷積核以及層數,並利用量化卷積和分段 sigmoid 函數在衛星酬載上的 CECe 部署期間實現硬體的最佳化。

量化卷積 (quantized convolution)

圖 10. 電路板上量化卷積之設計。

以下是所提出的量化卷積過程,首先將輸入數據量化為有符號整數,接著與卷積層的量化權重相乘 (w'p,q,r),然後將得到的值與量化的偏置值 (b'k) 相加,最後將上一步得到的和,配合量化比例因數 (δconv) 進行右移。圖 10 是量化卷積的詳細步驟,對權重、偏差進行量化,並對輸入影像進行正規化,然後使用 32 位有符號操作處理量化卷積。接著將得到的卷積值使用 δconv 進行量化,並使用 floor 函數進行四捨五入。δconv 的值被定義為 δwδnorm 的值相等,表示為 δconv = δw = δnorm。因此,特徵圖或輸出值只需要 16 位元有號數進行儲存,並可以快速地在下一層進行處理。

  

分段sigmoid函數(piece-wise sigmoid)

在深度學習的領域,光照圖的估計是一項關鍵的技術,被使用來增強低亮度的影像,透過增強亮度和對比度來提高影像細節。激活函數負責生成光照圖。常用的激活函數有 sigmoid 和 tanh 函數,分別將輸入值映射到 0 到 1 的範圍和 –1 到 1 的範圍。sigmoid 和 tanh 函數都具有 S 形曲線,但 tanh 函數相對於 0 對稱,而且飽和速度比 sigmoid 函數慢。

假設 sigmoid (x) 的計算複雜度近似為 O (ex),因為它涉及指數函數的計算。而 tanh (x) = 2sigmoid (2x) – 1 的計算 sigmoid (2x) 則涉及到 e2x 的計算,近似為 O (e2x)。雖然 exe2x 函數都具有較高的計算複雜度,但 e2x 函數由於需要進行額外的乘法操作。因此,tanh 函數的計算複雜度高於 sigmoid 函數。

圖 11. 提出的增強 sigmoid 函數-方程式 (4)。

在基於深度學習的影像增強模型中,通常會使用 sigmoid 或 tanh 函數作為最後一層。但它們有著高計算複雜度的特性,例如除法和指數的運算,可能會成為深度學習模型的計算時間上的瓶頸。因此提出了一個增強 sigmoid 函數-方程 (4),這個函數比原始的 tanh 函數只需要更少的計算資源量,並且在複雜度上與 sigmoid 函數相似。

  

enhanced_sigmoid (x) 函數的計算複雜度近似為 O (ex),這近似於 sigmoid (x) 的計算複雜度。圖 11 比較了提出的 enhanced_sigmoid (x) (以紅色曲線表示),該函數以零為對稱中心,其範圍在 –1 到 1 之間,與原始函數 sigmoid (x) (綠色曲線) 和 tanh (x) 函數 (藍色曲線) 進行了比較。提出的增強 sigmoid 函數不僅具有比 tanh 函數更低的計算複雜度,而且飽和速度比 sigmoid 函數更慢。在提出的 CECe 方法中,增強 sigmoid 函數被用作地面站的生成光照圖訓練模型的最後一層。

本研究提出了一個基於 quantized_sigmoid (x) 的新的分段 quantized_sigmoid 函數,以加快生成光照圖的推理過程。圖 12 展示了這個分段 sigmoid 函數。

圖 12. 分段 sigmoid 函數 (Piecewise sigmoid function)。

6. 邊緣運算電路設計的結果進行船艦偵測定位比較

為了驗證在不同的增強損失函數下遙測影像是否達到預期效果,我們選擇使用船艦偵測定位進行評估,主要採用深度學習模型 You Only Look Once Version7 (YOLOv7)。在原始影像中未進行任何亮度增強,如圖 13(a) 所示。這不僅使肉眼難以判斷,同時深度學習模型在船艦定位上也表現不佳,僅偵測到其中一艘船,並在右上角發生了定位錯誤。圖 13(b) 展示了使用原始 ZeroDCE 增強的結果。由於色偏的原因,仍然僅能偵測到一艘船艦。然而,由於亮度的提升,成功減少了陸地上的錯誤偵測。儘管如此,船艦定位的效果並不明顯。為此提出了使用不同損失函數的架構。在這個架構中,我們應用不同的損失函數,如圖 13(c)(d) 所示,相對於原始亮度增強模型和原始影像,可以明顯看出船艦偵測定位的結果更好。而且值得注意的是圖 13(d) 甚至能夠準確定位到四艘船艦,同時沒有偵測到錯誤的物件。增強損失函數結合了新的色彩損失函數和 KL 損失函數解決了色偏現象,使模型更貼近原始影像的真實顏色。這樣的改進不僅提升了視覺判斷的可靠性,也使得深度學習模型在船艦定位方面取得了更優越的效果。

圖 13. 定位不同損失函數增強影像下的船艦:(a) 原始影像 (b) 使用原本的損失函數之影像 (c) 使用新的顏色損失函數之影像 (d) 使用新的增強顏色損失函數之影像。

三、實現於FPGA的卷積架構

1. 整體運算單元的架構設計

近年來深度神經網路在 FPGA 的應用上得到很大的突破,和以前的 GPU 相比,無論在速度或功耗上皆有顯著地提升。由於本架構使用的深度神經網路為 ZeroDCE,在運算中進行了三次卷積 (convolution),如圖 14 所示。

  

圖 14. 整體架構的流程方塊圖。

在深度神經網路的運算過程中最繁複的運算步驟是卷積的計算,在硬體上需要進行非常多次的乘累加運算,對於卷積的電路設計是首要目標,它將影響整體運算單元的計算複雜度、運算速度、資源使用量和功耗等。為了有效地提升運算速度,並適當地分配資源使用量,本架構將各步驟以 pipeline 的方式分成四等分,而每部分都以平行的方式進行資源分配,如圖 15。

圖 15. 卷積架構的 pipeline 處理。

本架構是的資料流以單筆 n-bit 的串列資料運行,為了更好地區分各運算單元的功能,圖 16 顯示了資料流在各運算單元的運作流程,值得注意的是,Conv Layer 運算單元會在每層卷積中重複使用,並依依輸入各層卷積的激勵函數 ReLU 和 Sigmoid。

圖 16. 資料流運行與卷積主要運算單元運用之流程圖。

2. 各運算單元製作

由於卷積是基於圖片上的計算,會使用滑動視窗 (sliding window) 之方法,如果移動步長 (stride) 讓滑動視窗的方格仍重疊部分像素值,這樣一來必須得重複拿取同樣的資料。為了解決這個問題,本架構使用了 Line Buffer 的概念,其架構圖如圖 17 所示,藉由參考(7) 做法,此架構針對內核 (kernel) 的 3×3 尺寸大小進行卷積運算,一般來說,在每次的運算需要 9 個乘法器和 8 個加法器的乘加電路,此架構將乘加電路 pipeline 成三部分:第一部分平行成 3 個乘法器的相乘,第二部分再將相成結果進行相加,而第三部分則是將相加結果再次進行相加,因此在乘加電路的運算過程中只需要三個 cycle 即可完成一次卷積的運算。

圖 17. 卷積單元在 3×3 Kernel 尺寸大小下的架構設計。

主要運算單元 Conv Layer 流程架構如圖 18 所示,有鑑於卷積在滑動視窗後會有輸出和輸入尺寸大小的差異,為此本架構在主要運算單元 Conv Layer 內加入了填充 (padding) 的功能,填充運算單元在此架構中使用零填充的方式,為了讓串列資料按照填充的概念執行而加入同步 FIFO 的功能;在卷積輸出的部分,由於進行乘加後的位元寬度會提升至兩倍寬度以提高計算精確度,主要運算單元 Conv Layer 在卷積運算後會對輸出結果進行量化。

圖 18. 主要運算單元 Conv Layer 流程架構方塊圖。

接下來將 Conv Layer 運算單元進行組合,圖 19 顯示了整個卷積運算單元的架構,第一、二層卷積使用激勵函數 ReLU,而第三層卷積在輸入時需要的輸入資料為前面兩層卷積輸出結果的加總,並在輸出後使用激勵函數 Sigmoid。

圖 19. 整體運算單元的流程架構方塊圖。

四、在 FPGA 板上架構設計與實現

1. 流程圖設計

為了在硬體上達成物件偵測的功能,因此將神經網路在軟體上的操作流程逐項列出,並且對每一層進行評估與功能設計,如圖 20。在架構方面使用 Microsemi SmartFusion2 FPGA SoC(8) 實現,其中的細節如下:

‧測試影像輸入:影像輸入的部分,使用 Microsemi 軟體中提供的 import/export tool 進行輸出入,將影像輸入到 off-chip memory 儲存後供 FPGA 以及微控制單元進行功能測試。

‧微控制器單元:利用微控制單元輸出訊號到 FPGA 後,FPGA 才開始進行指定的動作,直到訊號終止。

‧直接記憶體存取:直接記憶體存取使 FPGA 可以直接到記憶體存取影像資料,而不用透過微控制單元干涉,具有減少執行時間以及功率消耗的兩項優點。

‧輸入/輸出暫存器:由於直接記憶體存取是一次存取特定數量的影像資料,若是 FPGA 設計不當會導致資料遺失,因此必須要設計暫存器將資料先暫存。

  

圖 20. 神經網路流程圖。

2. 卷積架構設計

架構是建立於圖 2 的系統架構,如圖 21 紅色方框部分,以及後來新版本所設計的神經網路架構為圖 22 之架構。

圖 21. 系統架構圖。

在影像資料進到暫存後,可以透過 FPGA 內部提供的 AXI_DDR_arbiter 介面將影像輸入到 FPGA 中。接著依照神經網路架構設計 3×3 的 kernel,讓影像資料可以完整排列成 3 行後分批進行乘法和加法。因此設計了 line buffer 架構,其中包含了 2 個跟測試影像長度相同的暫存器,當兩個 line buffer 資料都有效時,才進到下一個 MAC 模組進行卷積運算。MAC 模組的設計架構也類似於小型的 line buffer,裡面使用 3 組和內核長度相同的暫存器,當指定數量的資料進到暫存後,尋找表便會開始將每個影像像素和特定的內核值進行相乘後加總。最後將卷積結果送到輸出暫存器,準備將資料寫回 off-chip memory。

圖 22. 神經網路架構圖。

3. 實驗結果

設計完架構之後,透過微控制單元操控 FPGA,再到 Microsemi 軟體中所提供的導入/匯出工具將衛星影像匯入到記憶體,如圖 23 左圖。之後,微控制單元開始傳送訊號到 FPGA 執行卷積,一直到微控制單元終止傳輸訊號後到記憶體觀察結果,如圖 23 右圖,藍色底線部分為資料流的展示,可以發現資料有和滑動視窗一樣右移的效果,綠色底線部分則是卷積的結果,其中內核設計為 3×3 也就是 9 個位元,前面的 6 個位元設定為 1 其餘為 0,在卷積執行時就會是將影像的前兩列橫行進行相加,最後得到結果。

圖 23. 測試影像與執行結果圖。

確認完一層卷積的 FPGA 設計以及比較結果正確後,為了確認 FPGA 和微處理單元的執行時間,因此,在兩者都額外設計了計時器,表 2 為最終得到結果。可以發現在 FPGA 執行的結果和微處理單元的總執行時間相差了將近 175 倍。

表 2. 執行時間比較。

五、結論

本研究以基於邊緣人工智慧低功耗遙測酬載影像處理電路設計為目標,成功實現了人工智慧的邊緣運算。為了應對低亮度影像的挑戰,本研究提出了一種有效的亮度增強演算法,通過與不同損失函數的比較,確保了處理後的影像更容易辨識。此外我們的硬體設計採用了實現於 FPGA 的卷積架構,為深度神經網路加速提供了高效的解決方案。這項研究的成果將有助於提升衛星遙測影像的品質和效能,同時克服硬體規格的限制。這為地球觀測領域的科學研究和實際應用提供了一個先進的工具,推動了遙測技術的發展。