一條咸魚
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Nightshade: Prompt-Specific Poisoning Attacks on Text-to-Image Generative Models {%preview https://arxiv.org/abs/2310.13828 %} Shadowcast: Stealthy Data Poisoning Attacks against Vision-Language Models {%preview https://proceedings.neurips.cc/paper_files/paper/2024/file/6a2e30664b9647f97d7b9275358d083c-Paper-Conference.pdf %} Shadowcast的簡易ppt筆記 {%preview https://docs.google.com/presentation/d/1FDE-QBkHO30wN5s5RovGQYK5pTjWnuAMceaaFiVtNvs/edit?usp=sharing %} Nightshade:針對 Stable Diffusion/SDXL 等**文本到影像**的擴散模型,讓**某個概念詞被「改寫」**,例如看到 dog 產出貓的圖,影響整體影像生成品質,甚至多概念堆疊會讓整個模型失穩。 Shadowcast:針對 LLaVA、MiniGPT-4/2、InstructBLIP 等 **VLM**,讓**看圖後的自由文字回答被操控**,包含**標籤誤判**與「**勸服型**」敘事(把垃圾食物說成健康等) ------------ ## 整個投毒的流程 ![image](https://hackmd.io/_uploads/HkNEWAx5gg.png) a) 製造並上傳毒藥 b) 模型訓練者無意中餵毒 c) 模型中毒後的結果 強調普通人也可以投毒,不用知道模型架構參數 ## 步驟一:挑選最佳「毒藥」的文字標籤 (Poison Text) 目標:我們要污染「狗」(Dog) 這個概念,我們稱之為目標概念 C (Target Concept)。 做法: * 從一個大型圖文資料庫(如 LAION-5B)中,找出所有與「狗」相關的圖片和文字描述。 * 使用一個文字理解模型(如 CLIP 的 Text Encoder),計算每一句文字描述(例如 "a photo of a dog", "a running dog")與「狗」這個詞在語義上的相似度。 * 挑選出相似度最高的 5000 句文字,再從中隨機選取 Np 句(例如 Np=100)作為我們毒藥的文字標籤 {Textp}。 * 目的:確保我們的攻擊是針對最核心、最相關的描述 ## 步驟二:生成「毒藥」的靈魂——錨點圖像 (Anchor Image) 目標:我們要將「狗」污染成「貓」(Cat),我們稱「貓」為目標概念 A (Destination Concept)。 做法 * 找一個乾淨、未被污染的 AI 繪圖模型(例如標準版的 Stable Diffusion)。 * 對它下指令,例如「a photo of a cat」,生成 Np 張非常標準、典型的「貓」的圖片。 * 產出:這 Np 張由 AI 生成的「貓」的圖片,被稱為錨點圖像 {Imageanchor}。它們就是我們希望毒化圖片在 AI眼中最終呈現的特徵。 ## 步驟三:製造最終的毒藥——引導式擾動 (Guided Perturbation) 目標:將一張原始的狗圖片(來自步驟一的資料集)進行微小的修改,讓它在 AI 眼中的特徵,變得和一張錨點貓圖片(來自步驟二)的特徵一模一樣。 做法: ![image](https://hackmd.io/_uploads/BybxEAg9el.png) * 拿出一個文字標籤 t (例如 "a dog portrait") 和它對應的原始狗圖片 xt。 * 再從錨點圖片集中拿出一張貓的圖片 xa。 * 我們的任務是找到一個微小的、肉眼幾乎看不見的擾動 (perturbation) δ。 * 將這個擾動 δ 加到原始的狗圖片 xt 上,得到一張新的毒化圖片 x't = xt + δ。 * 這個過程必須滿足兩個條件: * 效果:毒化後的狗圖片 x't,其 特徵 F(x't) 必須與錨點貓圖片 xa 的特徵 F(xa) 盡可能接近。 * 隱蔽:擾動 δ 本身必須非常小,小到人類的眼睛無法分辨出原始圖片 xt 和毒化圖片 x't 的區別。 ![image](https://hackmd.io/_uploads/Hy-mHRecle.png) 設定都是根據先前研究 * p 被設定為 0.07 * 所有輸入圖片都會被裁切成 512x512 像素 * 使用 Adam 最佳化器 * 執行 500 步來找到最佳的擾動 δ 評估: 下毒:首先,研究人員用 N 個毒化樣本(例如 100 個)去污染一個 AI 模型(如 SDXL),目標是將概念 C(例如「狗」)污染成概念 A(例如「貓」)。 生成測試圖片:接著,他們命令這個被毒化的模型生成 1,000 張關於概念 C 的圖片,使用的提示詞是「a photo of a [C]」(一張 C 的照片)。 CLIP :然後,他們將這 1,000 張生成的圖片交給 CLIP ,讓它對每一張圖片進行分類,判斷圖片內容屬於 91 個物體類別或 30 個風格類別中的哪一個。 計算成功率:「攻擊成功率」 的定義是:在這 1,000 張圖片中,有多少百分比的圖片被 CLIP 認定為「不是 C」 185 名人類檢查生成的圖片在人類視覺觀感上是否與提示詞 C 不符。 ---- ---- 以下針對Nightshade的論文做筆記 * 即使訓練資料龐大,文字轉圖片擴散模型仍對「提示詞/概念特定」的資料投毒相當脆弱,關鍵在於「概念稀疏性」與可提升效力的精心設計投毒樣本 * 不需要存取訓練管線或部署流程,只要能少量注入圖文配對資料、可改動圖文內容,並能使用一個開源產生式模型作為輔助,即可在兩類訓練情境(從零訓練、持續訓練)中達成成效 ![image](https://hackmd.io/_uploads/HkNEWAx5gg.png) a) 製造並上傳毒藥 b) 模型訓練者無意中餵毒 c) 模型中毒後的結果 ---- | 指標 | Nightshade | 後門觸發法| 髒標/一般投毒 | Glaze | | -------- | -------- | -------- |-------- |-------- | | 需觸發 | no | yes |no |no |no | 僅資料注入 | yes | no |yes |yes |yes | 少量樣本高效| yes | no |no |no | | 影響基礎模型 | yes | yes |yes |no | ## 威脅模型 攻擊者假設: * 可向訓練資料集中注入少量投毒圖文對,且能任意修改其圖像與文字內容 * 無法存取模型流程的任何其他部分(例如訓練、部署) * 可使用開源文字轉圖片模型(如 Stable Diffusion)作為輔助資源 **與以往對文字轉圖片擴散模型的投毒研究不同,我們的攻擊不需要對模型訓練與部署** 兩種訓練情境: (1)從零開始訓練一個模型 (2)從一個預訓練(且乾淨)的模型 ### Concept Sparsity 擴散模型的總訓練資料量相當龐大,但與任何單一概念相關的訓練資料量卻有限,且在不同概念間嚴重不均。對於絕大多數概念(包括在真實世界提示中常出現的常見物件與風格),每個概念只佔整體訓練集極小的一部分,例如:「dog」約 0.1%、「fantasy」約 0.04%。此外,即使在語義層次進行聚合(把與某概念及其語義相關「鄰居」的樣本加總;例如「puppy」與「wolf」皆與「dog」語義相關),這種稀疏性仍然存在。 ### Dataset 先針對 [ LAION-Aesthetic ](https://laion.ai/blog/laion-aesthetics/)這個開源數據集,它是 LAION-5B 的一個子集,包含六億個文本/圖像對,並在其所有文本提示中涵蓋了 22,833 個獨特的、有效的英文單詞。 利用w 剔除了無效單詞,並將所有名詞作為「概念」 > [Open Multilingual WordNet ](https://omwn.org/) > 一個巨大、開放且免費的「跨語言概念網路地圖」。它不僅僅是一本多國語言字典,更能告訴您不同語言中的詞語在「概念」層面上是如何相互關聯的。 Word Frequency & Semantic Frequency 詞頻跟語義都呈現長尾,代表大多數"概念"的資料占比極低,對於超過 92% 的概念,每個概念關聯的圖像少於 0.04%(即 24 萬張圖像) > 語義頻率是在「把同義或近義等語義鄰居合併後」再看該概念的有效資料占比 ![image](https://hackmd.io/_uploads/SJxJP9ttxx.png) 採用了 [CLIP 文本編碼器](https://www.youtube.com/watch?v=AKwl3t811tA)(被 [Stable Diffusion](https://www.youtube.com/watch?v=JbfcAaBT66U) 和 [DALLE-2](https://www.youtube.com/watch?v=Figvv2q3Gwk) 所使用),將每個概念映射到一個語義特徵空間。兩個概念若其 **L2 特徵距離小於 4.8**,則被**視為語義相關**。閾值 4.8 是基於對同義詞之間 L2 特徵距離的實證測量得出的 > CLIP > 是一種同時訓練文字編碼器與影像編碼器的對比式模型,讓正確的圖文配對相似度高、非配對相似度低,最終把文字與圖像放到同一語義向量空間中 ## Dirty Label Poisoning Attack (baseline) 攻擊者故意將圖片和它的**文字描述(標籤)**弄得不匹配,以此來欺騙和污染 AI 模型 在**四個通用的文字轉影像模型**上評估此基本攻擊,其中包含 Stable Diffusion 的最新模型 。我們透過**兩種指標檢視生成影像的正確性**來衡量攻擊成功與否: * 基於 CLIP 的影像分類器 * 人工檢視 關鍵是:當向訓練資料中注入 1000 筆投毒樣本時,該攻擊相當有效。 攻擊"狗"這個概念,攻擊者要執行以下步驟: * 選擇一個與 狗 無關的「目標」概念 貓 作為引導。 * 建立一個包含關鍵字 狗 的文本提示集合 Text狗,並確保其中不包含 貓。 * 建立一個圖像集合 Image貓,其中每張圖像在視覺上都捕捉了 貓 的精髓,但完全不含 狗 的視覺元素。 * 將 Text狗 中的一個文本提示與 Image貓 中的一張圖像進行配對。 ![image](https://hackmd.io/_uploads/HJtmnn0Yel.png) 在四個通用的文字轉影像模型上評估這種簡單的投毒攻擊,涵蓋兩種情境: (i) ) training from scratch從零訓練 (ii) ) continuously training scenarios持續訓練情境 (i) 對於從零訓練,我們使用 [Conceptual Caption 資料集](https://github.com/google-research-datasets/conceptual-captions)中的 100 萬對文字—圖片配對來從頭訓練一個潛變分散(latent diffusion)模型 ,並將此模型命名為 LD-CC。 (ii) 對於持續訓練,我們考慮三個常見的預訓練模型:Stable Diffusion V2 、Stable Diffusion SD-XL 、DeepFloyd 。我們從 LAION 隨機抽取 10 萬對文字/圖片配對來更新每個模型 依據先前對熱門提示詞的文獻 ,我們選擇 121 個要攻擊的概念。包括物體(來自[ COCO 數據集](https://cocodataset.org/#home)的 91 個常見物體)和藝術風格(來自[ Wikiart](https://www.wikiart.org/) 的 20 種 + 來自 的 10 種數位藝術風格) 以「**當模型被以概念 C 提示時,是否生成能傳達 C 的圖像**」來衡量攻擊成效;評估方法結合了基於 **CLIP 的影像分類器** 與群眾外包的**人工作業**(經 IRB 核准)。有趣的是,發現人類評分給出的攻擊成功率高於 CLIP 分類器。 此圖示 SD-XL 模型在被 0、500 和 1000 個毒化樣本攻擊後生成的範例圖像 ![image](https://hackmd.io/_uploads/S1yAAcYFeg.png) Figure19是 LD-CC的結果 僅添加 500 個毒化訓練樣本就能有效抑制乾淨數據樣本在模型訓練中的影響,達到了 82% 的攻擊成功率(人工檢查)和 77%(CLIP 分類) ![image](https://hackmd.io/_uploads/HyruqNg5ll.png) Figure20,21是 SD-V2, SD-XL, DeepFloyd的結果 透過注入 750 個毒化樣本,攻擊再次以很高的機率(85%)有效干擾了圖像生成 ![image](https://hackmd.io/_uploads/HJWYcVx9le.png) 這種簡單攻擊在**破壞「風格」**概念上比「物件」概念更有效 ![image](https://hackmd.io/_uploads/Sk8Ws4eclx.png) ---- ## 模型方法 **目前是透過將概念 A 的生成原型圖像與概念 C 的最佳化文本提示配對來創建毒化數據** 一種高效且隱蔽的「提示詞特定」投毒方法,能把所需**投毒樣本數量降一個數量級**,並同時**規避自動化**與**人工檢測** 有兩個目標: * 以更少的投毒樣本達成成功 * 避免人工與自動化偵測 滿足條件: * **最大化毒性**: 為了減少成功攻擊所必需的毒化圖文對數量,我們應該放大每個毒化樣本對模型訓練的影響力,同時最小化不同毒化樣本之間的衝突 * **規避偵測**: 毒化數據的文本和圖像內容應顯得自然且彼此一致,無論是對自動化偵測器還是對人類檢查員而言 ### 最大化毒性 (Maximiziing Poison Potency) 我們的目標是攻擊概念 C,使得當提示中出現 C 時,模型會輸出概念 A。 為了達到這個目的,毒化數據需要最小化概念 C 的良性(乾淨)訓練數據所做的貢獻 目標是**減少毒化數據之間的變異和不一致性** 1. 只包含專注於關鍵概念 C 的提示,來減少毒化提示詞(TextC)中的雜訊 2. 在製作毒化圖像(ImageA)時,我們從一個與 C 無關但定義明確的概念 A 中選擇圖像,以確保所有毒化數據都指向同一方向(即 A 的方向) 3. 我們確保每個毒化圖像 ImageA 都是完美對齊的,並且是文字生成圖像模型所理解的概念 A 的最佳版本——我們透過直接查詢模型生成「a photo of {A}」來獲得這些圖像 ### 規避偵測 (Avoiding Detection) 先給定一組 A 的生成圖像(在此稱為「錨點圖像」(anchor images)),目標是建構出有效的毒化圖像,使其在視覺上與概念 C 的自然圖像完全相同。 找到一個最理想的微小擾動 δ,使得 D(F(xt + δ), F(xa)) 的值最小 * xt (原始圖像):這是一張乾淨、正常的**「狗」**的照片 * δ (擾動):這是一層非常細微、人眼幾乎無法察覺的雜訊或圖案。這是我們要計算出來的「毒藥」本身 * xt + δ (毒化圖像):這是最終的產出。它看起來仍然是一張「狗」的照片,但內部已經被注入了毒藥 * xa (錨點圖像):這是一張由 AI 生成的、非常標準的**「貓」**的照片,作為我們攻擊的「靶心」或「錨點」 * F(.) (特徵提取器):它會把任何輸入的圖片轉換成一串數字,稱為「特徵向量」。這個向量代表了模型對圖片內容的理解。 * D(., .) (距離函數):用來計算兩個特徵向量在「特徵空間」中的距離。距離越近,代表模型認為這兩張圖片的內容越相似 * ||delta|| < p (限制條件):這個條件是為了確保攻擊的隱蔽性。它規定了擾動 δ 的「強度」或「可見度」必須小於一個非常小的閾值 p,從而保證人眼看不出 xt 和 xt + δ 的區別 ![image](https://hackmd.io/_uploads/SJzCQreqgx.png) ![image](https://hackmd.io/_uploads/S1AWzhtFex.png) ## 攻擊演算法 ### Detailed Attack Design * {Text/Image}:一個巨大的網路圖庫,裡面有數百萬張關於「龍」的藝術作品,每張圖都配有文字描述,例如 {"a majestic dragon flying over a castle", <一張龍飛過城堡的圖片.jpg>}。 * 目標概念 A:我們決定毒化的方向是「汽車 (car)」。 * 工具 M:我們有一套開源的 Stable Diffusion 模型。 * 工具 Mtext:這是 Stable Diffusion 裡專門理解文字的「大腦」。 * p:一個數值,規定了我們加的「毒」有多隱蔽,確保人類肉眼看不出來。 1. 挑選最高效的「下毒咒語」(Textp) "a majestic dragon" (一條龍的肖像) -> 分數會很高。 ![image](https://hackmd.io/_uploads/SyRd_Llqee.png) "a knight fighting a dragon" (騎士與龍戰鬥) -> 分數會低一些,因為混雜了「騎士」的概念。 ![image](https://hackmd.io/_uploads/rk60_Ixcex.png) 從分數最高的描述中(論文說挑 5000 筆),隨機選出 Np 筆作為我們最終的「下毒咒語」{Textp}。這些就是我們毒性最強的文本彈藥。 2.創造完美的「毒藥靶心」(Image_anchor) 需要一個非常清晰、一致的「汽車」形象,作為所有毒藥攻擊的最終目標 * AI 生成:我們命令手上的 Stable Diffusion 工具 M,生成 100 次「a photo of a car」。 * 會得到 100 張非常標準、非常典型的汽車圖片。這些就是我們的「錨點圖像」{Image_anchor},也就是毒藥在 AI 腦中應該指向的「靶心 **AI 生成的圖片特徵更為一致,可以讓所有的毒藥樣本都朝著同一個「特徵方向」努力,力量更集中** 3. 要讓一張「龍」的圖片,在 AI 眼裡看起來完全就是一張「汽車」 * 從步驟一,拿出第一句咒語 t_1 (例如 "a majestic dragon") 和它對應的原始「龍」圖片 xt_1。 * 從步驟二,拿出第一張靶心 xa_1 (一張 AI 生成的**「汽車」圖片**)。 ![image](https://hackmd.io/_uploads/H1GNd8lcgx.png) 底下公式會做一件事:它會計算出一個微小的、人眼看不見的擾動 δ ![image](https://hackmd.io/_uploads/rJZGKLx5lx.png) 當把它疊加到原始的「龍」圖片 xt_1 上後,產生的新圖片 x't_1 會具備以下特點: * 對人:x't_1 看起來和 xt_1 幾乎一模一樣,仍然是一條龍。因為 δ 的強度被 p 限制住了。 * 對 AI:AI 的特徵提取器 F(.) 看到 x't_1 時,它提取出的特徵向量,竟然和它看到靶心「汽車」圖片 xa_1 時提取的特徵向量極度相似! 將這張被毒化的龍圖片 x't_1,和它原始的文字 t_1 ("a majestic dragon") 打包在一起。這就是我們的第一個「毒藥樣本」 重複 N 次:我們對剩下 N 組「龍的咒語/圖片」和 N 個「汽車靶心」重複上述過程 這是中毒的圖 ![image](https://hackmd.io/_uploads/HJQpz2x5gx.png) 這是我自己的小實驗,確實可以毒化樣本,但跟作者的相比解析度有點差, ![image](https://hackmd.io/_uploads/S1ZyO2e9gl.png) ![image](https://hackmd.io/_uploads/Sk5yDhgcex.png) ---- ## 實驗 * 從零開始訓練 (Training from scratch / LD-CC):我們使用 Conceptual Caption (CC) 資料集中的超過三百三十萬筆圖文對,從零開始訓練一個潛在擴散模型 (Latent Diffusion, LD)。我們完全遵循了論文 的訓練設定,並在從 CC 資料集隨機抽樣的 100 萬筆圖文對上訓練 LD 模型。這個乾淨模型的表現(FID=17.5)與使用完整 CC 資料集訓練的版本(FID=16.8)相當。 訓練每一個 LD-CC 模型需要在一張 NVidia A100 GPU 上花費 8 天時間 * 持續訓練 (Continuous training / SD-V2, SD-XL, DF):在此情境中,模型訓練者會用新的訓練資料持續更新一個預訓練好的模型。我們考慮了三個最先進的開源模型:Stable Diffusion V2 (SD-V2) 、Stable Diffusion XL (SD-XL) 以及 DeepFloyd (DF) 。它們擁有截然不同的模型架構,並使用不同的預訓練資料集(細節見附錄 A.1)。我們從 LAION-5B 資料集中隨機選取 10 萬筆樣本作為新資料來更新這些模型 。 LAION-5B(排除了 LAION-Aesthetic 子集)中隨機選取 5,000 個樣本作為我們的自然資料集 {Text/Image}。我們確保這些樣本與表 2 中的 10 萬個訓練樣本沒有重疊 當攻擊一個概念 C 時,我們會從概念列表(在相同的物體/風格類別中)隨機選擇一個目標概念 A。 guided perturbation,我們首先將所有圖像資料裁切成 512x512 的正方形(擴散模型的輸入尺寸),然後遵循先前研究的作法,使用 LPIPS 預算 p = 0.07,並運行 Adam 優化器 500 步 初步測試中,我們假設攻擊者可以接觸到目標的特徵提取器,即 M 是被攻擊模型的未毒化版本(對於 LD-CC)或是持續更新前的乾淨預訓練模型(對於 SD-V2, SD-XL, DF) CLIP 對齊分數與 FID 評估細節。 我們依循先前研究 [19, 37],使用 20K 筆 MSCOCO 文本提示(涵蓋各種物件與風格)對中毒模型進行查詢並生成 20K 張影像。我們利用 CLIP 模型 計算每張生成影像與其對應提示之間的對齊分數。我們則透過與 MSCOCO 資料集中乾淨影像比較,並使用影像特徵擷取模型 [88],來計算 FID(Fréchet Inception Distance)。 ---- ### 吸一口毒,送半條命 Nightshade 成功地攻擊了所有四種擴散模型,且僅使用了極少量的(約 100 個)毒化樣本 用了Nightshade之後,在CLIP和人工檢測底下,攻擊成功率上升 ![image](https://hackmd.io/_uploads/BkC6tnYYle.png) ![image](https://hackmd.io/_uploads/SkEe52Ytxx.png) 研究參與者對這些「正確」生成圖片的可用性 (usability) 進行評分 **發現隨著注入更多毒化樣本,可用性迅速下降**:25 個毒化樣本時可用性為 40%,50 個樣本時則降至 20%。這意味著,即使是極少數(25 個)的毒化樣本,也足以大幅降低生成圖像的品質與可用性 交叉注意力層 (cross-attention layers): 當你輸入提示詞「一隻戴著帽子的狗」時,模型內部需要知道: * 「狗」這個詞應該對應畫面中的哪個像素區域? * 「帽子」這個詞又該對應哪個區域? * 這兩者之間的位置關係是什麼?(帽子在狗的頭上) 交叉注意力層就是完成這項「對位」工作的關鍵模組 。 ![image](https://hackmd.io/_uploads/BkAf93Ytxl.png) 當輸入詞為概念C(例:Hat、Handbag),乾淨模型的高注意力落在對應物體區域,而被毒化後的高注意力改落在目標概念A(例:Banana、Fork)對應的影像區域。 毒化不只是輸出結果改變,模型在理解詞與影像關係時,會把「帽子」當成「香蕉」、把「手袋」當成「叉子」來看。 ### 灑泡尿在泳池裡有沒有效果? 在模型訓練過程中,乾淨樣本和毒化樣本會相互競爭。在這裡,我們探討不同組態的乾淨訓練樣本如何影響攻擊效能。 * 從相關概念中增加乾淨資料 毒大海簡單還是毒一杯水? 作者在LD-CC進行了測試,攻擊一個概念,要讓CLIP攻擊成功率超過90%所需要的毒樣本,會隨著乾淨資料線性增加,斜率是2%,意思是只要有乾淨資料的2%毒樣本就可以成功中毒拉。 ![image](https://hackmd.io/_uploads/Hk7Wnhl9ll.png) * 後續僅在乾淨資料上進行持續訓練 那有沒有可能今天你撒了拋尿在泳池中,然後就停止了尿尿行為,之後泳池的水會換水麻,所以毒性就減弱了。 一個被 500 個毒化樣本成功毒化的 SD-V2 模型開始,並使用從 LAION-5B 隨機抽樣的、數量遞增的乾淨資料來更新模型,再額外用 20 萬個乾淨樣本進行訓練後,該攻擊仍然高度有效(攻擊成功率達 84%) 好毒的尿阿...... ![image](https://hackmd.io/_uploads/Bk8k6ng9le.png) ### 近朱者赤,近墨者黑 再來是看中毒滲透 * 對鄰近概念的滲透 * 對相關提示詞的滲透 連相近語意的詞彙都受到汙染,要死一起死,真是好兄弟! ![image](https://hackmd.io/_uploads/HkKkj3FFlx.png) 連風格中毒都可以影響到概念 意思是片單中毒了,點開NYKD54後,你人生就有了這個陰影,之後看到日本片,腦中就浮現兩個奶奶,不妨換個思路,那就看歐美片,這樣就不會想到了。對吧? ![image](https://hackmd.io/_uploads/ryqOR3lcxx.png) 這裡的奇幻風格中毒,影響到了龍,但沒有影響到梵谷 ### 百毒散 1)CLIP 對齊分數 (alignment score),它捕捉生成圖像與其提示詞的對齊程度 2) FID 分數,它捕捉圖像品質 ![image](https://hackmd.io/_uploads/B1mKs2ttge.png) 可以疊加"概念" 我們從訓練資料集中隨機抽樣一些概念(名詞),並為每個概念注入 100 個毒化樣本進行攻擊 當 250 個不同概念分別被 100 個樣本毒化時,對齊分數降至 0.24 以下,而 FID 分數則高於 39.6。根據這些指標,最終模型的表現比一個 2017 年的 GAN 模型還要差 ,並且接近於一個只會輸出隨機雜訊的模型 ![image](https://hackmd.io/_uploads/By8-2ntYgl.png) 當有 250 個概念被毒化時,圖像品質開始明顯下降;當 500 到 1000 個概念被毒化時,模型生成的圖像看起來就像是隨機雜訊。對於從頭開始訓練的模型(LD-CC),要達到類似的退化程度需要毒化 500 個概念 **目前還不知道原因!!!!!!!** ### 我的毒沒有解藥 先看這個連結,這就是對不同模型都有效果的最佳解釋 {%preview https://www.youtube.com/watch?v=e1mXmGRKCWQ&feature=youtu.be %} * 對不同模型的可轉移性 假設攻擊者使用我們四個模型中的一個乾淨模型來建構毒化資料,將其應用於一個使用不同模型架構的模型上,用「代理模型 A」製作的毒藥,是否成功地毒化了「目標模型 B」 ![image](https://hackmd.io/_uploads/B1zTh2YFxg.png) * 以四種模型(LD‑CC、SD‑V2、SD‑XL、DeepFloyd)互作來源/目標評估,注入200張Nightshade毒樣本後,跨模型攻擊成功率(CLIP衡量)多數落在約「72–96%」範圍 * 當攻擊者使用 SD-XL 來生成攻擊時,其攻擊可轉移性會顯著更高,理由是這個模型比較強大 * 在多樣化提示詞上的攻擊表現 主要專注於評估在通用提示詞(如「a photo of C」或「a painting in C style」)上的攻擊表現 ![image](https://hackmd.io/_uploads/S1Oq5ae9ll.png) 即使把使用者的文字提示改得更複雜、更多樣,成功「觸發被投毒後的錯誤行為」的機率依然很高(在使用200張投毒樣本時,各類改寫提示的攻擊成功率都≥89%),所以單靠「改寫提示」並不能繞過或消解投毒效果 投毒是「概念層級」的污染,不是只對某一句固定字串生效 ## 我的毒真的沒有解藥嗎? 設計並評估了 Nightshade 在面對 3 種毒化檢測方法和 1 種毒化移除方法時的表現。在每個實驗中,為每個被毒化的概念(包含物體和風格)生成 300 個毒化樣本。 報告了防禦方的精確率 (precision) 和召回率 (recall),以及當模型訓練者過濾掉所有被檢測為毒化的資料後,對攻擊性能的影響。 在「從零開始訓練」(LD-CC) 和「持續訓練」(SD-XL) 兩種場景下都進行了測試。 * 過濾高損失資料 (Filtering high loss data) * 頻率分析 (Frequency analysis) * 圖文對齊過濾 (Image-text alignment filtering) * 自動圖像標註 (Automated image captioning) * 基於梯度的離群點檢測 (Gradient-based Outlier Detection) 結論是無法有效識別出 Nightshade 樣本,要麼在過濾時會誤傷大量無辜的正常資料,導致模型性能嚴重下降,得不償失 用在版權 ---- ## 後續 Alignment Model 防禦會失效? 是因為不同模型基於其不同的訓練目標,學到了不同層次的特徵 文生圖模型的特徵提取器必須關注圖像的細粒度細節 對齊模型的特徵提取器 (如 CLIP)任務是理解圖片的高層次語義,以便將其與文字對應 不同類型的概念污染,對模型穩定性造成損害的路徑與效率有何不同?能否建立一個預測模型崩潰的指標? 提供針對防禦nightshade的論文 下次會專門對這篇寫個介紹 LightShed: Defeating Perturbation-based Image Copyright Protections https://www.usenix.org/conference/usenixsecurity25/presentation/foerster ----- CLIP:

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully