Einführung in FID im maschinellen Lernen

Einführung in FID im maschinellen Lernen

Inhaltsverzeichnis

  1. Einführung
  2. Geschichte von FID
  3. Theoretische Ableitung
  4. Verwendung der PyTorch-Beispielbeschreibung
  5. abschließend
  6. Verweise

1. Einleitung

Generative Adversarial Networks (GANs) sind leistungsstarke Modelle für maschinelles Lernen zur Generierung realistischer synthetischer Daten. Um den Unterschied zwischen den vom Generator erzeugten Bildern und echten Bildern bewerten zu können, benötigen wir eine effiziente Bewertungsmetrik. Eine der am häufigsten verwendeten Metriken ist die Fréchet Inception Distance (FID), die die Qualität und Vielfalt der generierten Bilder kombiniert und ein zuverlässiges Vergleichsmaß bietet.

In diesem Artikel stellen wir den Hintergrund, die Geschichte, die theoretische Ableitung von FID und die Verwendung von FID in PyTorch zur Bewertung der Leistung des Generators vor.

2. Geschichte von FID

FID wurde 2017 von Martin Heusel et al. vorgeschlagen. Sie stellen fest, dass herkömmliche Bewertungsmetriken wie MSE oder SSIM auf Pixelebene die semantischen Unterschiede zwischen generierten und realen Bildern nicht gut erfassen. Daher schlugen sie FID als genaueren Bewertungsindikator vor.

3. Theoretische Herleitung

Die Berechnung von FID basiert auf zwei Schlüsselkonzepten: Merkmalsextraktor und Kovarianzmatrix.

Zunächst benötigen wir ein Deep-Learning-Modell zum Extrahieren von Bildmerkmalen. Typischerweise verwenden wir Inception-Netzwerke (oder andere ähnliche Netzwerke), die auf großen Datensätzen vorab trainiert wurden, als Merkmalsextraktoren.

Für eine gegebene reale Bildverteilung P und eine generierte Bildverteilung Q können wir einen Merkmalsextraktor verwenden, um Merkmalsvektoren aus jeder Verteilung zu extrahieren. Dann berechnen wir die Kovarianzmatrix dieser beiden Sätze von Eigenvektoren und berechnen den Fréchet-Abstand zwischen ihnen . FID ist die Quadratwurzel der Fréchet-Distanz.

Nehmen Sie insbesondere an, dass der Eigenvektorsatz von P A und der Eigenvektorsatz von Q B ist und dass ihre Mittelwertvektoren jeweils mu_P und mu_Q sind und ihre Kovarianzmatrizen sigma_P bzw. sigma_Q sind. Dann lautet die Berechnungsformel des FID wie folgt:

FID(P, Q) = ||mu_P - mu_Q||^2 + Tr(sigma_P + sigma_Q - 2*sqrt(sigma_P * sigma_Q))

Unter diesen repräsentiert ||.|| die euklidische Norm, Tr(.) repräsentiert die Trace-Operation und sqrt(.) repräsentiert die Elementebene Quadratwurzeloperation.

4. PyTorch-Beispielverwendung

Schauen wir uns nun an, wie man FID in PyTorch verwendet.

Zuerst müssen wir das vorab trainierte Inception-Netzwerk laden. Dies kann erreicht werden durchtorchvision.models.inception_v3:

import torch
import torchvision.models as models

def load_inception_model():
    inception = models.inception_v3(pretrained=True)
    inception.eval()
    return inception

Mit diesem Modell können wir dann die Merkmalsvektoren der realen und generierten Bilder extrahieren und den FID berechnen:

import numpy as np
from scipy.linalg import sqrtm

def calculate_fid(inception, real_images, generated_images):
    real_features = inception(real_images)[0].view(real_images.shape[0], -1)
    generated_features = inception(generated_images)[0].view(generated_images.shape[0], -1)

    mu_real = torch.mean(real_features, dim=0)
    mu_generated = torch.mean(generated_features, dim=0)
    
    cov_real = np.cov(real_features.detach().numpy().T)
    cov_generated = np.cov(generated_features.detach().numpy().T)

    diff = mu_real - mu_generated
    sqrt_cov = sqrtm(cov_real.dot(cov_generated))
    fid = np.real(diff.dot(diff) + np.trace(cov_real + cov_generated - 2 * sqrt_cov))
    return np.sqrt(fid)

5. Schlussfolgerung

FID ist eine leistungsstarke Metrik zur Bewertung der Leistung generativer gegnerischer Netzwerke. Es kombiniert die Qualität und Vielfalt der generierten Bilder und bietet ein zuverlässiges Vergleichsmaß. Wir können FID mithilfe des vorab trainierten Inception-Netzwerks und der oben abgeleiteten Formel berechnen. In PyTorch können wir problemlos Merkmalsvektoren extrahieren und den FID-Wert berechnen.

6. Referenzen

  • Heusel, M., Ramsauer, H., Unterthiner, T., Nessler, B., & Hochreiter, S. (2017). GANs, die durch eine Zwei-Zeitskalen-Aktualisierungsregel trainiert werden, konvergieren zu einem Nash-Gleichgewicht. In Fortschritte in neuronalen Informationsverarbeitungssystemen (S. 6629-6640).

Bitte beachten Sie, dass der obige Inhalt nur die grundlegenden Konzepte und die Verwendung von FID beim maschinellen Lernen vorstellt und keine detaillierte mathematische Ableitung enthält. Für einen detaillierten Ableitungsprozess und detailliertere theoretische Details beziehen Sie sich bitte auf relevante Veröffentlichungen oder Fachliteratur.

Acho que você gosta

Origin blog.csdn.net/qq_24951479/article/details/133914575
Recomendado
Clasificación