---
# System prepended metadata

title: 'LightShed: Defeating Perturbation-based Image Copyright Protections'
tags: [paper]

---

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)


