(num_real_samples,
              num_fake_samples,
              netG,
              device,
              seed,
              dataset_name,
              batch_size=50,
              verbose=True,
              stats_file=None,
              log_dir='./log')
Computes FID stats using functions that store images in memory for speed and fidelity.
    Fidelity since by storing images in memory, we don't subject the scores to different read/write
    implementations of imaging libraries.

    Args:
        num_real_samples (int): The number of real images to use for FID.
        num_fake_samples (int): The number of fake images to use for FID.
        netG (Module): Torch Module object representing the generator model.
        device (str): Device identifier to use for computation.
        seed (int): The random seed to use.
        dataset_name (str): The name of the dataset to load.
        batch_size (int): The batch size to feedforward for inference.
        verbose (bool): If True, prints progress.
        stats_file (str): The statistics file to load from if there is already one.
        log_dir (str): Directory where feature statistics can be stored.

    Returns:
        float: Scalar FID score.
Computes FID stats using functions that store images in memory for speed and fidelity.
    Fidelity since by storing images in memory, we don't subject the scores to different read/write
    implementations of imaging libraries.
Computes FID stats using functions that store images in memory for speed and fidelity . Fidelity since by storing images in memory we don t subject the scores to different read / write implementations of imaging libraries .
def fid_score(num_real_samples,
              num_fake_samples,
              netG,
              device,
              seed,
              dataset_name,
              batch_size=50,
              verbose=True,
              stats_file=None,
              log_dir='./log'):
    """
    Computes FID stats using functions that store images in memory for speed and fidelity.
    Fidelity since by storing images in memory, we don't subject the scores to different read/write
    implementations of imaging libraries.

    Args:
        num_real_samples (int): The number of real images to use for FID.
        num_fake_samples (int): The number of fake images to use for FID.
        netG (Module): Torch Module object representing the generator model.
        device (str): Device identifier to use for computation.
        seed (int): The random seed to use.
        dataset_name (str): The name of the dataset to load.
        batch_size (int): The batch size to feedforward for inference.
        verbose (bool): If True, prints progress.
        stats_file (str): The statistics file to load from if there is already one.
        log_dir (str): Directory where feature statistics can be stored.

    Returns:
        float: Scalar FID score.
    """
    start_time = time.time()

    # Make sure the random seeds are fixed
    # torch.manual_seed(seed)
    random.seed(seed)
    np.random.seed(seed)

    # Setup directories
    inception_path = os.path.join(log_dir, 'metrics', 'inception_model')

    # Setup the inception graph
    inception_utils.create_inception_graph(inception_path)

    # Start producing statistics for real and fake images
    if device is not None:
        # Avoid unbounded memory usage
        gpu_options = tf.compat.v1.GPUOptions(allow_growth=True,
                                    per_process_gpu_memory_fraction=0.15,
                                    visible_device_list=str(device))
        config = tf.compat.v1.ConfigProto(gpu_options=gpu_options)

    else:
        config = tf.compat.v1.ConfigProto(device_count={'GPU': 0})

    with tf.compat.v1.Session(config=config) as sess:
        sess.run(tf.compat.v1.global_variables_initializer())

        m_real, s_real = compute_real_dist_stats(num_samples=num_real_samples,
                                                 sess=sess,
                                                 dataset_name=dataset_name,
                                                 batch_size=batch_size,
                                                 verbose=verbose,
                                                 stats_file=stats_file,
                                                 log_dir=log_dir,
                                                 seed=seed)

        m_fake, s_fake = compute_gen_dist_stats(netG=netG,
                                                num_samples=num_fake_samples,
                                                sess=sess,
                                                device=device,
                                                seed=seed,
                                                batch_size=batch_size,
                                                verbose=verbose)

        FID_score = fid_utils.calculate_frechet_distance(mu1=m_real,
                                                         sigma1=s_real,
                                                         mu2=m_fake,
                                                         sigma2=s_fake)

        print("INFO: FID Score: {} [Time Taken: {:.4f} secs]".format(
            FID_score,
            time.time() - start_time))

        return float(FID_score)
def fid_score ( num_real_samples , num_fake_samples , netG , device , seed , dataset_name , batch_size = 50 , verbose = True , stats_file = None , log_dir = './log' ) : start_time = time . time ( ) # Make sure the random seeds are fixed # torch.manual_seed(seed) random . seed ( seed ) np . random . seed ( seed ) # Setup directories inception_path = os . path . join ( log_dir , 'metrics' , 'inception_model' ) # Setup the inception graph inception_utils . create_inception_graph ( inception_path ) # Start producing statistics for real and fake images if device is not None : # Avoid unbounded memory usage gpu_options = tf . compat . v1 . GPUOptions ( allow_growth = True , per_process_gpu_memory_fraction = 0.15 , visible_device_list = str ( device ) ) config = tf . compat . v1 . ConfigProto ( gpu_options = gpu_options ) else : config = tf . compat . v1 . ConfigProto ( device_count = { 'GPU' : 0 } ) with tf . compat . v1 . Session ( config = config ) as sess : sess . run ( tf . compat . v1 . global_variables_initializer ( ) ) m_real , s_real = compute_real_dist_stats ( num_samples = num_real_samples , sess = sess , dataset_name = dataset_name , batch_size = batch_size , verbose = verbose , stats_file = stats_file , log_dir = log_dir , seed = seed ) m_fake , s_fake = compute_gen_dist_stats ( netG = netG , num_samples = num_fake_samples , sess = sess , device = device , seed = seed , batch_size = batch_size , verbose = verbose ) FID_score = fid_utils . calculate_frechet_distance ( mu1 = m_real , sigma1 = s_real , mu2 = m_fake , sigma2 = s_fake ) print ( "INFO: FID Score: {} [Time Taken: {:.4f} secs]" . format ( FID_score , time . time ( ) - start_time ) ) return float ( FID_score )