Skip to content

CPU/GPU/TPU implementation of the Fréchet Inception Distance

Notifications You must be signed in to change notification settings

tsc2017/Frechet-Inception-Distance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Fréchet Inception Distance

Tensorflow implementation of the "Fréchet Inception Distance" (FID) between two image distributions, along with a numpy interface. The FID can be used to evaluate generative models by calculating the FID between real and fake data distributions (lower is better).

Major Dependencies

  • tensorflow==1.14 or (tensorflow==1.15 and tensorflow-gan==1.0.0.dev0) or (tensorflow>=2 and tensorflow-gan>=2.0.0)

Features

  • Fast, easy-to-use and memory-efficient
  • No prior knowledge about Tensorflow is necessary if your are using CPUs or GPUs
  • Makes use of TF-GAN
  • Downloads InceptionV1 automatically
  • Compatible with both Python 2 and Python 3

Usage

  • If you are working with GPUs, use fid.py; if you are working with TPUs, use fid_tpu.py and pass a Tensorflow Session and a TPUStrategy as additional arguments.
  • Call get_fid(images1, images2), where images1, images2 are numpy arrays with values ranging from 0 to 255 and shape in the form [N, 3, HEIGHT, WIDTH] where N, HEIGHT and WIDTH can be arbitrary. dtype of the images is recommended to be np.uint8 to save CPU memory.
  • A smaller BATCH_SIZE reduces GPU/TPU memory usage, but at the cost of a slight slowdown.
  • If you want to compute a general "Fréchet Classifier Distance" with activations (e.g., outputs of the last pooling layer) act1 and act2 from another classifier, call activations2distance(act1, act2). act1 and act2 can be numpy arrays of a same arbitrary shape [N, d].

Examples

GPU: Example In Colab

TPU and TF1: Example In Colab

TPU and TF2: Example In Colab

Links

About

CPU/GPU/TPU implementation of the Fréchet Inception Distance

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages