GANの評価

PyTorch で学ぶ画像向け Deep Learning

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 で学ぶ画像向け Deep Learning

GANの生成例

GANが生成したポケモン画像の例。

PyTorch で学ぶ画像向け Deep Learning

Fréchet Inception Distance

  • Inception:画像分類モデル
  • フレシェ距離:2つの確率分布間の距離
  • FID(Fréchet Inception Distance):
    1. Inceptionで実画像と偽画像の特徴を抽出
    2. 実・偽の特徴の平均と共分散を計算
    3. 実・偽の正規分布間のフレシェ距離を計算
  • 低いFID=訓練データに類似かつ多様
  • FID < 10 は良好
PyTorch で学ぶ画像向け Deep Learning

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 で学ぶ画像向け Deep Learning

¡Vamos a practicar!

PyTorch で学ぶ画像向け Deep Learning

Preparing Video For Download...