LightShed: Defeating Perturbation-based Image Copyright Protections ![image](https://hackmd.io/_uploads/B16eq3f3ll.png) 延續之前nightshade攻擊T2i模型研究,針對投毒於圖片中的擾動進行防禦 目標不是重建整張圖片,而是**只重建出被注入的「毒藥」**。 LightShed 使用一個深度卷積自動編碼器 (Autoencoder),並結合了殘差塊 (residual blocks) 和注意力機制 (attention blocks) 。這種架構擅長學習和重建圖像中的特定模式。注意力機制能讓模型更專注於圖像中可能存在擾動的關鍵區域 ---- ## 核心模型與假設 * LightShed 使用一個自動編碼器 (Autoencoder) 來學習並模擬中毒擾動的特徵 * 訓練資料製作: 攻擊者會先取得一個乾淨的圖像數據集,然後使用目標保護工具(例如 NightShade)對這些圖像進行處理,從而得到「乾淨圖像」和「中毒圖像」的配對 4。兩張圖像相減,得到的差異就是「真實的毒藥」($P_{actual}$) * 訓練目標 當輸入中毒圖像時,它能準確重建出被添加的毒藥 ($P_{reconstr.} \approx P_{actual}$) 當輸入乾淨圖像時,它應該重建出一張空的(全黑)圖像(因為沒有毒藥可重建) ### 損失函數 (Loss Function) ![image](https://hackmd.io/_uploads/H1peYzzRxx.png) 為了達到上述的雙重目標,研究者設計了一個複雜的複合式損失函數 $L$ 8。這個函數是四種不同指標的加權總和,並且會根據訓練階段(epoch $e$)的不同而改變 #### 早期訓練 ($e < \tau$) 在訓練初期($\tau$ 是一個預設的 epoch 邊界值,例如前 100 個 epoch),模型專注於學習如何準確重建毒藥。 $$L = 0.7 \cdot L_{SSIM} + 0.2 \cdot L_{Regu} + 0.1 \cdot L_{Reco}$$ * $L_{SSIM}$ (結構相似性損失): 主要的損失項。相比逐像素比較,它更能捕捉毒藥的結構和紋理特徵 * $L_{Reco}$ (重建損失): 傳統的 L1 損失,用於測量像素級的差異 * $L_{Regu}$ (正規化損失): 當重建誤差超過一個閾值時,給予二次方的懲罰,避免出現過大的錯誤 #### 後期微調 ($e \ge \tau$) 在訓練後期,模型加入了 $L_{FineTune}$ 這一項,目的是強化模型區分「有毒」和「乾淨」樣本的能力 $$L = 0.7 \cdot L_{SSIM} + 0.2 \cdot L_{Regu} + 0.1 \cdot L_{Reco} + 0.3 \cdot L_{FineTune}$$ * $L_{FineTune}$ (微調損失):在訓練後期才加入,它利用熵 (Entropy) 來強化模型的區分能力。對於乾淨圖像的輸入,它會懲罰輸出(因為乾淨圖像沒有毒藥,輸出應該是全黑的,熵值很低),目標是最小化熵。對於有毒圖像的輸入,它會獎勵輸出,目標是最大化熵。這一步驟能顯著拉開有毒和無毒樣本在輸出熵值上的差距,讓後續的分類更簡單 ### 指標解釋 $L_{SSIM}$ (權重 0.7 - 最主要) * 專注於捕捉擾動的「結構關係」和「鄰近像素」的關聯性 * $L_{SSIM} = 1 - SSIM(P_{reconstr.}, P_{actual})$ (SSIM 越接近 1 表示越相似,損失 $L$ 越接近 0) * SSIM 值越高(最大為1)代表兩張圖越相似 * 讓重建的毒藥 $P_{reconstr.}$ 在結構上盡可能接近真實的毒藥 $P_{actual}$ $L_{Regu}$ (權重 0.2 - 懲罰大錯誤) * 專門用來懲罰「大型的」重建錯誤 * $L_{Regu} = max(0, ((P_{reconstr.} - P_{actual}))^2 - \psi)$ * 當重建錯誤(的平方)超過一個門檻 $\psi$ 時,這個損失才會啟動,並且會以二次方的幅度(即錯誤越大,懲罰越大)來懲罰模型 。這有助於訓練過程更穩定 $L_{Reco}$ (權重 0.1 - 基礎重建) * 提供像素級的直接差異測量,作為輔助性的重建指標 * $L_{Reco} = |(P_{reconstr.} - P_{actual})|$ 28(即 L1 損失,計算每個像素差異的絕對值) $L_{FineTune}$ (權重 0.3 - 後期微調) * 強化模型區分「乾淨圖像」和「中毒圖像」的能力 * 當輸入圖像 $I$ 是「乾淨」的 (clean): * ![image](https://hackmd.io/_uploads/H1lHpzzAxg.png) * 為了最小化這個損失,模型必須學會輸出一張熵值極低的「重建毒藥」($P_{reconstr.}$) * 當輸入圖像 $I$ 是「中毒」的 (poisoned, "otherwise") * $L_{FineTune} = -\text{Entropy}(P_{reconstr.})$ * 為了最小化這個「負熵」,模型必須學會輸出一張熵值極高的「重建毒藥」 。熵值高意味著重建出的毒藥模式更複雜、資訊量更豐富 ![image](https://hackmd.io/_uploads/Sy5SymfCxg.png) ---- ## 自動編碼器的架構細節 * 殘差塊 (Residual blocks): 由兩個 $3 \times 3$ 卷積層、批次標準化 (batch normalization) 和 ReLU 激活函數組成 。它們透過捷徑連接 (shortcut connections) 來穩定訓練並保持梯度流動 。 * 注意力塊 (Attention blocks): 讓模型能夠專注於圖像的特定區域 。它們會擷取編碼器中較早層的特徵圖 (feature map),並將其與較後層的門控訊號 (gating signal) 結合 。 * 編碼器 (Encoder) 結構: * 由四個卷積層組成 。 * 每一層都依序包含:批次標準化、ReLU 激活函數和一個殘差塊 。 * 每一層都會將輸入的特徵圖下採樣 (downsamples) 2 倍 * 瓶頸層 (Bottleneck Layer) 結構: * 位於編碼器之後,包含一個卷積塊,用於進一步下採樣特徵圖 。 * 後面接著兩個殘差塊 * 解碼器 (Decoder) 結構: * 解碼器的結構與編碼器相對稱(鏡像) 。 * 它使用轉置卷積 (transposed convolutions) 來將特徵圖上採樣 (upsample) 回原始尺寸 。 * 每一個解碼階段都包含一個殘差塊,後面接著一個轉置卷積 。 Inputs * D: 完整的訓練數據集,包含了乾淨圖像 (Inp) 和中毒圖像 (Ip) * Dcor :一個「對照用」的數據集。對於 D 中的每一張圖像(無論乾淨或中毒),Dcor 中都有一張其對應的「原始乾淨版本」 * Dval: 驗證集,也包含乾淨和中毒圖像,用於後續決定閾值 * yval: 驗證集的真實標籤(即 Dval 中每張圖是真的「乾淨」還是「中毒」 OUTPUT * A: 訓練完成的自動編碼器模型 。 * T: 最佳化的「熵值切割」閾值 。 當前圖像 I 餵入自動編碼器 A,產生「重建的毒藥」 Preconstr. 接著,透過將輸入 I 減去其原始乾淨版本 Icor,計算出「真實的毒藥」(或標準答案) Pactual * 如果 I 是中毒圖像,Pactual 就是毒藥圖案。 * 如果 I 是乾淨圖像,Pactual 就是一張全黑的空圖像 演算法計算三項基礎損失:$L_{SSIM}$、$L_{Regu}$ 和 $L_{Reco}$,這三者都用於衡量 Preconstr. 與 Pactual 之間的差異 兩階段微調損失 使用梯度下降法更新模型 A 的參數,以最小化這個 Loss 當所有 epoch 完成後,演算法會使用訓練好的模型 A 來處理驗證集 Dval,並計算出每張驗證圖像的熵值,存為 Eval 。最後,它利用這些預測的熵值 Eval 和真實的標籤 yval 來繪製一條 ROC 曲線,並從中找出一個最佳的閾值 T ---- ## Evaluation 所有的數據集(包括乾淨和中毒的)都是從 LAION-Aesthetics Dataset 衍生出來的 ![image](https://hackmd.io/_uploads/r1rhtXfCxe.png) NightShade [23], NightShade LPIPS 0.004, MetaCloak [13]: 這些樣本只出現在測試集中 動態閾值 (T): T 的決定方式 (使用 ROC 曲線): * 使用一個驗證集 (validation set) 算出來的。 研究人員會取得驗證集中所有圖片的「重建熵值」,並搭配它們的「真實標籤」(乾淨或中毒),以此來繪製一條 ROC 曲線。 * 選擇標準: 他們在選擇 T 時有一個限制條件:FPR必須小於等於 0.1 (即最多只能有 10% 的乾淨圖片被誤判為中毒)。 * 在滿足這個條件的所有 T 值中,他們會選擇那個能讓 TPR 最大化(即抓出最多中毒圖片)的 T 值作為最終的分類門檻。 ![image](https://hackmd.io/_uploads/ry29qXfAlg.png) ![image](https://hackmd.io/_uploads/rJy9jQM0lg.png) 門檻太低 (X 軸靠左): 你會得到很高的 TPR (所有毒藥都抓到,彩色線在頂部),但 TNR 會很低 (所有乾淨圖片都被誤判,黑線在底部) 只學習過 NightShade 這一種毒藥 ![image](https://hackmd.io/_uploads/B1_WZ-Q0lg.png) 展示 LightShed 重建出的毒藥 ($P_{reconstr.}$) 與「真實毒藥」($P_{actual}$) 之間的差異: ![image](https://hackmd.io/_uploads/ryEKEb7Age.png) * 對於已知毒藥(已訓練): 對於模型訓練過的 NightShade 和 Mist,LightShed 的重建品質非常高(高 SSIM,低熵差)。 * 未知毒藥(未訓練): 對於模型從未見過的 MetaCloak,LightShed 的重建品質很差(低 SSIM,高熵差)。 通用entropy Table 4 的目的: 因此,Table 4 測試了一個更現實的場景:研究人員在驗證集上找到一個單一的、通用的閾值(設定標準為 FPR=0.5%,即 TNR=99.5%)。 ![image](https://hackmd.io/_uploads/SJnhEbQAgg.png) ![image](https://hackmd.io/_uploads/H1AANW7Aee.png) 如果中毒的圖片在網路上被旋轉、壓縮或添加噪聲,LightShed 還能準確地偵測到毒藥嗎? 模擬真實 AI 訓練的情境下,LightShed 的「去毒」(depoisoning) 效果 ![image](https://hackmd.io/_uploads/ryZTUWmRgg.png)