GAN's evalueren

Deep Learning voor afbeeldingen met PyTorch

Michal Oleszak

Machine Learning Engineer

Afbeeldingen genereren

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()
  • Maak willekeurige ruis-tensor
  • Geef ruis aan de generator
  • Itereer over het aantal afbeeldingen
  • Slice fake om de i-de afbeelding te pakken
  • Herschik de afbeeldingsdimensies
  • Plot de afbeelding
Deep Learning voor afbeeldingen met PyTorch

GAN-generaties

Voorbeeld van door een GAN gegenereerde Pokémon-afbeeldingen.

Deep Learning voor afbeeldingen met PyTorch

Fréchet Inception Distance

  • Inception: model voor beeldclassificatie
  • Fréchet-afstand: afstand tussen twee kansverdelingen
  • Fréchet Inception Distance:
    1. Gebruik Inception om features uit echte en nepafbeeldingen te halen
    2. Bereken gemiddelden en covarianties van de features voor echt en nep
    3. Bereken de Fréchet-afstand tussen de echte en neppe normale verdelingen
  • Lage FID = fakes lijken op trainingsdata en zijn divers
  • FID < 10 = goed
Deep Learning voor afbeeldingen met PyTorch

FID in 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)
  • Importeer FrechetInceptionDistance
  • Maak de FID-metric aan
  • Update de metric met nepafbeeldingen:
    • Vermenigvuldig met 255
    • Converteer naar torch.uint8
  • Update de metric op dezelfde manier met echte afbeeldingen
  • Bereken de metricwaarde
Deep Learning voor afbeeldingen met PyTorch

Laten we oefenen!

Deep Learning voor afbeeldingen met PyTorch

Preparing Video For Download...