Évaluer les GAN

Deep Learning pour les images avec PyTorch

Michal Oleszak

Machine Learning Engineer

Générer des images

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()
  • Créer un tenseur de bruit aléatoire
  • Passer le bruit au générateur
  • Itérer sur le nombre d'images
  • Découper fake pour sélectionner la iᵉ image
  • Réorganiser les dimensions de l'image
  • Tracer l'image
Deep Learning pour les images avec PyTorch

Générations d'un GAN

Exemple d'images de Pokémon générées par un GAN.

Deep Learning pour les images avec PyTorch

Fréchet Inception Distance

  • Inception : modèle de classification d'images
  • Distance de Fréchet : mesure entre deux distributions de probabilité
  • Fréchet Inception Distance :
    1. Utiliser Inception pour extraire des caractéristiques d'images réelles et générées
    2. Calculer moyennes et covariances des caractéristiques pour réelles et générées
    3. Calculer la distance de Fréchet entre les lois normales réelle et générée
  • FID faible = faux proches des données d'entraînement et variés
  • FID < 10 = bon
Deep Learning pour les images avec PyTorch

FID dans PyTorch

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)
  • Importer FrechetInceptionDistance
  • Instancier la métrique FID
  • Mettre à jour avec les images générées :
    • Multiplier par 255
    • Convertir en torch.uint8
  • De même, mettre à jour avec les images réelles
  • Calculer la valeur de la métrique
Deep Learning pour les images avec PyTorch

Passons à la pratique !

Deep Learning pour les images avec PyTorch

Preparing Video For Download...