BK-SDM读图片逻辑-评估结果FID逻辑

以inherit为例

这是借助bksdm的代码用于我的A-sdm的生成
bksdm中2个关键路径是
src/genetate.py
script/eval_scores.sh

一 以generate.py文件进行生成
借助ms-coco的csv文件里面的30K个提示词和图片名字,来生成图片,并保存

share/huanggao/zjc/code_i2i_ti2/CombineSD_t2i/03_t2i_inherit_metric_coco/01_inherit_inter_dn0up3/generate.py

def parse_args():### data_listparser.add_argument("--data_list", type=str, default="/share/huanggao/zjc/code_BK-SDM/BK-SDM-main/data/mscoco_val2014_30k/metadata.csv")  

文件/share/huanggao/xxx/data/mscoco_val2014_30k/metadata.csv

 

csv文件读取

file_list = get_file_list_from_csv(args.data_list)params_str = pipeline.get_sdm_params()t0 = time.perf_counter()for batch_start in range(0, len(file_list), args.batch_sz):  # 0-文件总数,1个1个取batch_end = batch_start + args.batch_sz# (i)-> (i+1) img_names = [file_info[0] for file_info in file_list[batch_start: batch_end]]  # 第一个是文件名val_prompts = [file_info[1] for file_info in file_list[batch_start: batch_end]] # 第二个是提示此imgs = pipeline.generate(prompt = val_prompts,n_steps = args.num_inference_steps,img_sz = args.img_sz)  # 提示词、步数、图大小for i, (img, img_name, val_prompt) in enumerate(zip(imgs, img_names, val_prompts)):img.save(os.path.join(save_dir_im512, img_name)) # img保存img.close()print(f"{batch_start + i}/{len(file_list)} | {img_name} {val_prompt}")print(f"---{params_str}")

0 从csv文件获取提示词和图片名字: metadata.csv -> file_list -> val_prompts, img_names
1 val_prompts作为提示词生成图img
2 生成结果以img_names来进行保存

get_file_list_from_csv来读取csv文件
get_file_list_from_csv(args.data_list)

from utils.misc import get_file_list_from_csv, change_img_size

utils.misc文件里面

import csv
import os
from PIL import Imagedef get_file_list_from_csv(csv_file_path):file_list = []with open(csv_file_path, newline='') as csvfile:csv_reader = csv.reader(csvfile)        next(csv_reader, None) # Skip the header rowfor row in csv_reader: # (row[0], row[1]) = (img name, txt prompt) file_list.append(row)return file_listdef change_img_size(input_folder, output_folder, resz=256):img_list = sorted([file for file in os.listdir(input_folder) if file.endswith('.jpg')])for i, filename in enumerate(img_list):img = Image.open(os.path.join(input_folder, filename))img.resize((resz, resz)).save(os.path.join(output_folder, filename))img.close()if i % 2000 == 0:print(f"{i}/{len(img_list)} | {filename}: resize to {resz}")

二 以eval_scores.sh文件进行结果的评估

BK-SDM-main/scripts/eval_scores.sh

GPU_NUM=1
MODEL_ID=xxx_results

MODEL_ID=xxx_results
是评估结果的地址,这个需要就在sh文件当前路径下

IMG_PATH=./results/$MODEL_ID/im256echo "=== Inception Score (IS) ==="
IS_TXT=./results/$MODEL_ID/im256_is.txt
fidelity --gpu $GPU_NUM --isc --input1 $IMG_PATH | tee $IS_TXT
echo "============"echo "=== Fréchet Inception Distance (FID) ==="
FID_TXT=./results/$MODEL_ID/im256_fid.txt
NPZ_NAME_gen=./results/$MODEL_ID/im256_fid.npz
NPZ_NAME_real=./data/mscoco_val2014_41k_full/real_im256.npz
CUDA_VISIBLE_DEVICES=$GPU_NUM python3 -m pytorch_fid --save-stats $IMG_PATH $NPZ_NAME_gen
CUDA_VISIBLE_DEVICES=$GPU_NUM python3 -m pytorch_fid $NPZ_NAME_real $NPZ_NAME_gen | tee $FID_TXT
echo "============"echo "=== CLIP Score ==="
CLIP_TXT=./results/$MODEL_ID/im256_clip.txt
CUDA_VISIBLE_DEVICES=$GPU_NUM python3 src/eval_clip_score.py --img_dir $IMG_PATH --save_txt $CLIP_TXT
echo "============"

FID是用pytorch_fid库进行评测的
下面详解FID的评测方式:
./data/mscoco_val2014_41k_full/real_im256.npz是真实图片

这个npz文件就是对比的真实结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/806119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【智能算法】省时方便,智能算法统计指标——一键运行~

目录 1.常用统计指标2.参数统计检验3.结果展示4.自定义修改测试框架 1.常用统计指标 测试智能算法性能时,常常会用到以下5种常用指标,简单不赘述: 最优值、最差值、均值、中位数、标准差 2.参数统计检验 单纯依靠常用统计指标说服力不足&…

07 Php学习:运算符

PHP 算术运算符 在 PHP 中,算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法、取余数,负数运算、取反和并置运算。以下是这些运算符的详细解释和示例: 加法运算符 :用于将两个数值相加。 $a 5; $b 3;…

初识--数据结构

什么是数据结构?我们为什么要学习数据结构呢....一系列的问题就促使我们不得不了解数据结构。我们不禁要问了,学习C语言不就够了吗?为什么还要学习数据结构呢?这是因为:数据结构能够解决C语言解决不了的问题&#xff0…

【Java基础题型】矩阵的对角线求和

一、题目-矩阵 求一个33矩阵对角线元素之和。 输入格式 矩阵 输出格式 主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7 二、参考的知识 这里给大家送点英语单词,记得学习: p r i m a r y. adj.主要的;初…

软考中级之软件设计师---知识点汇总总结

软考中级之软件设计师---知识点汇总总结 软考介绍资格设置证书样本 计算机组成原理操作系统1. 进程的三态模型2. 磁盘调度算法 计算机网络1. 网络的分类2. 各层的互连设备3. 网络模型,协议簇4. 传输层协议TCP、UDP4.1 TCP (Transmission Control Protocol,传输控制协…

day77 JSPServlet

知识点: 1Web工程 2JSP是什么?JSP页面包含哪些内容?JSP页面执行原理 3JSP九大内置对象,及四个作用域 4什么是SERVLET?及servlet相关API 5MVC模型 6EL表达式及JSTL标签库的使用 7在JSP页面实现分页和多条件查询 …

【UE5 C++】访问修饰符public/protected/private继承

限制类与类之间访问级别的方法 public 在类中创建一个public的部分,即" public: ",public之下的所有内容都是公共的,可以在类之间访问 private(最常见) 如若没有指明修饰符,则默认为private 不能在类的外…

【LAMMPS学习】七、加速性能(4)加速器包

7. 加速性能 7.1.基准测试 7.2.测试性能 7.3.通用技巧 7.4.加速器包 LAMMPS 中添加了各种pair_style、fixes、compute 和其他命令的加速版本,其运行速度通常比标准非加速版本更快。有些需要您的系统上存在适当的硬件,例如GPU 或 Intel Xeon Phi 协处…

每日OJ题_BFS解决FloodFill②_力扣200. 岛屿数量

目录 力扣200. 岛屿数量 解析代码 力扣200. 岛屿数量 200. 岛屿数量 难度 中等 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方…

聊聊自己12岁车龄的福克斯

1. 2005年,国内进入了 福克斯 ( 参数 | 询价 ) 这台车,中间经历了两次换代,而我自己的这台车则是第一批进入国内的福克斯,它的到来颠覆了大家当时对汽车设计的印象,在十年前家用车都是捷达、桑塔纳等那些古板油腻的车…

全球变暖蓝桥杯2018省赛真题

全球变暖蓝桥杯2018省赛真题 DFS大法 全球变暖 #include <bits/stdc.h> using namespace std; #define int long long bool flag; char a[1010][1010]; int cnt,n,ans0,pre_ans0,d[4][2] {1,0,-1,0,0,1,0,-1}; void dfs(int x,int y){if(x>n||x<0||y>n||y<…

德勤:《中国AI智算产业2024年四大趋势》

2023年《数字中国建设整体布局规划》的发布&#xff0c;明确了数字中国是构建数字时代竞争优势的关键支撑&#xff0c;是继移动互联网时代以来经济增长新引擎。当我们谈论数字中国的构建&#xff0c;不仅仅是在讨论一个国家级的技术升级&#xff0c;而是关乎如何利用数字技术来…

操作系统(第四周 第一堂)

目录 回顾 进程调度&#xff08;process schedule&#xff09; 进程角度 计算机整体——调度队列 队列图 调度程序 总结 回顾 上一篇文章的重点只有一个————进程 对进程的了解包含以下几个方面&#xff1a;1、程序如何变为进程 2、进程在内存中的存储形式 3、进…

【网站项目】校园二手交易平台小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

力扣HOT100 - 189. 轮转数组

解题思路&#xff1a; 三次反转。 先反转一次&#xff0c;再根据 k 拆分成两部分各反转一次。 class Solution {public void rotate(int[] nums, int k) {k % nums.length;reverse(nums, 0, nums.length - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.length - 1);}pu…

相机参数的意义

相机标定的意义&#xff1a; 相机标定&#xff1a;使用带有pattern的标定板来求解相机参数的过程&#xff1b;用一个简化的数学模型来代表复杂的三维到二维的成像过程&#xff1b;相机参数包括&#xff1a;相机内参&#xff08;焦距等&#xff09;&#xff0c;外参&#xff08…

[CUDA 学习笔记] 矩阵转置算子优化

矩阵转置算子优化 矩阵转置是一种基础的矩阵操作, 即将二维矩阵的行列进行反转. 本文主要围绕行主序的二维单精度矩阵的转置考虑相关的优化. 以下 kernel 笔者均是在 NVIDIA V100 (7.0 算力) 上进行测试的, 且选择矩阵的行列维度大小为 M2300 N1500. Version 0. 朴素实现 _…

处理慢查询时使用explain一般看哪些字段

explain之后会出现这些&#xff0c;一般就只看下面这几个字段 select_type就是查询类型&#xff0c;在我司的业务里基本上用的都是简单查询&#xff0c;在内存中处理逻辑&#xff0c;复杂查询的话排查问题比较麻烦&#xff0c;引起慢查询还会拖累数据库&#xff0c;数据库里还…

three.js尝试渲染gbl模型成功!(三)

参照教程&#xff1a;https://cloud.tencent.com/developer/article/2276766?areaSource102001.5&traceId88k805RaN_gYngNdKvALJ &#xff08;作者&#xff1a;九仞山&#xff09; 通过最近两天查three.js入门教程了解到 这玩应支持包括 .obj、.gltf等类型的模型结构。 g…

微服务-网关

在微服务架构中&#xff0c;每个服务都是一个可以独立开发和运行的组件&#xff0c;而一个完整的微服务架构由一系列独立运行的微服务组成。其中每个服务都只会完成特定领域的功能&#xff0c;比如订单服务提供与订单业务场景有关的功能、商品服务提供商品展示功能等。各个微服…