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).
tensorflow==1.14
or (tensorflow==1.15
and tensorflow-gan==1.0.0.dev0
) or (tensorflow>=2
and tensorflow-gan>=2.0.0
)fid.py
; if you are working with TPUs, use fid_tpu.py
and pass a Tensorflow Session and a TPUStrategy as additional arguments.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.BATCH_SIZE
reduces GPU/TPU memory usage, but at the cost of a slight slowdown.act1
and act2
from another classifier, call activations2distance(act1, act2)
. act1
and act2
can be numpy arrays of a same arbitrary shape [N, d]
.