图像相似度的评价指标 : FID(Fréchet Inception Distance)

2023-11-06

FID(Fréchet Inception Distance)
是用来计算真实图像与生成图像的特征向量间距离的一种度量。如果FID值越小,则相似程度越高。最好情况即是FID=0,两个图像相同。

实际计算:
参考链接:https://machinelearningmastery.com/how-to-implement-the-frechet-inception-distance-fid-from-scratch/

在这里插入图片描述

在这里插入图片描述

# example of calculating the frechet inception distance in Keras
import numpy
import os
import cv2
import argparse
import torch
import numpy as np
from scipy.linalg import sqrtm
from keras.applications.inception_v3 import InceptionV3
from keras.applications.inception_v3 import preprocess_input


# os.environ["TF_CPP_MIN_LOG_LEVEL"]='2' # 只显示 warning 和 Error
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '3'   # 只显示 Error

# calculate frechet inception distance
def calculate_fid(model, images1, images2):
	# calculate activations
	act1 = model.predict(images1)
	act2 = model.predict(images2)
	# calculate mean and covariance statistics
	mu1, sigma1 = act1.mean(axis=0), np.cov(act1, rowvar=False)
	mu2, sigma2 = act2.mean(axis=0), np.cov(act2, rowvar=False)
	# calculate sum squared difference between means
	ssdiff = numpy.sum((mu1 - mu2)**2.0)
	# calculate sqrt of product between cov
	covmean = sqrtm(np.dot(sigma1, sigma2))
	# check and correct imaginary numbers from sqrt
	if np.iscomplexobj(covmean):
		covmean = covmean.real
	# calculate score
	fid = ssdiff + np.trace(sigma1 + sigma2 - 2.0 * covmean)
	return fid


def data_list(dirPath):
	generated_Dataset = []
	real_Dataset = []
	for root, dirs, files in os.walk(dirPath):
		for filename in sorted(files):  # sorted已排序的列表副本
			# 判断该文件是否是目标文件
			if "generated" in filename:
				generatedPath = root + '/' + filename
				generatedImg = cv2.imread(generatedPath).astype('float32')
				generated_Dataset.append(generatedImg)
				# 对比图片路径
				realPath = root + '/' + filename.replace('generated', 'real')
				realImg = cv2.imread(realPath).astype('float32')
				real_Dataset.append(realImg)
	return generated_Dataset, real_Dataset

if __name__ == '__main__':
	### 参数设定
	parser = argparse.ArgumentParser()
	# parser.add_argument('--dataset_dir', type=str, default='./results/hrnet/', help='results')
	parser.add_argument('--dataset_dir', type=str, default='./results/ssngan/', help='results')
	parser.add_argument('--name', type=str, default='sketch', help='name of dataset')
	opt = parser.parse_args()

	# 数据集
	dirPath = os.path.join(opt.dataset_dir, opt.name)
	generatedImg, realImg = data_list(dirPath)
	dataset_size = len(generatedImg)
	print("数据集:", dataset_size)

	images1 = torch.Tensor(generatedImg)
	images2 = torch.Tensor(realImg)
	print('shape: ', images1.shape, images2.shape)

	# 将全部数据集导入
	# prepare the inception v3 model
	model = InceptionV3(include_top=False, pooling='avg')

	# pre-process images(归一化)
	images1 = preprocess_input(images1)
	images2 = preprocess_input(images2)

	# fid between images1 and images2
	fid = calculate_fid(model, images1, images2)
	print('FID : %.3f' % fid)
	print('FID_average : %.3f' % (fid / dataset_size))



在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像相似度的评价指标 : FID(Fréchet Inception Distance) 的相关文章

  • OpenCV样例calibration

    1 将图片地址写入到xml 创建工程 运行一下文件 C Program Files opencv sources samples cpp imagelist creator cpp cmd运行 cd至 工程目录 x64 Debug gt 命
  • macOS版tensorflow实现GPU加速

    intel版本的教程 我没有M1的所以没试 官方教程链接https developer apple com metal tensorflow plugin https developer apple com metal tensorflow
  • react hook之React.lazy()

    也不怕大家笑话 看到react lazy 我第一个想到的居然是vue 中的一个vue lazy 用户懒加载的插件 但是这两个差别还是有点大的 好了我们言归正传 开始来看看我们的react lazy 其实看见lazy 大家见名知意 就知道是来

随机推荐

  • 网络概述介绍

    网络概括 计算机网络 通过传输介质 通信设施和网络通信协议 把分散在不同地点的计算机设备互联起来 实现资源共享和数据传输 网络编程 编写程序代码将两个或者两个以上的设备进行数据传输 OSI参考模型 将复杂的网络问题根据功能划分到不同层次上
  • tensflower 安装

    V型从v
  • Mysql的执行日志

    Mysql的执行日志可以帮助我们确定在项目中是否完了了连接数据库 尤其是在生产环境中 直接使用命令方式进行定位能够解决很多问题 下面介绍几个常用命令 准备 确定日志开启状态 首先确认你日志是否启用了mysql gt show variabl
  • 一文入门车载以太网,吐血整理!不看后悔!

    前言 近些年来 随着为了让汽车更加安全 智能 环保等 一系列的高级辅助驾驶功能喷涌而出 未来满足这些需求 就对传统的电子电器架构带来了严峻的考验 需要越来越多的电子部件参与信息交互 导致对网络传输速率 稳定性 负载率等方面都提出了更为严格的
  • [数据库] Navicat for MySQL事件Event实现数据每日定期操作

    在我们操作数据库过程中 通常会遇到一些某个时间点操作数据库的问题 例如 1 每天凌晨12点对数据库进行定时备份 结算和汇总 2 每天凌晨2点删除数据库前三天的数据 3 插入某个数据超过一定时间改变某个值的状态 比如预警系统 这里就需要通过E
  • 耦合和解耦的理解 vue高耦合和低耦合的理解

    耦合 耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象 在软件工程中 对象之间的耦合度就是对象之间的依赖性 对象之间的耦合越高 维护成本越高 因 此对象的设计应使类和构件之间的耦合最小 解耦 解耦 字面意
  • OpenAI Translator

    简介 OpenAI Translator 一款基于 ChatGPT API 的划词翻译浏览器插件和跨平台桌面端应用 使用 ChatGPT API 进行划词翻译和文本润色 借助了 ChatGPT 强大的翻译能力 帮助用户更流畅地阅读外语和编辑
  • Mac下静态库和动态库的创建和使用

    1 演示代码 add cpp int add int a int b return a b main cpp include
  • js三元表达式

  • Ubuntu13下调试USB AUDIO的一些记录

    最近想玩玩LINUX 于是双系统装了一个Ubuntu13 04 在新系统下用着都还好 不过我自己DIY的USB DAC出了问题 在WIN7下能正常工作 但是在Ubuntu下就爆音不断 很明显是音频数据流断流引起的 这说明stm32上的固件与
  • K8S集群管理

    集群管理 1 集群管理 1 1 节点管理 1 1 1 令牌管理 1 1 2 集群扩缩容 1 1 3 集群升级 1 1 4 证书管理 1 2 数据管理 1 2 1 ETCD基础 1 2 2 ETCD实践 1 2 3 备份还原 1 2 4 ET
  • 4、一维数组、遍历数组、冒泡排序、插入排序、选择排序

    一维数组 定义形式1 数据类型 数组变量名 new 数据类型 数组长度 例1 int array new int 10 例2 char array new char 8 定义形式2 数据类型 数组变量名 值1 值2 值3 值n 例1 int
  • 安装企业版宝塔加美化模版

    宝塔企业7 9 9指令 yum install y wget wget O install sh http jsjs xn n6q058g tk down php 65f0164d0846e99b28c9416a65b66bdd sh sh
  • Storm简介

    场景 伴随着信息科技日新月异的发展 信息呈现出爆发式的膨胀 人们获取信息的途径也更加多样 更加便捷 同时对于信息的时效性要求也越来越高 举个搜索场景中的例子 当一个卖家发布了一条宝贝信息时 他希望的当然是这个宝贝马上就可以被卖家搜索出来 点
  • Redis学习记录(二)

    redis命令 基本命令 心跳命令 ping 读写键值命令 set get DB切换 select 数据库切换 查看数据库中的key数量 dbsize 删除当前库中的数据 flushdb 删除所有库中的数据 flushall 退出客户端命令
  • 【语义分割】DFANet -- Deep Feature Aggregation for Real-Time Semantic Segmentation

    efficient inferrence speed and high accuracy with high resolution Architecture DFANet从整体上可看做是encoder decoder结构 包括四个部分 th
  • sklearn中的XGBClassifier参数详解

    前言 1 Xgboost简介 Xgboost是Boosting算法的其中一种 Boosting算法的思想是将许多弱分类器集成在一起 形成一个强分类器 因为Xgboost是一种提升树模型 所以它是将许多树模型集成在一起 形成一个很强的分类器
  • Linux内核模块管理(查看、添加和删除)

    Linux 的内核会在启动过程中自动检验和加载硬件与文件系统的驱动 一般这些驱动都是用模块的形式加载的 使用模块的形式保存驱动 可以不直接把驱动放入内核 有利于控制内核大小 模块的全称是动态可加载内核模块 它是具有独立功能的程序 可以被单独
  • Java多线程问题--wait()和notify()

    本文内容部分引自 Java多线程编程核心技术 感谢作者 代码地址 https github com xianzhixianzhixian thread git 介绍wait 和notify 的使用以及注意事项 1 wait 方法是Objec
  • 图像相似度的评价指标 : FID(Fréchet Inception Distance)

    FID Fr chet Inception Distance 是用来计算真实图像与生成图像的特征向量间距离的一种度量 如果FID值越小 则相似程度越高 最好情况即是FID 0 两个图像相同 实际计算 参考链接 https machinele