Оцінювання 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

Зразок зображень Pokemon, згенерованих GAN.

Глибоке навчання для зображень із PyTorch

Fréchet Inception Distance

  • Inception: модель класифікації зображень
  • Відстань Фреше: міра відстані між двома розподілами ймовірності
  • Fréchet Inception Distance:
    1. Використайте Inception, щоб виділити ознаки з вибірок реальних і штучних зображень
    2. Обчисліть середні та коваріації ознак для реальних і штучних зображень
    3. Обчисліть відстань Фреше між реальним і штучним нормальними розподілами
  • Низький FID = фейки подібні до тренувальних даних і різноманітні
  • FID < 10 = добре
Глибоке навчання для зображень із PyTorch

FID у 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)
  • Імпортуйте FrechetInceptionDistance
  • Створіть екземпляр метрики FID
  • Оновіть метрику штучними зображеннями:
    • Помножте на 255
    • Перетворіть на torch.uint8
  • Аналогічно, оновіть метрику реальними зображеннями
  • Обчисліть значення метрики
Глибоке навчання для зображень із PyTorch

Давайте потренуємось!

Глибоке навчання для зображень із PyTorch

Preparing Video For Download...