首页 > 其他分享 >计算lpips

计算lpips

时间:2024-03-14 11:58:39浏览次数:27  
标签:path2 path1 img 计算 folder lpips os

import os
import torch
import lpips
from PIL import Image
from torchvision.transforms import ToTensor

# 初始化LPIPS模型
loss_fn = lpips.LPIPS(net='vgg')

def calculate_lpips(img_path1, img_path2):
    # 读取图像
    img1 = Image.open(img_path1)
    img2 = Image.open(img_path2)

    # 将图像转换为张量
    img1_tensor = ToTensor()(img1).unsqueeze(0)
    img2_tensor = ToTensor()(img2).unsqueeze(0)

    # 计算LPIPS
    lpips_value = loss_fn(img1_tensor, img2_tensor)

    return lpips_value.item()

# 文件夹路径
folder_path1 = 'your_folder_path1'
folder_path2 = 'your_folder_path2'

# 获取文件夹中的所有图像路径
image_paths1 = [os.path.join(folder_path1, img) for img in os.listdir(folder_path1) if img.endswith('.jpg')]
image_paths2 = [os.path.join(folder_path2, img) for img in os.listdir(folder_path2) if img.endswith('.jpg')]

# 确保两个文件夹中有相同名称的图像
assert set(os.path.basename(p) for p in image_paths1) == set(os.path.basename(p) for p in image_paths2), "The two folders must contain images with the same names."

# 计算并打印所有同名图像对的LPIPS
lpips_values = []
for img_name in os.listdir(folder_path1):
    if img_name.endswith('.jpg'):
        img_path1 = os.path.join(folder_path1, img_name)
        img_path2 = os.path.join(folder_path2, img_name)
        lpips_value = calculate_lpips(img_path1, img_path2)
        lpips_values.append(lpips_value)
        print(f'LPIPS between {img_path1} and {img_path2}: {lpips_value}')

# 计算并打印LPIPS的平均值
average_lpips = sum(lpips_values) / len(lpips_values)
print(f'Average LPIPS: {average_lpips}')

 

标签:path2,path1,img,计算,folder,lpips,os
From: https://www.cnblogs.com/yyhappy/p/18072525

相关文章

  • 京东广告算法架构体系建设--高性能计算方案最佳实践
    1、前言推荐领域算法模型的在线推理是一个对高并发、高实时有较强要求的场景。算法最初是基于Wide&Deep相对简单的网络结构进行建模,容易满足高实时、高并发的推理性能要求。但随着广告模型效果优化进入深水区,基于Transformer用户行为序列和Attention的建模逐渐成为主流,这个阶段......
  • 【计算机网络】数据链路层——无线局域网与VLAN
    IEEE802.11:无线局域网通用标准IEEE802.11是无线局域网通用的标准,它是由IEEE所定义的无线网络通信的标准。MAC帧头格式目的地址源地址:实际通信中的两个设备的地址接收端发送端:两个基站有很多帧头格式:刚才讲的是WDS。无线局域网1.有固定基础设施无线局域网2.无固定基......
  • MySQL 怎么计算一个连接占用多少资源
    在MySQL中,准确计算单个连接所消耗的资源是比较复杂的,因为许多资源是被所有连接共享的,例如缓冲池、缓存等。然而,我们可以估算出单个连接的内存占用,以及它的CPU使用情况。计算单个连接的内存占用要估算单个MySQL连接占用的内存,我们可以考虑以下几个方面:全局缓冲区:全局缓冲区(如I......
  • 在GPU上利用规约算法完成对数组元素累加的并行计算
    目录序言规约算法介绍GPU代码实现规约算法序言并行规约是一种适用于GPU平台的并行算法,主要提高求和、最值、均值、逻辑与和逻辑或等一类运算的并行度。若使用CPU计算,需要串行遍历所有元素得到上述运算的结果,但在GPU平台可以使用规约操作并行实现上述运算。规约算法介......
  • 大一下计算系统基础笔记
    大一下计算系统基础笔记W21.补码计算溢出的判断:a的补码+b的补码=(a+b)的补码最高位和次高位只有一个进位的时候,才有溢出,其余情况没有溢出,结果都正确最简单的理解方式:正数+正数,负数+负数,如果符号变了就溢出了正+负永远不溢出从原理上来看,计算机用补码表示数字,只有最高位进位没......
  • 【计算机毕业设计源码】基于OpenCV的人脸检测系统
    项目概况基于OpenCV的人脸检测系统可对人脸进行框线检测,利用OpenCV的检测算法对单个或多个人脸实现框线定位。运行环境基于OpenCV的人脸检测系统运行环境如下:Python:≥3.5OpenCV:≥4.0IDE工具:VisualStudioCode技术栈:Python+OpenCV+PyQt5主要功能基于Ope......
  • 模板匹配——金字塔图像计算gen_gauss_pyramid
           **计算高斯金字塔图像*dev_open_window(0,0,800,600,'black',WindowHandle)read_image(Image,'fix.png')**初始化显示dev_close_window()get_image_size(Image,Width,Height)dev_open_window(0,0,512,512,'blac......
  • 高性能计算——汇编语言(三)
    汇编语言(三)文章目录汇编语言(三)函数和递归(**FunctionsandRecursion**)栈(**TheStack**)**调用约定(CallingConventions)****内联(Inlining)****尾递归消除(TailCallElimination)**函数和递归(FunctionsandRecursion)在汇编语言中,“调用一个函数”,需要跳转......
  • 【计算机网络】数据链路层——动态划分信道之轮询访问介质控制
    之前的信道划分の介质访问控制信道划分介质访问控制(MAC,MultipleAccessControl)协议:基于多路复用技术划分资源。网络负载重:共享信道效率高,且公平网络负载轻:共享信道效率低随机访问MAC协议:用户根据意愿随机发送信息,发送信息时可独占信道带宽。网络负载重:产生冲突开销网络......
  • L2-033 简单计算器(Python)
    作者 陈越单位 浙江大学本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:从 S1​ 中弹......