- ??🍨 本文為🔗365天深度學習訓練營中的學習記錄博客
- 🍖 原作者:K同學啊
Pix2Pix 是一種基于條件生成對抗網絡(cGANs)的圖像到圖像翻譯算法,由 Phillip Isola 等人在 2016 年提出。該算法的核心思想是將輸入圖像作為條件信息,通過生成器和判別器的對抗訓練,將輸入圖像轉換為目標圖像。Pix2Pix 的典型應用場景包括從語義分割圖生成真實圖像、從邊緣圖生成照片、從黑白圖像生成彩色圖像等。
核心思想
Pix2Pix 的基本思想是使用一個條件生成對抗網絡(Conditional GAN),其中生成器(Generator)以輸入圖像為條件生成目標圖像,判別器(Discriminator)則判斷生成的圖像是否與目標圖像相似。
生成器(Generator)
- Pix2Pix 中的生成器采用的是 U-Net 架構。
- U-Net 包含編碼器和解碼器兩部分:
- 編碼器:逐步提取圖像特征,降低分辨率。
- 解碼器:逐步恢復圖像細節,提高分辨率。
- U-Net 還引入了跳躍連接(skip connections),將編碼器的特征直接傳遞給解碼器的對應層,幫助保留圖像的結構信息。
判別器(Discriminator)
- 判別器采用 PatchGAN 結構,其輸出是一個二維矩陣,表示圖像中每個局部區域的真實性。
- PatchGAN 不會評估整張圖像的真實性,而是關注局部紋理和結構,使得生成的圖像在局部上更逼真。
損失函數
Pix2Pix 使用兩種損失函數來優化模型:
-
對抗損失(Adversarial Loss):
- 使用 LSGAN(Least Squares GAN)的損失函數,減少生成圖像中的模糊問題。
- 公式:
Ladv=1N∑i=1N(D(xi,yi)?1)2+1N∑i=1N(D(xi,G(xi)))2Ladv?=N1?i=1∑N?(D(xi?,yi?)?1)2+N1?i=1∑N?(D(xi?,G(xi?)))2
其中?DD?是判別器,GG?是生成器,xixi??是輸入圖像,yiyi??是目標圖像。
-
L1 損失(Pixel-wise Loss):
- 強制生成的圖像與目標圖像在像素級別上接近。
- 公式:
LL1=1N∑i=1N∥yi?G(xi)∥1LL1?=N1?i=1∑N?∥yi??G(xi?)∥1?
-
總損失:
- 總損失是上述兩種損失的加權和:
Ltotal=λ?Ladv+LL1Ltotal?=λ?Ladv?+LL1?
其中?λλ?是超參數,用于平衡對抗損失和 L1 損失。
- 總損失是上述兩種損失的加權和:
生成器網絡結構:
?
運行結果圖:
?
總結:
Pix2Pix 算法總結
1. 核心思想
Pix2Pix 基于 條件生成對抗網絡(cGAN),通過生成器(Generator)和判別器(Discriminator)的對抗訓練,實現 圖像到圖像的翻譯。
- 生成器:以輸入圖像為條件,生成目標圖像(如邊緣圖→照片)。
- 判別器:判斷生成圖像與目標圖像的相似性,推動生成器逼近真實圖像分布。
2. 生成器架構(U-Net)
- 編碼器(Encoder):逐步提取特征,降低分辨率(如?
UNetDown(3, 64)
?→?UNetDown(512, 512)
)。 - 解碼器(Decoder):逐步恢復圖像細節,提高分辨率(如?
UNetUp(512, 512)
?→?UNetUp(256, 64)
)。 - 跳躍連接(Skip Connections):將編碼器的特征圖與解碼器對應層拼接,保留圖像結構信息。
- 最終輸出層:使用?
Upsample + Conv2d + Tanh
?生成目標圖像。
3. 判別器架構(PatchGAN)
-
- 局部真實性判斷:輸出二維矩陣,評估圖像中每個局部區域的真實性(而非整張圖像)。
- 優勢:關注局部紋理和結構,提升生成圖像的逼真度。