excel记录wFm数值(推理过程)

1 导入计算wfm库2 实例化具体的指标

3 列表循环之前,设置空list

4 单图评测-将图号、图片名、数值记录
列表里面存储dict

5 将excel列表结果逐个存入excel.xlsx文件

完整代码
test_CPD.py

### test_CPD.py ###
import torch
import torch.nn.functional as F

import numpy as np
import imageio
import pdb, os, argparse
from scipy import misc

from model.CPD_models import CPD_VGG
from model.CPD_ResNet_models import CPD_ResNet
from data import test_dataset
import py_sod_metrics_new  ### dis

gpu = "9"
print('\n', '===> GPU num: ', gpu)
os.environ["CUDA_VISIBLE_DEVICES"] = gpu  # todo 用于评测

parser = argparse.ArgumentParser()
parser.add_argument('--testsize', type=int, default=352, help='testing size')
parser.add_argument('--is_ResNet', type=bool, default=False, help='VGG or ResNet backbone')
opt = parser.parse_args()

dataset_path = '/cluster/home3/zjc/Dataset/COD/COD-TE/'


# val-1-读入
WFM = py_sod_metrics_new.WeightedFmeasure()  ### dis todo  1实例化
SM = py_sod_metrics_new.Smeasure()
EM = py_sod_metrics_new.Emeasure()
MAE = py_sod_metrics_new.MAE()


# SOD
# 'official_cpd/CPD-R.pth'
# 'official_cpd/CPD.pth'

# COD
# 'CPD_ResNet/CPD-99.pth'
# 'CPD_VGG/CPD-99.pth'
model_name_res = 'CPD_Resnet/'
model_name_vgg = 'CPD_VGG/'
if opt.is_ResNet:
    model = CPD_ResNet()
    model.load_state_dict(torch.load('/cluster/home3/zjc/Code/COD/CPD_My/CPD-master/models/'+  model_name_res + 'CPD-99.pth'))
else:
    model = CPD_VGG()
    model.load_state_dict(torch.load('/cluster/home3/zjc/Code/COD/CPD_My/CPD-master/models/'+  model_name_vgg + 'CPD-99.pth'))

model.cuda()
model.eval()

# test_datasets = ['PASCAL', 'ECSSD', 'DUT-OMRON', 'DUTS-TEST', 'HKUIS']
test_datasets = ['COD10K-TE']  #  'COD10K-TE'  'Less'

for dataset in test_datasets:
    if opt.is_ResNet:
        save_path = './results/'+model_name_res + dataset + '/'
    else:
        save_path = './results/'+model_name_vgg + dataset + '/'
    if not os.path.exists(save_path):
        os.makedirs(save_path)
    image_root = dataset_path + dataset + '/image/'
    gt_root = dataset_path + dataset + '/mask/'
    test_loader = test_dataset(image_root, gt_root, opt.testsize)
    
    excel = []  ### dis
    for i in range(test_loader.size):
        image, gt, name = test_loader.load_data()
        gt = np.asarray(gt, np.float32)
        gt /= (gt.max() + 1e-8)
        image = image.cuda()
        _, res = model(image)
        res = F.upsample(res, size=gt.shape, mode='bilinear', align_corners=False)
        res = res.sigmoid().data.cpu().numpy().squeeze()
        res = (res - res.min()) / (res.max() - res.min() + 1e-8)
        # misc.imsave(save_path+name, res)
        imageio.imwrite(save_path+name, (res*255).astype(np.uint8))
                
        ### dis
        # val-2-单图评测  ### todo
        SM.step(pred=res, gt=gt)
        EM.step(pred=res, gt=gt)
        MAE.step(pred=res, gt=gt)
        xwfm = WFM.step(pred=res, gt=gt)
        
        print('--->num:', i, '<---')
        print('->name:', name)
        print('->per_fm:', xwfm)
        
        per_dict=dict([("num",i),("name", name.split('.')[0]),("per_fm",xwfm)])  ###
        excel.append(per_dict)  ###
        
###生成表格###  ### dis
from openpyxl import Workbook  # 读取excel库
workbook = Workbook() # 实例化
if opt.is_ResNet:  # 自动切换res
    # 默认sheet
    sheet = workbook.active # 激活sheet
    sheet.title = "openpyxl_CPD_" + model_name_res # 命名sheet
    sheet.append(["num", "name", "wfm"])  # 插入标题
    for data in excel:  # 列表循环读取dict
        sheet.append(list(data.values()))
    workbook.save("openpyxl_CPD_" + model_name_res + ".xlsx")
else:  # 自动切换vgg
    # 默认sheet
    sheet = workbook.active # 激活sheet
    sheet.title = "openpyxl_CPD_" + model_name_vgg # 命名sheet
    sheet.append(["num", "name", "wfm"])  # 插入标题
    for data in excel:  # 列表循环读取dict
        sheet.append(list(data.values()))
    workbook.save("openpyxl_CPD_" + model_name_vgg + ".xlsx")

       
### val-3-数据集求均值
wfm = WFM.get_results()["wfm"]  # todo
sm = SM.get_results()["sm"]
em = EM.get_results()["em"]
mae = MAE.get_results()["mae"]
# maelist = MAE.get_results()[1]
# print("mae:{}".format(mae))  # todo
print("wfm:{} sm:{} mae:{}".format(wfm, sm, mae))  # todo
# print("wfm:{} sm:{}  em:{}  mae:{}".format(wfm, sm,em,mae))  # todo

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Autosar模块介绍:FEE(Flash模拟EEPROM)

上一篇 | 返回主目录 | 下一篇 Autosar模块介绍&#xff1a;FEE(Flash模拟EEPROM 1 基本术语解释2 Ea组成结构图3 Ea基本操作3.1 通用操作3.2 作业的进程&#xff08;通用需求&#xff09;3.3 读操作过程3.4 写操作过程3.5 擦除过程3.6 比较过程 4 Ea常用操作时序4.1 初始化4.…

SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对这篇博客也感兴趣o (ˉ▽ˉ&#xff1b;) &#x1f4dc;SpringIOC和DI的代码实现&#xff0c;Spring如何存取对象&#xff1f;Controller、Service、Repository、Component、Configuration、Bean DI详…

【沐风老师】3dMax使用克隆修改器插件创建旋转楼梯教程

3DMAX克隆修改器插件&#xff0c;它通过增量平移、旋转和缩放输入几何体来创建对象的副本。在某些方面&#xff0c;它类似于 3dMax 的内置“阵列”工具&#xff0c;但有一个主要优点 -克隆修改器是完全参数化的&#xff0c;因此您可以随时更改重复项的数量及其分布。其他功能包…

LeetCode-剑指 Offer 22. 链表中倒数第k个节点(C语言 )

目录捏 一、题目描述二、示例与提示三、思路四、代码 一、题目描述 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号&#xff0c;请查找并返回倒数第 cnt 个训练项目编号。 二、示例与提示 示例 1&#xff1a; 输入&#xff1a; head [2,4,7,8], cnt 1 输…

北大Cobot V4.3换新登场

库博SAST V4.3焕然一新&#xff0c;重装上市。作为国内最早的研究并成功开发SAST产品的团队&#xff0c;北大软件下属与北京大学国家工程与软件工程研究中心组成的库博团队&#xff0c;从2012年就起步研发静态应用安全测试产品—Cobot。历经10余年迭代升级&#xff0c;目前已经…

JAVA数据代码示例

首先&#xff0c;我们需要导入一些必要的Java库 java import java.net.URL; import java.net.HttpURLConnection; import java.io.BufferedReader; import java.io.InputStreamReader; 然后&#xff0c;我们可以创建一个URL对象&#xff0c;表示我们要爬取的网页的URL。 jav…

Linux安装微信

Linux安装微信 环境&#xff1a;ubuntu 20.04 https://archive.ubuntukylin.com/ubuntukylin/pool/partner/weixin_2.1.4_amd64.deb sudo dpkg -i weixin_2.1.4_amd64.deb完成 参考文章

uniapp h5发行

前端使用uniapp开发项目完成后&#xff0c;需要将页面打包&#xff0c;生成H5的静态文件&#xff0c;部署在服务器上。 这样通过服务器链接地址&#xff0c;直接可以在手机上点开来访问。 打包全步骤如下&#xff1a; 首先在manifest.json文件中进行基础配置&#xff0c;获取…

银行数据中心机房动力环境监控系统设计与优化

安科瑞电气股份有限公司 上海嘉定201801 摘要&#xff1a;结合银行数据中心建设项目&#xff0c;设计银行数据中心机房动力环境监控系统&#xff0c;分析银行数据中心机房监控对象、搭建系统监控架构&#xff0c;给出监控实现方法&#xff0c;*后针对运行一段时间出现的问题&a…

优雅的Java编程:将接口对象作为方法参数

theme: smartblue 目录 概述 在Java编程中&#xff0c;方法的参数传递方式通常是通过基本类型、对象引用或者集合等方式。然而&#xff0c;一种更加优雅且灵活的设计模式是将接口对象作为方法的参数。这种方式为我们带来了许多好处&#xff0c;包括降低耦合性、实现多态性和可…

极智芯 | GPU架构与计算能力

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多经验分享 大家好&#xff0c;我是极智视界&#xff0c;本文分享一下 GPU架构与计算能力。 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xff1a;https:…

【.汇编语言基础入门】—— 汇编的基础介绍

文章目录 一、机器语言二、汇编语言三、CPU 与 CPU 内存1、CPU 对存储器的读写 四、CPU 的典型构成1、寄存器2、通用寄存器3、物理地址的计算方法4、CS5、DS6、SS SP 一、机器语言 在学习汇编语言之前&#xff0c;我们应该先了解一下什么是机器语言。机器语言是机器指令的集合&…

索引下推(ICP)是什么意思?如何理解?

目录 1. 索引下推概述 2. 索引下推举例 3. ICP 的主要作用 1. 索引下推概述 ICP 全称 Index Condition Pushdown&#xff0c;是MySQL5.6之后的一个新特性&#xff0c;它是一种在存储引擎层使用索引过滤数据的一种优化方式。 2. 索引下推举例 下面是数据库的一张 employee…

色彩与心情:浴室的宁静氛围

创造宁静氛围 在浴室中&#xff0c;我们可以找到一片宁静的天地&#xff0c;让我们远离繁忙的日常生活&#xff0c;所以考虑一些舒缓并有助于提升幸福感的颜色。这包括从明亮和中等色调的绿色&#xff0c;到淡粉色和温馨的白色。 追求宁静与平静 浴室不再仅仅是日常卫生的地…

思维导图软件 Xmind mac中文版软件特点

XMind mac是一款思维导图软件&#xff0c;可以帮助用户创建各种类型的思维导图和概念图。 XMind mac软件特点 - 多样化的导图类型&#xff1a;XMind提供了多种类型的导图&#xff0c;如鱼骨图、树形图、机构图等&#xff0c;可以满足不同用户的需求。 - 强大的功能和工具&#…

leetcode:876. 链表的中间结点

一、题目 函数原型&#xff1a; struct ListNode* middleNode(struct ListNode* head) 二、思路 要找到链表的中间结点&#xff0c;有两种思路&#xff1a; 暴力解法&#xff1a;先遍历一遍链表&#xff0c;计算出链表的长度&#xff0c;再次遍历链表&#xff0c;找到中间结点。…

【正点原子STM32连载】 第五十一章 汉字显示实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第五…

手把手教你数据流图如何画,轻松搞定!

数据流图是一种强大的工具&#xff0c;用于可视化和分析系统中的数据流动和处理过程。它不仅能够帮助我们更好地理解系统的功能和流程&#xff0c;还能够帮助我们发现和解决潜在的问题。在本篇文章中&#xff0c;我们将手把手教你掌握数据流图。 一、数据流图的概念和构成元素 …

稀疏数组如何帮助我们节省内存,提升性能

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 什么是稀疏矩阵 稀疏矩阵是指矩阵中大部分元素为零的矩阵。在实际应用中&#xff0c;很多矩阵都是稀疏的&#xff0c…

线性回归预测波士顿房价 loss为NAN原因 画散点图找特征与标签的关系

波士顿房价csv文件 链接: https://pan.baidu.com/s/1uz6oKs7IeEzHdJkfrpiayg?pwdvufb 提取码: vufb代码 %matplotlib inline import random import torch import matplotlib.pyplot as plt import numpy as np import pandas as pd import torch从CSV中取出数据集 # 加载数…