Utvärdera GAN:er

Djupinlärning för bilder med PyTorch

Michal Oleszak

Machine Learning Engineer

Generera bilder

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()
  • Skapa en slumpmässig brusvektor
  • Skicka bruset till generatorn
  • Iterera över antalet bilder
  • Välj ut den i:te bilden från fake
  • Arrangera om bildens dimensioner
  • Plotta bilden
Djupinlärning för bilder med PyTorch

GAN-generationer

Exempel på Pokémon-bilder genererade av en GAN.

Djupinlärning för bilder med PyTorch

Fréchet Inception Distance

  • Inception: modell för bildklassificering
  • Fréchet-avstånd: avståndsmått mellan två sannolikhetsfördelningar
  • Fréchet Inception Distance:
    1. Använd Inception för att extrahera särdrag från både riktiga och falska bildurval
    2. Beräkna medelvärden och kovarianser för särdragen hos riktiga och falska bilder
    3. Beräkna Fréchet-avståndet mellan de riktiga och falska normalfördelningarna
  • Lågt FID = falska bilder liknar träningsdata och är varierade
  • FID < 10 = bra
Djupinlärning för bilder med PyTorch

FID i 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)
  • Importera FrechetInceptionDistance
  • Instantiera FID-måttet
  • Uppdatera måttet med falska bilder:
    • Multiplicera med 255
    • Konvertera till torch.uint8
  • Uppdatera på samma sätt med riktiga bilder
  • Beräkna måttvärdet
Djupinlärning för bilder med PyTorch

Nu kör vi en övning!

Djupinlärning för bilder med PyTorch

Preparing Video For Download...