評估 GAN

使用 PyTorch 進行影像深度學習

Michal Oleszak

Machine Learning Engineer

影像產生

num_images_to_generate = 9
noise = torch.randn(num_images_to_generate, 16)

with torch.no_grad(): fake = gen(noise)
print(f"Generated shape: {fake.shape}")
Generated shape: torch.Size([9, 3, 96, 96])
for i in range(num_images_to_generate):

image_tensor = fake[i, :, :, :]
image_permuted = image_tensor.permute(1, 2, 0)
plt.imshow(image_permuted) plt.show()
  • 建立隨機雜訊張量
  • 將雜訊傳入產生器
  • 依影像數量迭代
  • 切片 fake 取第 i 張
  • 調整影像維度順序
  • 繪出影像
使用 PyTorch 進行影像深度學習

GAN 生成結果

GAN 產生的寶可夢影像範例。

使用 PyTorch 進行影像深度學習

Fréchet Inception Distance

  • Inception:影像分類模型
  • Fréchet 距離:兩個機率分佈之間的距離度量
  • Fréchet Inception Distance:
    1. 用 Inception 從真實與假影像樣本擷取特徵
    2. 計算真實與假影像特徵的平均與共變異數
    3. 計算真實與假影像對應常態分佈的 Fréchet 距離
  • FID 越低=越像訓練資料且具多樣性
  • FID < 10=良好
使用 PyTorch 進行影像深度學習

在 PyTorch 中計算 FID

from torchmetrics.image.fid import \
FrechetInceptionDistance


fid = FrechetInceptionDistance(feature=64)
fid.update( (fake * 255).to(torch.uint8), real=False)
fid.update( (real * 255).to(torch.uint8), real=True)
fid.compute()
tensor(7.5159)
  • 匯入 FrechetInceptionDistance
  • 建立 FID 衡量指標
  • 以假影像更新指標:
    • 乘以 255
    • 轉為 torch.uint8
  • 以真實影像同樣更新指標
  • 計算指標值
使用 PyTorch 進行影像深度學習

一起來練習吧!

使用 PyTorch 進行影像深度學習

Preparing Video For Download...