Skip to content

Instantly share code, notes, and snippets.

@ryankert01
Last active November 6, 2025 13:58
Show Gist options
  • Select an option

  • Save ryankert01/f1b7f37bc6cec79f45bfb60170bf9007 to your computer and use it in GitHub Desktop.

Select an option

Save ryankert01/f1b7f37bc6cec79f45bfb60170bf9007 to your computer and use it in GitHub Desktop.

專案提案:重現論文《Textualize Visual Prompt for Image Editing via Diffusion Bridge》

專案目標 (Project Goal):

本專案旨在重現論文《Textualize Visual Prompt for Image Editing via Diffusion Bridge》的核心功能。我們將開發一個系統,能夠接收一對「編輯前」與「編輯後」的圖片作為一種視覺提示 (visual prompt),從中學習其轉換規則,並將這個規則應用到全新的圖片上。此專案的核心挑戰在於解決那些難以單純用文字描述的、複雜且抽象的圖像轉換任務。

source code?

經調查,雖然論文提供了一個專案頁面,但截至目前,作者並未釋出官方的開源實作程式碼。因此,本專案的重現工作不僅是一項學習挑戰,其最終產出的程式碼也將對社群具有參考價值。

背景與動機 (Background and Motivation):

當前的圖像編輯方法多半依賴文字提示 (text-based prompts)。然而,許多視覺概念,例如特定的藝術風格、微妙的色調氛圍、或個人化的繪畫筆觸,都很難用語言精準描述。這篇論文提出了一個創新的框架,利用所謂的「擴散橋樑 (diffusion bridge)」技術,將視覺提示中蘊含的轉換效果「文本化 (textualize)」。這種方法的優勢在於,它能讓一個標準的文字到圖像 (Text-to-Image, T2I) 模型直接執行編輯任務,而無需重新訓練或依賴特化的圖像到圖像 (Image-to-Image) 模型,大幅提升了方法的通用性與可擴展性。

核心方法 (Methodology):

本專案將從零開始,實作論文中提出的幾個關鍵技術:

  1. Diffusion Bridge 的建構: 我們將使用一個預訓練好的 T2I 模型來建構一個 diffusion bridge,用以連接「編輯前」與「編輯後」兩張圖片的數據分佈。這個過程包含:首先利用模型的無條件生成能力,將「編輯前」圖片轉換為一個確定性的潛在向量 (deterministic latent);然後,在一個可學習的文字嵌入 (text embedding) 的引導下,從這個潛在向量還原出「編輯後」的圖片。

  2. Visual Prompts 的文本化 (Textualization): 此步驟的目標是將圖片對之間的轉換關係,提煉並壓縮到一個 text embedding 中。這將透過一個最佳化過程來實現:固定 diffusion bridge 的起點(來自「編輯前」圖片的潛在向量)和終點(「編輯後」的圖片),反向去最佳化引導過程的 text embedding。

  3. Differential Attention Control 的導入: 這是論文中的一個關鍵創新。為了讓學到的轉換規則具有通用性,而不是只適用於原始的「編輯前」圖片,我們將在訓練過程中導入差分注意力控制機制。這個機制能將學到的 text embedding 與「編輯前」圖片的具體內容(例如物體、背景)脫鉤,使其只專注於學習「轉換」本身。具體的作法是,在生成過程中,巧妙地注入「編輯前」圖片的 attention 權重,以保留那些不應被改變的圖像細節。

駭客的交付成果 (Hacker's Deliverables):

  1. 在自定義資料/任務上展示成果: 我們將應用重現的模型,在多組我們自己準備的「編輯前/後」圖片對上進行展示,證明其學習與應用的能力。示範的任務將包含:

    • 風格轉換: 將一張風景照轉換成梵谷風格的油畫。
    • 物件轉換: 將一隻貓的照片,根據範例轉換成柴犬。
    • 屬性修改: 將白天的街景,根據範例轉換成黃昏或雨天的氛圍。
  2. 核心演算法與程式碼實作分享: 我們將準備一份詳細的簡報,與班上同學分享我們的實作過程,內容包括:

    • Diffusion Bridge 與文本化流程的步驟拆解與視覺化說明。
    • Differential Attention Control 機制的深度解析,以及它如何幫助模型泛化。
    • 我們將分享所有從零開始撰寫的核心程式碼,並附上清晰的註解與文件。

專案時程規劃 (Project Timeline):

本專案將從 11 月 6 日開始,預計為期四週。

  • 第一週 (11/06 - 11/12): 基礎建設與論文研讀 (Foundation & Paper Study)

    • 任務: 深度剖析論文,特別是關於 probability-flow ODE 與 DDIM 的部分。
    • 任務: 建立開發環境 (Python, PyTorch, CUDA),並下載論文中使用的預訓練 T2I 模型 (如 Stable Diffusion v1.5)。
    • 任務: 確保基礎模型能正常運作,完成文字生成圖片、以及 DDIM inversion (圖片轉潛在向量) 的功能驗證。
    • 交付: 一個可運作的開發環境,以及基礎模型的 I/O 功能程式碼。
  • 第二週 (11/13 - 11/19): 核心功能實作:Diffusion Bridge 與文本化 (Core Implementation: Diffusion Bridge & Textualization)

    • 任務: 實作論文中的 Diffusion Bridge 流程,串連「圖片 → 潛在向量 → 圖片」的完整路徑。
    • 任務: 建立 text embedding 的最佳化循環,根據論文中的 Loss Function (Eq. 11),讓模型學會如何從「編輯前」的潛在向量生成「編輯後」的圖片。
    • 交付: 一個可運行的腳本,能夠針對一組「編輯前/後」圖片,產出一個對應的 text embedding。
  • 第三週 (11/20 - 11/26): 關鍵模組開發:Differential Attention Control (Key Module Development: Differential Attention Control)

    • 任務: 研究 T2I 模型中 UNet 的 cross-attention 機制。
    • 任務: 根據論文 Fig. 2 及 Eq. 12,實作 attention map 的注入與替換邏輯。這是本專案技術上最挑戰的部分。
    • 任務: 將此模組整合進第二週的最佳化循環中,並進行除錯與調整,驗證其是否能幫助模型學習到更泛化的轉換規則。
    • 交付: 完整的訓練程式碼,包含 differential attention control 功能。
  • 第四週 (11/27 - 12/03): 成果驗證、報告準備與最終交付 (Validation, Presentation Prep & Final Delivery)

    • 任務: 尋找多組自定義的視覺提示 (visual prompts),訓練出對應的 text embeddings。
    • 任務: 將學到的 text embeddings 應用在全新的測試圖片上,全面驗證模型的泛化能力與編輯效果,並將成果視覺化。
    • 任務: 製作簡報,準備「Hacker's Deliverables」中要求的演算法分享、程式碼展示與成果DEMO。
    • 交付: 最終的專案簡報、完整的程式碼庫、以及所有展示用的編輯成果圖片。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment