資料介紹
描述
背景
由于我有移動地圖方面的背景,我決定構建一個圖像恢復管道,以改進來自汽車和無人機等移動地圖系統的圖像(來源)。移動地圖系統通常用于從道路、城市和基礎設施中獲取 3D 數據。大多數移動系統使用相機和激光掃描儀來捕獲 3D 數據。由于映射系統僅從一個場景中獲取一張圖像,因此圖像質量非常重要。因此,這個想法應運而生,旨在構建一個提高圖像質量的處理管道。由于移動地圖的需求非常特殊,我決定構建一個更通用的解決方案,可以適應移動地圖問題。
移動地圖應用程序的另一個要求是能源效率。大多數系統的能源資源有限,尤其是無人機。因此,我決定密切關注系統的能耗。我認為這不僅對移動地圖應用很重要,因為到 2030 年,云系統的電力消耗幾乎呈指數級增長(來源)
由于 VCK5000 卡通常用于數據中心應用,而不是移動測繪汽車,因此決定將我的項目命名為“綠色計算:基于 Versal 的圖像恢復管道”
介紹
本項目介紹了基于 UNet 卷積網絡的圖像恢復處理流水線。圖像管道專為 Versal VCK5000 卡設計,并使用中型SIDD數據集進行訓練。與基于 GPU 的推理相比,整個處理管道經過優化,可在以每秒幀數 (fps) 衡量的性能和準確性方面高效運行。除了流水線開發之外,還對 Versal 和 GPU 系統之間的功耗進行了詳細研究。該項目的重點是涵蓋三個不同的要求:
- 圖像恢復管道的能耗
- 以特定的模型精度每秒處理特定數量的幀
- 可靠的推理時間和可擴展性
訓練圖像恢復處理以去除圖像的噪聲,如下例所示。圖像管道針對智能手機相機圖像進行了優化。一個可能的應用可能是基于云的圖像增強服務。
該項目開發的 VCK5000 圖像恢復管道在性能 (fps) 和功耗方面均優于最先進的 GPU。除了性能分析之外,詳細的分析還顯示了不同的訓練和量化步驟如何影響卷積網絡的準確性。分析并不固定于特定的模型或網絡,所需的步驟可以很容易地適應自定義應用程序。由 Versal VCK5000 處理的最終網絡在論文和代碼(2022 年 3 月 30 日)上排名前 15 位“SIDD 上的圖像去噪”網絡。
網絡優化后,對 Versal 系統進行詳細的功率分析。Versal 系統的功耗與基于 GPU 的推理進行了比較。
限制:除了推理任務外,神經網絡的訓練和預處理對能量的要求也很高。這項工作的重點是運行時功耗和推理性能。訓練和預處理的分析主要取決于訓練數據集的大小(作者的意見),不屬于本項目的一部分。
項目概況
代碼結構的靈感來自 Xilinx/AMD Vitis-ai 教程。所有需要的步驟都被分成不同的 python 或 shell 腳本。腳本 run_all.sh 處理所有步驟以獲取整個處理管道。
網絡
用于管道的 UNet 網絡最初是由弗萊堡大學開發的。該網絡最初是為生物醫學圖像分割任務而設計的。除了分割任務外,UNet 結構還可用于圖像恢復。本文提出了一種基于 UNet 的圖像恢復網絡,該網絡在圖像恢復任務中優于當前網絡。
該網絡是完全卷積的,呈 u 形。“U”的左側是收縮路徑,右側是擴張路徑。UNet 的一個重要特點是上采樣部分有大量的特征通道,這使得網絡可以將上下文信息傳播到更高分辨率的層。
SIDD-數據集
SIDD 是“智能手機圖像去噪數據集”的簡稱。數據集包含使用智能手機相機獲得的原始(嘈雜)和處理(真實)圖像,并提供三種不同尺寸(小、中、全)。該項目使用大約 20 GB 的中等大小,包含 96.000 張用于訓練的圖像和 1280 張用于驗證的圖像。
PSNR/SSIM
用人眼比較圖像是很困難的,尤其是在差異很小的時候。在這項工作中,PSNR/SSIM 度量用于比較圖像。
峰值信噪比 (PSNR) 用作原始圖像和壓縮圖像之間的質量度量,其單位是分貝 (dB)。由于 PSNR 用于比較 UNet 輸出與 ground-truth 圖像,因此他的值是比較不同量化方法的一個很好的指標。(來源)。對于訓練,我們將來自 UNet 輸出的 PSNR 值與相應的真實圖像進行比較。
結構相似度指數 (SSIM) 度量用于測量兩個給定圖像之間的相似度。兩個圖像之間的比較是在三個基本特征上進行的:亮度、對比度和結構。分別比較這三個特征并進行相等加權以獲得比較圖像的每個像素的 SSIM 值。( Source ) SSIM 輸出范圍是從 0 到 1。SSIM 為 1 表示兩個圖像相同。相反,SSIM 度量為 0 意味著兩個圖像完全不同。對于訓練,我們將來自 UNet 輸出的 SSIM 值與相應的真實圖像進行比較。
個人電腦系統
PC 系統必須能夠運行 RTX3090 和 VCK5000 卡。VCK5000 需要 Ubuntu 18.04(內核 5.8)才能啟動和運行。內核版本是使卡運行所必需的。見黑客郵報。為確保功耗相當,兩張卡的測量必須使用相同的設置。PC系統的詳細配置如下:
- AMD 銳龍 ThreadRipper PRO 3955WX
- 華碩 WRX80 Pro WS Sage SE Wifi(BIOS:PCIe 通道為 3.0)
- 64 GB DDR4 內存
- 華碩 RTX3090 TUF
- 適用于 AMD Ryzen ThreadRipper PRO 的 Ubuntu 18.04(內核 5.8)補丁
- Vitis-AI 1.4.1
- 1200 瓦鉑金 PSU
功率計
為了在推斷時測量系統的功耗,使用了hama功率計。該功率計用于連續功率測量。功率計可以記錄特定時間內的能源消耗并總結能源需求。所有設置的典型測量周期為 1、5 小時。為避免測量中出現初始功率峰值,推理任務運行 2、5 小時。30 分鐘后開始功率測量。
FPGA 上的 AI 推理
本章簡要介紹了 AI 推理,本文更深入,并提供了有關 FPGA 及其用例的更多詳細信息。由于神經網絡主要使用浮點數,FPGA 無法直接運行神經網絡推理。浮點處理引擎的時鐘速度較慢,并且在 FPGA 設備上的可用性較低。這就是為什么必須對神經網絡進行量化以進行 FPGA 推理的原因之一。
UNet培訓
在用 250 個 Epoch 訓練 UNet 網絡之后,使用 SIDD Medium 數據集訓練 UNet 網絡。最佳 PSNR 值為39,epoch 228 為 5937 dB。最佳模型權重的 SSIM 為 0,968954。如果網絡在 GPU 上以浮點模式處理,這是我們可以獲得的最佳輸出結果。訓練 UNet 網絡是 run_all.sh 中的第一步
訓練量化后的 UNet
量化是指以低于浮點精度的位寬執行計算和存儲張量的技術。量化模型使用整數而不是浮點值對張量執行部分或全部操作。網絡參數的量化通常在訓練之后進行,通常會導致精度損失。運行正常量化,UNet PSNR 降低到 27,761646 dB SSIM 為 0,836058。UNet 網絡的量化是 run_all.sh 中的第二步
UNet 量化快速微調
正如我們所看到的,量化導致了 12 dB 的精度損失,那么我們需要改進量化結果。Vitis-Ai 提供“快速微調”以提高準確性:基于AdaQuant算法的過程。那么網絡輸出結果稍微好一點(PSNR: 28, 352730 ; SSIM: 0, 838978)。UNet網絡的這個Fastfine-tune是run_all.sh中的第三步
?
?
UNet 量化感知訓練
之前的兩種方法都是使用最終訓練的浮點網絡作為輸入來描述的。本節中描述的第三種方法是從頭開始訓練網絡。量化感知訓練(qat)的機制很簡單:它在浮點模型到量化整數模型轉換過程中發生量化的地方放置量化模塊,即量化和反量化模塊,以模擬整數值。假量化模塊還將監控權重和激活的比例和零點。一旦量化感知訓練完成,浮點模型可以立即使用存儲在假量化模塊中的信息轉換為量化整數??模型。與其他量化技術相比,qat 從下往上訓練網絡。
要使用 qat,我們必須修改網絡結構以啟用 Xilinx QatProcessor。QatProcessor 自動插入所有假層并將浮點數轉換為整數。(來源) 我們對模型進行了兩個主要的修改:
- 所有可量化的操作都必須是 torch.nn.Module 的實例
- 所有圖層必須具有唯一的名稱
此時,重要的是在準備 qat 時仔細檢查浮點模型的性能,以確保模型以正確的方式工作。模型源代碼可以在項目的 GitHub 存儲庫中找到。我用正常的浮點訓練重新訓練了 qat 模型,并仔細檢查了輸出性能。對于 UNet 圖像,Restauration 管道量化感知訓練將模型輸出提高到 PSNR:33、6874 dB 和 SSIM:0、925673。要為 UNet 運行 qat,請在 run_all.sh 中使用 qat.py
與浮點模型相比,使用 qat 進行模型訓練的準確性更高。正常量化和 fast_finetune 沒有得到模型參數來生成浮點精度。但是使用 qat,我們可以更接近完美的模型輸出。Vitis-Ai 模型 Zoo 也使用 qat 進行訓練,因此賽靈思為您完成了 qat 訓練工作。
UNet 量化感知訓練 4Bit
qat 量化位寬為八位。但是如果我們想要更多的吞吐量來處理更多的幀,我們可以拖尾到四位。減少位寬會導致模型不太準確。但是將模型參數減少到四位會導致更快的執行時間。這一步是可選的,因為我們只在 VCK5000 卡上測試 8 位的 qat 輸出性能。更改 qat bit_width 是對 QatProcessor (Source) 的輸入參數的簡單修改,必須更改。具有四位的 Qat 給出 PSNR:20、8743 dB 和 SSIM:0、728075
?
?
推理性能 VCK5000 與 RTX3090 GPU
將 GPU 性能與 FPGA 進行比較并不像聽起來那么簡單。GPU 的推理任務不同。GPU 任務由軟件 (CUDA) 安排,因為我們使用的是 Nvidia RTX3090 GPU。底層調度程序將任務添加到張量或 CUDA 核心。調度器還嘗試優化從主 GPU 內存到本地核心內存的數據復制過程,以最大限度地提高核心效率,但這是一個完全不同的問題。(來源,來源)
一般來說,數據復制對于 GPU 或 FPGA 來說是一項耗時的任務,尤其是從主機內存復制數據到設備內存,而在嵌入式設備上這種行為是不同的。RTX3090 GPU 使用 PCIe 4.0 x16,而 VCK5000 使用 PCIe 3.0 x16。為了平衡從主機內存到 PCIe 設備的數據速率,所有 PCIe 通道都通過 BIOS 配置為 PCIe 3.0。PC 系統在沒有顯示器的情況下運行以減少外部 GPU 負載。
但最終,人工智能推理任務的典型應用需求可以是:
- 能源消耗
- 以特定的模型精度每秒處理特定數量的幀
- 可靠的推理時間和可擴展性
測試設置
?
推理能耗 VCK5000 vs. RTX3090 GPU
重要提示:VCK5000 正在處理量化的 UNet 網絡,而 GPU 正在處理浮點 UNet 網絡。
為了在推斷時測量能耗,使用了 hama 功率計。推理在 2000 個輸入圖像的循環中運行。輸出圖像保存在內部 SSD 上。GPU 處理訓練好的浮點模型,CUDA 支持批量大小 1。VCK5000 在 Gen3x16 模式下以 8PE@350 MHz 處理批量大小 1 的 qat 模型。得到的性能不是原始的理論吞吐量,因為網絡輸出被檢查并保存在系統 SSD 上。
僅在一個設備(GPU 或 FPGA)運行時測量功耗。最大限度地減少冷卻(源)的強大影響,每個設備都在同一個 PCIe 插槽中進行測量,以使兩個設備具有相同的環境條件。室溫由記錄儀測量,大致恒定在 19、5 攝氏度。所有值 Power, FPS 每 20 分鐘手動捕獲一次。
該圖顯示 Versal 系統比 GPU 更節能。平均功耗比 GPU 低 80 瓦。
推理 FPS VCK5000 與 RTX3090 GPU
除了功耗之外,還測量了處理能力。該圖顯示 GPU 以接近 18 FPS 的速度運行,但存在抖動。VCK5000 每秒處理近 40 張圖像。每秒處理幀數的標準差:
- GPU: 1, 134 FPS
- Versal: 0, 2344 FPS
未來的工作
該項目只是優化 UNet 管道以提高準確性和功率效率的開始。以下主題可以作為后續改進處理管道:
圖像預處理
目前,輸入圖像由 CPU 預處理以適合作為網絡輸入。此任務可以在 Versal VCK5000 上輕松實現。
直接 Versal 存儲
通過 PCIe DMA 傳輸將輸入圖像直接加載到 VCK5000 內存,減少 CPU 讀取和寫入圖像的負載。可以添加直接存儲作為圖像預處理的頂部,從而消除 AI 處理任務完成的 CPU 負載。微軟為 GPU 實現了直接存儲(來源)。
批處理和流水線
VCK5000 的內部數據流可以通過流水線圖像加載、預處理、人工智能推理和圖像存儲進行優化。在理想情況下,在 VCK5000 上同時在不同階段處理四個圖像。
?
結論
該項目的第一部分是最先進的圖像恢復管道。流水線可由 VCK5000 Versal 加速卡處理。與其他最先進的網絡相比,PSNR 為 33, 6874 和 SSIM 為 0, 925673 的管道在 TOP 15(來源,來源)中的兩個指標均排名(日期:03/30/2022 ) 處理 SSID 數據集的網絡。
另一方面,開發人員、系統架構師和所有對 FPGA 推理感興趣的人都可以使用這個項目作為起點來檢查他們的推理需求。該項目有助于更好地了解如何滿足以下要求:
- 能源消耗
- 以特定的模型精度每秒處理特定數量的幀
- 可靠的推理時間和可擴展性
該項目的第一部分是以簡單的方式分析量化的 PyTorch UNet 網絡。這是通過三種不同的方法完成的(量化、快速微調量化、量化感知訓練)。量化感知訓練為 UNet 模型生成最佳輸出精度,PSNR 為 33,6874 dB。與浮點模型相比,PSNR 低 6 dB。
在項目的第二部分中,將 Versal 卡的模型計算的功耗與 GPU 進行了比較。功耗通常比 GPU 所需的低 80 瓦。假設 24/7 工作負載,Versal VCK5000 可以在 24 小時內節省:1、92 千瓦、13、44 千瓦一周和 683 千瓦一年。
該項目的第三部分比較了 Versal 和 GPU 之間的處理性能。在 FPGA 上處理二進制網絡可以提高 100% 的 fps。除了處理更多幀的效果外,Versal 管道在每秒幀數方面具有更恒定的處理流程。三小時推理的標準差為:0, 2344 FPS
從一開始就結束循環,人工智能模型有助于解決農作物歉收、食物浪費、交通轉向等基本問題,這些問題可以通過 FPGA 進行計算。基于 FPGA 加速器的人工智能推理非常有效,因此 FPGA 可以幫助減少計算系統的全球能源需求并節省大量資源。
?
- 常用的自恢復式保險絲型號及對應參數表 34次下載
- 石油化工行業管道專業用什么軟件 13次下載
- 基于水流分割的石油鉆井管道水流異常檢測 7次下載
- 可改善圖像失真現象的單幅圖像去霧算法 3次下載
- 基于加權近紅外圖像融合的單幅圖像除霧方法 7次下載
- 基于圖像增強和神經網絡的腦部CT與MRI圖像融合 5次下載
- 如何實現一種改進的Bayer圖像彩色恢復差值算法 8次下載
- 結合多尺度邊緣保持分解與PCNN的圖像融合方法 16次下載
- 一種改進的非線性亮度提升模型的逆光圖像恢復手段 1次下載
- 光學圖像的退化和恢復模型及其消模糊處理介紹 4次下載
- 一種改進的Bayer圖像彩色恢復差值算法 4次下載
- 圖像恢復的實現方法研究 26次下載
- 傳播波方程的運動模糊圖像恢復質量評價
- 基于改進的各向異性擴散的圖像恢復
- 用VC++.Net實現退化圖像的恢復
- AMD Versal? Adaptive SoC CPM PCIE PIO EP設計CED示例 365次閱讀
- AMD Versal AI Edge自適應計算加速平臺之PL通過NoC讀寫DDR4實驗(4) 1714次閱讀
- AMD Versal AI Edge自適應計算加速平臺PL LED實驗(3) 774次閱讀
- AMD Versal AI Edge自適應計算加速平臺之Versal介紹(2) 1195次閱讀
- AMD Versal系列CIPS IP核建立示例工程 526次閱讀
- Versal HBM系列外部參考時鐘設計指南文章 657次閱讀
- Versal CPM AXI Bridge模式的地址轉換 1322次閱讀
- 使用QEMU啟動Versal VCK190 602次閱讀
- 闡述匿名管道和命名管道 1060次閱讀
- Versal GTY仿真:初始化,復位和速率變更 1009次閱讀
- 在Versal中通過NoC從PS-APU對AXI BRAM執行基本讀寫操作 540次閱讀
- 放大招!Versal ACAP 正式出貨 3274次閱讀
- 管道設計條件的確定,管道布置應考慮的因素 1.1w次閱讀
- 圖像恢復這個任務,如何使用深度圖像先驗來解決此任務 4824次閱讀
- 基于尺度迭代深度神經網絡的圖像去模糊算法 4390次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多