拋棄編碼器-解碼器架構,用擴散模型做邊緣偵測效果更好,國防科大提出DiffusionEdge
目前的深度邊緣偵測網路通常採用編碼器-解碼器架構,其中包含上下採樣模組,以更好地提取多層次的特性。然而,這種結構限制了網路輸出準確且細緻的邊緣檢測結果。
針對這個問題,一篇 AAAI 2024 上的論文給出了新的解決方案。
- #論文主題:DiffusionEdge: Diffusion Probabilistic Model for Crisp Edge Detection
- #作者:葉雲帆(國防科技大學),徐凱(國防科技大學),黃雨行(國防科技大學),易任嬌(國防科技大學),蔡志平(國防科技大學)
- 論文連結: https://arxiv.org/abs/2401.02032
- 開源程式碼: https://github.com/GuHuangAI/DiffusionEdge
國防科技大學iGRAPE Lab提出了一種新的方法,用於二維邊緣偵測任務。此方法利用擴散機率模型,在學習迭代的去噪過程中產生邊緣結果圖。為了減少計算資源的消耗,該方法採用隱空間訓練網絡,並引入了不確定性蒸餾模組以優化性能。同時,此方法也採用解耦架構加速去噪過程,並引入自適應傅立葉濾波器來調整特徵。透過這些設計,該方法能夠以有限的資源進行穩定訓練,並以更少的增強策略預測出清晰準確的邊緣圖。實驗結果表明,該方法在四個公共基準資料集上的準確度和精度方面均顯著優於其他方法。
圖1 基於擴散機率模型的邊緣偵測過程與優勢範例
本文的創新點包括:
提出了針對邊緣偵測任務的擴散模型DiffusionEdge,該模型無需後處理即可預測出更細、更準確的邊緣圖。
為了解決擴散模型應用時的困難點,我們設計了多種技術來確保方法在隱空間中穩定學習。同時,我們也保留了像素級的不確定性先驗知識,並自適應地過濾傅立葉空間中的隱特徵。
3、在四個邊緣偵測公共基準資料集上進行的大量對比實驗展示了 DiffusionEdge 在準確度和細度方面均具有卓越的效能優勢。
相關工作
基於深度學習的方法通常採用包含上下取樣的編解碼結構整合多層特徵[1-2],或是整合多個標註的不確定性資訊以提升邊緣檢測的準確度[3]。然而,自然受限於這樣的結構,其產生的邊緣結果圖對於下游任務來說太過粗厚而嚴重依賴後處理的問題仍然亟待解決。儘管許多工作已經在損失函數[4-5] 和標籤修正策略[6] 方面做出了探索以使網路能輸出更細的邊緣,但本文認為該領域仍然需要一個可以不借助任何額外模組,就能直接滿足準確度和細度的邊緣偵測器,而無需任何後處理步驟。
擴散模型是一類基於馬可夫鏈的生成模型,透過學習去雜訊過程逐漸恢復目標資料樣本。擴散模型在電腦視覺、自然語言處理和音訊生成等領域都表現出了卓越的性能。不僅如此,透過將影像或其他模態的輸入作為額外條件時,在感知任務中也表現出了巨大的潛力,例如影像分割[7]、目標偵測[8] 和姿態估計[9] 等。
方法描述
本文所提出的 DiffusionEdge 方法總體架構如圖 2 所示。受以往工作的啟發,該方法在隱空間中訓練具有解耦結構的擴散模型,並將圖像作為額外的條件線索輸入。此方法引入了自適應傅立葉濾波器來進行頻率解析,且為了保留來自多個標註者的像素級不確定性資訊並減少對計算資源的要求,還以蒸餾的方式直接使用交叉熵損失優化隱空間。
圖2 DiffusionEdge 的整體結構示意圖
針對目前的擴散模型受到取樣步數太多,推理時間太長等問題的困擾,本方法受DDM [10] 的啟發,同樣使用解耦的擴散模型架構來加速取樣推理過程。其中,解耦的前向擴散過程由顯式的轉移機率和標準Wiener 過程的組合來控制:
其中和
分別代表初始邊緣和雜訊邊緣,
指的是反向邊緣梯度的明確轉換函數。與DDM 類似,本文方法預設使用常數函數
,則其對應的逆過程可以被表示為:
其中 。為了訓練解耦的擴散模型,此方法需要同時監督資料和雜訊分量,因此,訓練目標可以參數化為:
其中是去噪網路中的參數。由於擴散模型如果要在原始影像空間中訓練的話會佔用太多的計算成本,因此參考 [11] 的思路,本文提出的方法將訓練過程轉移到了具有 4 倍下採樣空間大小的隱空間中。
如圖2 所示,該方法首先訓練了一對自編碼器和解碼器的網絡,該編碼器將邊緣標註壓縮為一個隱變量,而解碼器則用於從這個隱變數中恢復出原來的邊緣標註。如此一來,在訓練基於U-Net 結構的去噪網絡階段,該方法便固定這一對自編碼和解碼器網絡的權重,並在隱空間中訓練去噪過程,這樣可以大幅減少網絡對計算資源的消耗,同時維持不錯的效能。
為了提升網路最後的效能,本文提出的方法在解耦操作中引入了一個可以自適應地過濾掉不同頻率特徵的模組。如圖2 左下角所示,該方法將自適應的快速傅立葉變換濾波器(Adaptive FFT-filter)整合到了去噪Unet 網路中,位置在解耦操作之前,以在頻域中自適應過濾並分離出邊緣圖和雜訊分量。具體來說,給定編碼器特徵 ,該方法首先沿著空間維度執行二維的傅立葉轉換(FFT),並將變換後的特徵表示為
。緊接著,為了訓練這個自適應頻譜濾波模組,建構了一個可學習的權重圖
並將其W乘以Fc。頻譜濾波器可以全域調整特定頻率,並且學習到的權重可以適應不同資料集目標分佈的不同頻率情況。透過自適應地濾除無用成分,本方法透過快速傅立葉逆變換(IFFT)操作將特徵從頻域映射回空間域。最後,透過額外引入了來自的殘差連接,避免完全過濾掉了所有有用的信息。上述過程可以由以下公式來描述:
#其中是輸出特徵,o表示哈達瑪積(Hadamard Product)。
由於邊緣和非邊緣像素的數量高度不平衡(大多數像素都是非邊緣的背景),參考以往的工作,我們同樣引入不確定性感知的損失函數進行訓練。具體來說,將作為第i個像素的真值邊緣機率,對於第j個邊緣圖中的第i個像素,其值為,則不確定性感知WCE 損失的計算方式如下:
其中,其中
是決定真值標註中不確定的邊緣像素的閾值,如果像素值大於0 而小於此閾值,則此類模糊的,置信度不夠高的像素樣本將在後續的最佳化過程中被忽略(損失函數為0)。
和
分別表示真值標註邊緣圖中邊緣和非邊緣像素的數量。是用來平衡
和
的權重(設為 1.1)。因此,每個邊緣圖的最終損失函數計算方式為
。
在最佳化過程中忽略模糊的低置信度的像素可以避免網路混亂,使訓練過程更穩定的收斂,並提高模型的表現。然而,將二元交叉熵損失直接應用於在數值和空間上均未對齊的隱空間中是幾乎不可能的。尤其是,不確定性感知的交叉熵損失中利用閾值(一般從0 到1)來判斷像素是否為邊緣,這是從圖像空間上定義的,而隱變量遵循正態分佈並且具有完全不同的範圍和實際意義。此外,像素級的不確定性很難與不同大小的編碼和下採樣的隱特徵保持一致,二者是很難直接相容的。因此,將交叉熵損失直接應用於最佳化隱變量不可避免地會導致不正確的不確定性感知。
另一方面,人們可以選擇將隱變量解碼回圖像級別,從而可以直接使用不確定性感知交叉熵損失來直接監督預測出的邊緣結果圖。不幸的是,這種實現讓反向傳播的參數梯度通過了冗餘的自編碼器網絡,使得梯度很難得到有效的傳遞。此外,自編碼器網路中額外的梯度運算會帶來龐大的 GPU 記憶體消耗成本,這違背了本方法設計實用的邊緣偵測器的初衷,很難推廣到實際應用中。因此,本方法提出了不確定性蒸餾損失,可以直接優化隱空間上的梯度,具體來說,設重構出的隱變量為,自編碼器網絡的解碼器是D,解碼出的邊緣結果是eD,本方法考慮基於鍊式法則直接計算不確定性感知的二元交叉熵損失
的梯度,具體計算方式為:
為了消除自編碼器網路的負面影響,本方法直接跳過了自編碼器傳遞梯度並將梯度
的計算方式修改調整為:
這樣的實作方式大大降低了計算成本,並允許利用不確定性感知的損失函數直接在隱變數上最佳化。如此一來,再結合一個隨步數t自適應變化的時變損失權重,本方法最終訓練最佳化目標可以被表示為:
實驗結果
本方法在四個領域內被廣泛使用的邊緣檢測公共標準資料集上進行了實驗:BSDS、NYUDv2、Multicue 和BIPED。由於邊緣偵測資料標註比較難,標註資料量都比較少,以往的方法通常會使用各種策略來增強資料集。例如說,BSDS 中的影像透過水平翻轉 (2×)、縮放 (3×) 和旋轉 (16×) 進行增強,能夠產生比原始版本擴大了 96 倍的訓練集。以往的方法在其他資料集上使用的通用增強策略總結在了表格 1 中,其中 F 代表水平翻轉,S 代表縮放,R 代表旋轉,C 代表裁剪,G 代表伽馬校正。不同的是,本方法只需要使用隨機裁切的 320320 的圖像塊來訓練所有資料。在 BSDS 資料集中,本方法則僅採用隨機的翻轉和縮放,其定量對比結果展示在了表 2 中。在 NYUDv2、Mu lticue 和 BIPED 資料集中,此方法僅需採用隨機翻轉訓練。在使用較少增強策略的情況下,本方法在各個資料集,各個指標的表現都優於先前的方法。透過觀察圖3-5 的預測結果可以看出,DiffusionEdge 能夠學習並預測出跟gt 分佈幾乎一樣的邊緣檢測結果圖來,預測結果準確而清晰的優勢對於有精細化需求的下游任務來說非常重要,也展現了其能直接應用於後續任務的巨大潛力。
表1 過去方法在四個邊緣偵測資料集上所使用的增強策略
表2 不同方法在BSDS 資料集上的定量比較
#圖3 不同方法在BSDS 資料集上的定性對比
圖4 不同方法在NYUDv2 資料集上的定性對比
圖5 不同方法在BIPED 資料集上的定性對比
以上是拋棄編碼器-解碼器架構,用擴散模型做邊緣偵測效果更好,國防科大提出DiffusionEdge的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

C 在實時操作系統(RTOS)編程中表現出色,提供了高效的執行效率和精確的時間管理。 1)C 通過直接操作硬件資源和高效的內存管理滿足RTOS的需求。 2)利用面向對象特性,C 可以設計靈活的任務調度系統。 3)C 支持高效的中斷處理,但需避免動態內存分配和異常處理以保證實時性。 4)模板編程和內聯函數有助於性能優化。 5)實際應用中,C 可用於實現高效的日誌系統。

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

在C 中測量線程性能可以使用標準庫中的計時工具、性能分析工具和自定義計時器。 1.使用庫測量執行時間。 2.使用gprof進行性能分析,步驟包括編譯時添加-pg選項、運行程序生成gmon.out文件、生成性能報告。 3.使用Valgrind的Callgrind模塊進行更詳細的分析,步驟包括運行程序生成callgrind.out文件、使用kcachegrind查看結果。 4.自定義計時器可靈活測量特定代碼段的執行時間。這些方法幫助全面了解線程性能,並優化代碼。

數字虛擬幣交易平台top10分別是:1. Binance,2. OKX,3. Coinbase,4. Kraken,5. Huobi Global,6. Bitfinex,7. KuCoin,8. Gemini,9. Bitstamp,10. Bittrex,這些平台均提供高安全性和多種交易選項,適用於不同用戶需求。

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

如何實現鼠標滾動事件穿透效果?在我們瀏覽網頁時,經常會遇到一些特別的交互設計。比如在deepseek官網上,�...
