何愷明新作 l-DAE:解構擴散模型

何愷明新作 l-DAE:解構擴散模型

    • 提出背景
      • 擴散模型步驟
      • 如何在不影響數據表征能力的同時簡化模型?
      • 如何進一步推動模型向經典DAE靠攏?
      • 如何去除對生成任務設計的DDM中不適用于自監督學習的部分?
      • 如何改進DDM以專注于清晰圖像表示的學習?

?


提出背景

論文:https://arxiv.org/pdf/2401.14404.pdf

我們有一堆帶噪聲的照片,我們的任務是清理這些照片上的噪聲,讓它們看起來更清晰。

去噪擴散模型(DDM)就像是一個清潔工,它不僅能把照片清理得非常干凈,還能通過這個清潔過程學會識別照片中的內容。

但是,這個清潔工原本是被設計來做清潔工作的,人們開始好奇它是怎么學會識別照片內容的。

是因為它清理照片的方式特別(去噪過程),還是因為它在清理時用的一些特殊工具(擴散過程)?

我們的研究就是要探究這個問題。

我們嘗試了各種方法,最后發現,關鍵其實在于這個清潔工如何看待照片中的每一小塊內容,把它們轉換成更簡單的形式來理解。

這有點像是給它一副眼鏡,讓它能更好地看清楚照片的細節。

通過這個過程,我們設計出了一種簡單的方法,讓清潔工不僅能清理照片,還能更好地理解照片內容。

我們的方法雖然不是最頂尖的,但比之前的方法有了很大的進步,也讓我們看到了未來有更多可能性去改進這個過程。

在這里插入圖片描述

圖是一種被稱為“潛在去噪自編碼器”(L-DAE)的技術。它是一種圖像處理方法,用于從帶有噪聲的圖片中恢復出清晰的圖片。

  1. 原始圖像:左下角是一個沒有噪聲的原始圖像,這是一張蝴蝶停在黃色花朵上的照片。

  2. 噪聲添加:通過一種技術叫做“片段式主成分分析”(patch-wise PCA),原始圖像被轉化到一個叫做“潛在空間”的地方,在這個過程中添加了噪聲。

    這就是中下角的圖像,你可以看到圖像變得模糊和雜亂,就像被隨機的色塊覆蓋了一樣。

  3. 自編碼器:在噪聲圖像的基礎上,一個自編碼器開始工作,包括一個編碼器和一個解碼器。

    編碼器的作用是將噪聲圖像轉換為一個更簡潔的內部表示,而解碼器則嘗試從這個表示中重建原始圖像。

  4. 去噪圖像:最終,自編碼器輸出了一個去除噪聲的圖像,這是右下角的圖像。

    盡管噪聲被去除,圖像中的細節和蝴蝶的特征都得以保留。

這個技術的目標是模仿和簡化更復雜的去噪擴散模型(DDM),同時嘗試保持與經典去噪自編碼器(DAE)相似的學習性能。

這張圖上方的流程圖解釋了整個過程:從原始圖像開始,通過PCA添加噪聲,然后通過自編碼器進行編碼和解碼,最終得到去噪圖像。

這種方法是自監督學習的一種形式,這意味著它可以通過觀察大量的例子自己學習去噪,而不需要人為指定噪聲和去噪之間的關系。

在這里插入圖片描述
這幅圖是兩種不同的機器學習模型,用于處理圖像的去噪任務:

  1. 經典的去噪自編碼器(DAE):這個模型包括三個部分:

    • 噪聲:在輸入圖像上添加噪聲。
    • 編碼器:編碼器接收帶噪聲的圖像,將其編碼到某種內部表示。
    • 解碼器:解碼器嘗試從內部表示中恢復去噪后的圖像。
  2. 現代去噪擴散模型(DDM):這個模型是在潛在空間上操作的去噪模型,它包括四個部分:

    • tokenizer:這個組件將原始圖像轉換成潛在的表示形式。
    • 噪聲:就像經典DAE一樣,它在潛在表示上添加噪聲。
    • 編碼器:編碼器學習如何處理帶噪聲的潛在表示。
    • 解碼器:解碼器從編碼器輸出的表示中恢復出去噪后的潛在表示,然后可以轉換回去噪后的圖像。

圖中的(a)部分展示的是傳統方法,直接在圖像空間上添加和預測噪聲

而(b)部分展示的是現代方法,如LDM(潛在擴散模型)和DIT(擴散變換器),它們在潛在空間上添加和預測噪聲,而不是直接在圖像空間上操作。

這種現代方法通常能夠更有效地處理高維數據,如圖像,因為潛在空間的維度通常遠小于原始圖像空間的維度,這可以提高處理速度并提升去噪效果。

擴散模型步驟

擴散模型是一類深度生成模型,它們通過模擬數據的擴散過程(即逐漸引入噪聲到數據中)來學習數據的分布。

在去噪擴散模型(Denoising Diffusion Models, DDM)中,這一過程被逆轉用來生成數據:模型學習如何逐步從噪聲中恢復出干凈的數據。

下面是解構現代去噪擴散模型的步驟和方法:

  1. Tokenizer(向量化)

    • 這一步是將高維的圖像數據映射到一個低維的潛在空間(latent space)。

    ?
    潛在空間中的向量可以捕捉到圖像的重要特征,但是維度更低,這使得處理起來更高效。

  2. 添加噪聲

    • 在潛在空間中,這些低維的表示(latent representations)會被逐漸添加噪聲,這個過程稱為擴散過程。

    ?
    添加噪聲是一個逐步的過程,在每一步中都會引入一些噪聲,直到數據完全變成噪聲。

  3. 訓練去噪模型

    • 訓練一個去噪模型來預測每一步擴散過程中添加的噪聲。

    ?
    這個模型的目標是學習如何從帶噪聲的潛在表示中恢復出原始的潛在表示。

  4. 采樣(生成)過程

    • 通過逆向運行擴散過程來生成新的數據。
    • 從純噪聲開始,模型逐步減少噪聲,逐步恢復出清晰的數據。

解構這個模型的關鍵點在于理解如何在潛在空間上進行擴散和去噪過程,而不是直接在原始的數據空間上進行。

如何在不影響數據表征能力的同時簡化模型?

在擴散模型中,到底哪個步驟最重要?

實驗發現,讓 DAE 得到好表征的是低維隱空間,而不是Tokenizer(向量化)。

  • 說明復雜的tokenizer可能不是學習好的數據表示所必需的
  • 簡化tokenizer相當于使用更簡單的廚具來達到相同的烹飪效果

如何在不影響數據表征能力的同時簡化模型?

  • 實驗發現,可通過替換復雜的VQGAN tokenizer為更簡單的PCA tokenizer

不同的圖像處理方法:

  • TA們被用于將圖像分解成較小的片段,進而進行深入的特征提取。
    在這里插入圖片描述

  • Patch-wise VAE 分詞器: 這是一種處理圖像的方法,使用了一種稱為自編碼器的技術,但去掉了一些復雜的數學限制,讓它變得更簡單。

  • Patch-wise AE 分詞器: 這個方法更簡單,只是在圖像的小塊上應用基本的編碼和解碼過程。

  • Patch-wise PCA 分詞器: 這是最基本的方法,用一種稱為主成分分析的技術來處理圖像的小塊。PCA 是一種不需要復雜訓練就能找到圖像主要特征的方法。

在這里插入圖片描述
即使是最基本的PCA方法也表現出色,甚至簡單的圖像塊處理方法有時候比復雜的方法效果更好。

所以,完全可以用簡單的代替復雜的。

  • 把復雜的VQGAN tokenizer 換為 更簡單的PCA tokenizer。

如何進一步推動模型向經典DAE靠攏?

直接在圖像空間操作有助于理解和提高模型的直觀性和可解釋性。

使用逆PCA直接在圖像空間操作,而非僅在隱空間。

如何去除對生成任務設計的DDM中不適用于自監督學習的部分?

因為類別條件化處理會限制模型學習更普遍的數據表示。

移除DDM的類別條件化處理。

如何改進DDM以專注于清晰圖像表示的學習?

原始噪聲調度太側重于噪聲圖像,不利于學習清晰圖像表示。

替換噪聲調度,讓模型更多地關注清晰的圖像。

?


如果將這個過程比作學習做菜的過程,那么:

  • 去除類別條件化處理就像是摒棄菜譜中不必要的復雜步驟,專注于基本的烹飪技巧。
  • 簡化tokenizer相當于使用更簡單的廚具來達到相同的烹飪效果。
  • 改進噪聲調度類似于調整烤箱溫度,更加關注食物烹飪的質量而非速度。
  • 直接在圖像空間操作就像是直接在爐子上(圖像上)調整火候,而不是依賴定時器(隱空間)的間接指示。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714688.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714688.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024華為軟件測試筆試面試真題,抓緊收藏不然就看不到了

一、選擇題 1、對計算機軟件和硬件資源進行管理和控制的軟件是(D) A.文件管理程序 B.輸入輸出管理程序 C.命令出來程序 D.操作系統 2、在沒有需求文檔和產品說明書的情況下只有哪一種測試方法可以進行的(A) A.錯誤推測法測試…

Docker 快速入門實操教程(完結)

Docker 快速入門實操教程(完結) Docker,啟動! 如果安裝好Docker不知道怎么使用,不理解各個名詞的概念,不太了解各個功能的用途,這篇文章應該會對你有幫助。 前置條件:已經安裝Doc…

【Hadoop】在spark讀取clickhouse中數據

讀取clickhouse數據庫數據 import scala.collection.mutable.ArrayBuffer import java.util.Properties import org.apache.spark.sql.SaveMode import org.apache.spark.sql.SparkSessiondef getCKJdbcProperties(batchSize: String "100000",socketTimeout: Strin…

IOS 發布遇到“Unable to authenticate with App Store Connect”錯誤咋解決?

問題: 在開發ios app后,先發布adhoc版本,測試通過后,再發布testflight版本測試,但是可能會遇到一下問題。 解決辦法: 在Signing &Capabilities中,在ios下邊要指定有發布權限的Team賬號&a…

PAT (Basic Level) Practice | 判斷題

判斷題的評判很簡單,本題就要求你寫個簡單的程序幫助老師判題并統計學生們判斷題的得分。 輸入格式 輸入在第一行給出兩個不超過 100 的正整數 N 和 M,分別是學生人數和判斷題數量。第二行給出 M 個不超過 5 的正整數,是每道題的滿分值。第…

pytorch基礎2-數據集與歸一化

專題鏈接:https://blog.csdn.net/qq_33345365/category_12591348.html 本教程翻譯自微軟教程:https://learn.microsoft.com/en-us/training/paths/pytorch-fundamentals/ 初次編輯:2024/3/2;最后編輯:2024/3/2 本教程…

迪杰斯特拉算法的具體應用

fill與memset的區別介紹 例一 #include <iostream> #include <algorithm> using namespace std; const int maxn500; const int INF1000000000; bool isin[maxn]{false}; int G[maxn][maxn]; int path[maxn],rescue[maxn],num[maxn]; int weight[maxn]; int cityn…

【深度學習數學基礎】Hebbian圖(Hebbian Graph)

Hebbian圖&#xff08;Hebbian Graph&#xff09;是一種基于神經科學原理的網絡結構&#xff0c;它受到唐納德赫布&#xff08;Donald Hebb&#xff09;提出的赫布學習規則&#xff08;Hebb’s rule&#xff09;的啟發。赫布學習規則是神經科學中描述神經元之間突觸連接如何通過…

模板方法模式 詳解 設計模式

模板方法模式 模板方法模式是一種行為型設計模式&#xff0c;它定義了一個算法的骨架&#xff0c;將一些步驟延遲到子類中實現。這種模式允許子類在不改變算法結構的情況下重新定義算法的某些步驟。 結構 抽象類&#xff08;Abstract Class&#xff09;&#xff1a;負責給出一…

JavaWeb老杜視頻筆記總結,Servlet-JSP

關于直播 什么時間直播&#xff1f; 晚上8:00到10:00 每周直播幾天&#xff1f; 3天&#xff08;周一、周三、周五&#xff09; 本周比較特殊&#xff1a;周四周五周六三天直播&#xff0c;從下周開始就是一三五直播。 直播什么內容&#xff1f; 從JavaWEB開始。&#xff08…

《深入淺出紅黑樹:一起動手實現自平衡的二叉搜索樹》

一、分析 1. 紅黑樹的性質 紅黑樹是一種自平衡的二叉搜索樹&#xff0c;它具有以下五個性質&#xff1a; &#xff08;1&#xff09;節點是紅色或黑色。 &#xff08;2&#xff09;根節點是黑色。 &#xff08;3&#xff09;所有葉子節點&#xff08;NIL節點&#xff09;是…

探索數據宇宙:深入解析大數據分析與管理技術

?? 歡迎大家來訪Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭?&#xff5e;?? &#x1f31f;&#x1f31f; 歡迎各位親愛的讀者&#xff0c;感謝你們抽出寶貴的時間來閱讀我的文章。 我是Srlua&#xff0c;在這里我會分享我的知識和經驗。&#x…

第六課:NIO簡介

一、傳統BIO的缺點 BIO屬于同步阻塞行IO,在服務器的實現模型為&#xff0c;每一個連接都要對應一個線程。當客戶端有連接請求的時候&#xff0c;服務器端需要啟動一個新的線程與之對應處理&#xff0c;這個模型有很多缺陷。當客戶端不做出進一步IO請求的時候&#xff0c;服務器…

《Spring Security 簡易速速上手小冊》第4章 授權與角色管理(2024 最新版)

文章目錄 4.1 理解授權4.1.1 基礎知識詳解授權的核心授權策略方法級安全動態權限檢查 4.1.2 主要案例&#xff1a;基于角色的頁面訪問控制案例 Demo 4.1.3 拓展案例 1&#xff1a;自定義投票策略案例 Demo測試自定義投票策略 4.1.4 拓展案例 2&#xff1a;使用方法級安全進行細…

【flutter】加載指示器(loading indicator)阻止用戶在某個操作執行期間操作頁面

在Flutter中&#xff0c;通過顯示一個加載指示器&#xff08;loading indicator&#xff09;來阻止用戶在某個操作執行期間操作頁面。以下是一個簡單的示例代碼&#xff0c;演示了按鈕被點擊后執行某操作&#xff0c;在操作完成前顯示加載指示器&#xff0c;阻止用戶操作頁面&a…

c語言數據結構(5)——棧

歡迎來到博主的專欄——C語言數據結構 博主id&#xff1a;代碼小豪 文章目錄 棧棧的順序存儲結構棧的插入空棧的初始化棧的刪除判斷空棧讀取棧頂元素數據 實現順序棧的所有代碼棧的鏈式存儲結構鏈式棧的初始化鏈式棧的入棧操作鏈式棧的出棧操作 實現鏈式棧的所有代碼 棧 棧是…

學習網絡編程No.11【傳輸層協議之UDP】

引言&#xff1a; 北京時間&#xff1a;2023/11/20/9:17&#xff0c;昨天成功更文&#xff0c;上周實現了更文兩篇&#xff0c;所以這周再接再厲。當然做題任在繼續&#xff0c;而目前做題給我的感覺以套路和技巧偏多&#xff0c;還是那句話很多東西不經歷你就是不懂&#xff…

測試人員如何向開發人員準確清晰地描述問題?

測試人員向開發人員準確清晰地描述問題可以采取以下方法&#xff1a; 提供詳細的背景和上下文信息&#xff1a;描述問題發生的環境、前提條件和操作步驟&#xff0c;讓開發人員能夠了解問題出現的場景。明確問題的癥狀和表現&#xff1a;清楚地說明問題的具體表現&#xff0c;…

【Python】2. 基礎語法

常量和表達式 我們可以把 Python 當成一個計算器, 來進行一些算術運算. 注意: print 是一個 Python 內置的 函數, 這個稍后詳細介紹. 可以使用 - * / ( ) 等運算符進行算術運算. 先算乘除, 后算加減. 運算符和數字之間, 可以沒有空格, 也可以有多個空格. 但是一般習慣上寫一…

LDR6328芯片:智能家居時代的小家電充電革新者

在當今的智能家居時代&#xff0c;小家電的供電方式正變得越來越智能化和高效化。 利用PD&#xff08;Power Delivery&#xff09;芯片進行誘騙取電&#xff0c;為后端小家電提供穩定電壓的技術&#xff0c;正逐漸成為行業的新寵。在這一領域&#xff0c;LDR6328芯片以其出色的…