首页 > 其他分享 >334

334

时间:2024-04-06 14:11:06浏览次数:13  
标签:img 334 backbone ssim input model lpips

from Utils.option import *
from data import test_dataloader
from Utils.utils import *
from Utils.metrics import *
# from Utils.metrics import ssim as ssim
from torchvision import utils as vutils
from models.network import Network as Net
import lpips
from Utils.option import *
import torch



def _eval(testLogger):

    test_datalaoder = test_dataloader(args.testset_path, batch_size=1)
    device = args.device
    loss_fn = lpips.LPIPS(net='vgg').to(device)

    backbone_model = Net(args.mode)
    backbone_model = backbone_model.to(device)
    state_dict = torch.load(args.test_model)
    backbone_model.load_state_dict(state_dict['backbone_model'])

    backbone_model = backbone_model.to(device)
    backbone_model.eval()
    torch.cuda.empty_cache()
    ssims_1, psnrs_1, lpips_1 = [], [], []

    for iter_idx, test_data in enumerate(test_datalaoder):
        input_img, label_img, name = test_data
        input_img = input_img.to(device)
        label_img = label_img.to(device)

        with torch.no_grad():

            # 1 test
            # pred = backbone_model(input_img, input_img)[2]

            # 2 test
            # prompt_img = backbone_model(input_img)[2]
            # pred = backbone_model(input_img, prompt_img)[2]

            # 3 test
            # prompt_img = backbone_model(input_img)[2]
            # prompt_img = backbone_model(input_img, prompt_img)[2]
            # pred = backbone_model(input_img, prompt_img)[2]

            # 4 test
            prompt_img = backbone_model(input_img)[2]
            prompt_img = backbone_model(input_img, prompt_img)[2]
            prompt_img = backbone_model(input_img, prompt_img)[2]
            pred = backbone_model(input_img, prompt_img)[2]


            per_psnr_1 = psnr(pred, label_img)
            per_ssim_1 = ssim(pred, label_img).item()
            per_lpips_value = loss_fn(pred, label_img).item()
            # print(per_lpips_value)

            ssims_1.append(per_ssim_1)
            psnrs_1.append(per_psnr_1)
            lpips_1.append(per_lpips_value)

        print(f'\n {name[0]} iter processing:{iter_idx + 1}   psnr:{per_psnr_1:.4f}  ssim:{per_ssim_1:.4f}  lpips:{per_lpips_value:.4f}', end='',flush=True)
        testLogger.write(f'\n {name[0]} iter processing:{iter_idx + 1}   psnr:{per_psnr_1:.4f}  ssim:{per_ssim_1:.4f}  lpips:{per_lpips_value:.4f}')

        if args.save_image:
            vutils.save_image(pred, os.path.join(args.output_dir, f'{name[0]}'), normalize=True)

        avg_ssim_1 = np.mean(ssims_1)
        avg_psnr_1 = np.mean(psnrs_1)
        avg_lpips_1 = np.mean(lpips_1)

    print(f'\n------------------------------------------------------')
    testLogger.write(f'\n------------------------------------------------------')
    print(f'\navg_psnr:{avg_psnr_1:.4f}  avg_ssim:{avg_ssim_1:.4f}  avg_lpips:{avg_lpips_1:.4f}', end='', flush=True)
    testLogger.write(f'\navg_psnr:{avg_psnr_1:.4f}  avg_ssim is:{avg_ssim_1:.4f}  avg_lpips:{avg_lpips_1:.4f}')

 

标签:img,334,backbone,ssim,input,model,lpips
From: https://www.cnblogs.com/yyhappy/p/18117382

相关文章

  • COMP3334项目端到端加密聊天
    OMP3334项目端到端加密聊天web应用程序2023/2024年第2学期如今,web服务是最重要的用户的常见应用程序形式暴露于。Web浏览器成为计算机上的流行应用程序使用户能够访问这些web服务。确保web服务的安全是对互联网至关重要。此外,隐私的一个重要特征现代。您的工作是实现端到端加密聊......
  • P3344 [ZJOI2015] 幻想乡 Wi-Fi 搭建计划
    非常精妙的一个做法。简化题意:定义合法区域为\(y\in[0,R]\)的区域,给定一些在合法区域内的标记点,与一些圆心在合法区域外的,半径为\(R\)的圆,选择第\(i\)个圆会产生\(c_i\)的代价。第一问是最多能覆盖几个标记点;第二问是在保证覆盖标记点最多的情况下,代价的最小值。首先......
  • lc2334 元素值大于变化阈值的子数组
    给定数组nums[n]和整数threshold,找到长度为k的子数组,满足子数组中每个元素都大于threshold/k,返回满足条件的任意一个k即可,如不存在,返回-1。1<=n<=1e5;1<=nums[i],threshold<=1e9子数组每个元素都大于t,也就是最小值大于t。对于固定的最小值,显然子数组越长越有可能满足条件,因此考......
  • 《安富莱嵌入式周报》第334期:开源SEM扫描电子显微镜,自制编辑器并搭建嵌入式环境,免费产
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV1om411Z714/目录1、开源SEM扫描电子显微镜,数字图像采集解决方案2、Microchip专家为客户提供免费的产品设计审查服务3、开源植......
  • ABC334
    F:我们可以更好的利用一操作——当且仅当钱不够用时,加上经过的所有点中最大的\(P\),也就是在那个点插入一次一操作。设\(dp_{i,j,x,y}=(step,money)\)表示到达点\((i,j)\),经过的最大的\(P\)在点\((x,y)\),最少需要\(val\)次一操作(移动操作最后算上就行了),此前提下手头的钱......
  • ABC334G Christmas Color Grid 2
    第一次AKabc,写篇题解记录一下。原题传送门分析发现实际上是要求删去每个绿点之后会多出几个连通块。发现这跟割点的定义很像,于是考虑建图,在相邻的绿点之间连边。然后就只要知道每个点到底被包含在几个点双里。我们使用圆方树,此时就只需要统计每个点的度数就可以了。代码#in......
  • ABC334F Christmas Present
    非常好dp,使我线段树旋转。原题传送门分析首先由于两点之间直线线段最短,我们肯定是希望从头一直送到尾,最后回家。但是有了\(k\)的限制,就麻烦了。考虑一个dp。我们设\(dp[i]\)表示刚送完第\(i\)个孩子时所要跑的最短距离。转移的时候我们枚举上一次回家是在送完哪一个孩......
  • [ABC334C] Socks 2 题解
    题目传送门一道贪心题。数量为\(2\)的袜子不用考虑,因为最好的情况就是相同颜色的配一对。我们只需要考虑那\(k\)种只有\(1\)个的袜子,如果\(k\)为偶数,答案为相邻两数之差之和;如果\(k\)为奇数,就枚举删掉一个数,让剩下的数按照\(k\)为偶数的情况做,最后取一个最小值。这......
  • [ABC334E] Christmas Color Grid 1 题解
    题目传送门一道dfs题。先统计出绿连通块数量,然后对于每个红色方块统计涂成绿色方块后会变成多少个连通块。正常涂成绿色后应该会增加一个大小为\(1\)的绿连通块,但若是有不同的绿连通块与其相邻,答案又会减少\(1\)。Code#include<bits/stdc++.h>constlonglongIMX=1......
  • AtCoder Beginner Contest 334
    B-ChristmasTrees难度:⭐⭐题目大意小莫从坐标轴的某个位置n种了一棵树,并且每隔m米就再种一棵树,注意是双向的,两边都种;给定一个区间,问这个区间中有多少棵树;解题思路我们可以让区间的边界都减去n,这样区间中的树都位于坐标km上;然后我们把边界都平移到正......