代码:图像生成任务的平均ssim,psnr,lpips的计算

2024-06-01 05:44

本文主要是介绍代码:图像生成任务的平均ssim,psnr,lpips的计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 描述
  • 要求
  • 核心代码
    • ssim
    • psnr
    • lpips
  • 完整代码

描述

图像生成任务的平均ssim,psnr,lpips的计算。pred文件夹有生成的若干图片,gt文件夹真实的若干图片。要求图片名字有相关性。

要求

1.名称对应。名称一样或按照顺序。
2.图片像素MAX值为255。如果是灰度图要调整代码中的255为1.0
3.包版本分别为:
scikit-image 0.18.3
lpips 0.1.4
安装命令:

pip install scikit-image==0.18.3

以及

pip install lpips==0.1.4

核心代码

ssim

ssim_v = ssim(img1_np,img2_np, data_range=255.0, multichannel=True)

psnr

psnr_v = psnr(img1_np,img2_np, data_range=255.0)

lpips

lpips_val = lpips_model.forward(transform(img1_np).cuda(), transform(img2_np).cuda())

完整代码

import os
from tqdm import tqdm
import torch
import numpy as np
import lpips
from torchvision import transforms
lpips_model = lpips.LPIPS(net='alex').cuda()
from skimage.metrics import structural_similarity as ssim
from skimage.metrics import peak_signal_noise_ratio as psnr
test_folder = './test_folder'
out_folder = './out_folder'
ssim_list = []
psnr_list = []
lpip_list = []
img_size = 512
from PIL import Image
transform = transforms.Compose([transforms.ToTensor()])
list1 = sorted(os.listdir(test_folder))
list2 = sorted(os.listdir(out_folder))
for i,j in tqdm(zip(list1,list2),total=len(list1)):img1_path = os.path.join(test_folder,i)img2_path = os.path.join(out_folder,j)# img1 = Image.open(img1_path).convert('L')# img2 = Image.open(img2_path).convert('L')img1 = Image.open(img1_path)img2 = Image.open(img2_path)img1 = img1.resize((img_size,img_size))img2 = img2.resize((img_size,img_size))img1_np = np.array(img1)img2_np = np.array(img2)ssim_v = ssim(img1_np,img2_np, data_range=255.0, multichannel=True)psnr_v = psnr(img1_np,img2_np, data_range=255.0)lpips_val = lpips_model.forward(transform(img1_np).cuda(), transform(img2_np).cuda())ssim_list.append(ssim_v)psnr_list.append(psnr_v)lpip_list.append(lpips_val.item())print('ssim',np.mean(ssim_list))
print('psnr',np.mean(psnr_list))
print('lpips',np.mean(lpip_list))
print('OK')

这篇关于代码:图像生成任务的平均ssim,psnr,lpips的计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020135

相关文章

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L