包括MAE、Pre、Rec、F-measure、Auc、CC、Nss

MAE:

平均绝对误差MAE(mean absolute error),范围[0,+∞),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。

Pre、Rec、F-measure

行表示预测的label值,列表示真实label值。TP,FP,FN,TN分别表示如下意思:

  • TP(true positive):表示样本的真实类别为正,最后预测得到的结果也为正;
  • FP(false positive):表示样本的真实类别为负,最后预测得到的结果却为正;
  • FN(false negative):表示样本的真实类别为正,最后预测得到的结果却为负;
  • TN(true negative):表示样本的真实类别为负,最后预测得到的结果也为负.

  • Accuracy:表示预测结果的精确度,预测正确的样本数除以总样本数。
  • precision,准确率,表示预测结果中,预测为正样本的样本中,正确预测为正样本的概率;
  • recall,召回率,表示在原始样本的正样本中,最后被正确预测为正样本的概率;
  • specificity,常常称作特异性,它研究的样本集是原始样本中的负样本,表示的是在这些负样本中最后被正确预测为负样本的概率。

F-Measure又称为F-Score,F-Measure是Precision和Recall加权调和平均

其中是参数,P是精确率(Precision),R是召回率(Recall)。当参数=1时,就是最常见的F1-Measure了:

Auc

ROC曲线下方的面积(Area under the Curve of ROC (AUC ROC)),其意义是:

因为是在1x1的方格里求面积,AUC必在0~1之间。

假设阈值以上是阳性,以下是阴性;

若随机抽取一个阳性样本和一个阴性样本,分类器正确判断阳性样本的值高于阴性样本之机率=AUC

简单说:AUC值越大的分类器,正确率越高。

CC

CC是指皮尔逊相关系数,用来评价预测的眼关注点显著图和参考图ground truth之间的线性相关性,CC越大说明该模型性能越好。

NSS

NSS是指标准化扫描路径显着性,用来评价两者之间的差异值,NSS越大说明模型性能越好。

Python代码

import numpy as np
from sklearn.metrics import precision_score, recall_score, f1_score, roc_auc_score
from sklearn.preprocessing import Binarizer
from scipy.stats import pearsonrdef mask_normalize(mask):mask = (mask - np.min(mask))/(np.max(mask) - np.min(mask) + 1e-8)return maskdef compute_mae(mask,label):h, w = mask.shape[0], mask.shape[1]sumError = np.sum(np.absolute((mask.astype(float) - label.astype(float))))maeError = sumError/(float(h)*float(w)+1e-8)return maeErrordef compute_p_r_f(mask,label):pre = precision_score(mask, label, average='binary')rec = recall_score(mask, label, average='binary')f_1 = f1_score(mask, label, average='binary')return pre, rec, f_1def compute_auc(mask,label):auc = roc_auc_score(mask,label)return aucdef compute_cc(mask,label):mask = mask - np.mean(mask)label = label - np.mean(label)cov = np.sum(mask * label)d1 = np.sum(mask * mask)d2 = np.sum(label * label)cc = cov / (np.sqrt(d1) * np.sqrt(d2) + 1e-8)return ccdef compute_nss(mask,label):std=np.std(mask)u=np.mean(mask)mask=(mask-u)/stdnss=mask*labelnss=np.sum(nss)/np.sum(label)return nssdef evaluate(mask,label):if len(mask.shape)==3:mask = mask[0]if len(label.shape)==3:label = label[0]mask = mask_normalize(mask)label = mask_normalize(label)mae = compute_mae(mask,label)binarizer = Binarizer(threshold=0.5)mask_b = binarizer.transform(mask)label_b = binarizer.transform(label)mask_br = np.reshape(mask_b, newshape=(-1))label_br = np.reshape(label_b, newshape=(-1))pre, rec, f_1 = compute_p_r_f(mask_br,label_br)auc = compute_auc(mask_br,label_br)cc = compute_cc(mask,label)nss = compute_nss(mask,label_b)return mae, pre, rec, f_1, auc, cc, nss
from trans_evaluate import *
import glob
from skimage import io, transformdata_dir = '/data3/QHL/HSOD/output/SUDF/batch_bsal_result/'
gt_dir = '/data3/QHL/DATA/SOD/HL-SOD/ground_truth/'name_list = glob.glob(data_dir+'/'+'*.png')
img_num = len(name_list)mae, pre, rec, f_1, auc, cc, nss = 0, 0, 0, 0, 0, 0, 0
for i in range(img_num):name = name_list[i].split("/")[-1].split(".")[-2]image = io.imread(name_list[i])if len(image.shape) == 2:h,w = image.shape[0],image.shape[1]image = np.swapaxes(image, 1, 0)image = image.astype(np.float32)if len(image.shape) == 3:h,w,c = image.shape[0],image.shape[1],image.shape[2]image = np.swapaxes(image, 2, 0)image = image.astype(np.float32)label = io.imread(gt_dir + name + '.jpg')label = transform.resize(label, (h,w,3))label = np.swapaxes(label, 2, 0)label = label.astype(np.float32)mae_, pre_, rec_, f_1_, auc_, cc_, nss_ = evaluate(image, label)mae = mae + mae_pre = pre + pre_rec = rec + rec_f_1 = f_1 + f_1_auc = auc + auc_cc = cc + cc_nss = nss + nss_len = img_num
mae = mae / len
pre = pre / len
rec = rec / len
f_1 = f_1 / len
auc = auc / len
cc = cc / len
nss = nss / lenprint('pre, rec, f_1', pre, rec, f_1)
print('auc, cc, nss', auc, cc, nss)
print('mae',mae)

显著性检测的评价指标代码相关推荐

  1. 图像显著性检测论文及代码汇总

    近年来,图像显著性检测研究引起了大量的学者关注.为了方便学术研究,本博客汇总了近几年比较经典的图像显著性检测论文及代码,同时也收集了一些显著性检测相关的Toolbox.Benchmark和大牛的主页等 ...

  2. 显著性检测的评价指标

    对于显著性检测,最基本的指标请看这一篇. E-measure,S-measure,weighted F-measure:这个我找了好久好久...最后终于在这里找到了.E-measure全称是Enhan ...

  3. 【图像检测】基于Itti模型实现图像显著性检测附matlab代码

    1 简介 视觉显著性计算模型以心理学.神经科学.认知理论等领域的研究成果或假说为前提,建立数学模型来模拟人类视觉系统指引注意力分配和视觉认知的过程,通过模拟和仿真人类视觉感知机理,将存在待检测目标的人 ...

  4. 【图像检测】基于AC算法实现图像显著性检测附matlab代码

    1 简介 AC算法也是Achanta等提出的,与FT算法类似,只是在求欧式距离时使用的均值不再是整幅图像的均值,而是选取不同大小邻域内的均值(三种大小)分别求取欧式距离,再相加得到. 2 部分代码 ​ ...

  5. 【显著性检测】基于HC算法实现图像显著性检测附MATLAB代码

    1 简介 图像融合是一种重要的增强图像信息的技术方法,如何对同一目标的多源遥感图像数据进行有效的融合,最大限度地利用多源遥感数据中的有用信息,提高系统的正确识别.判断和决策能力,这是遥感数据融合研究的 ...

  6. 视觉显著性python_OpenCV—python 图像显著性检测算法—HC/RC/LC/FT

    文章目录 一.显著性检测研究现状 二.基于谱残差法的显著性检测 三.基于全局对比度图像显著性检测(LC) 2.1 基于直方图对比度的显著性检测(HC) 2.2 基于区域的对比度方法(region-ba ...

  7. 图像显著性检测——时域分析(谱残差法、相位谱法)

    1.基于谱残差法的显著性检测 (Saliency Detection: A Spectral Residual Approach) 给定一幅图像,I(x)首先计算其2维离散傅里叶变换,将其从空间域转换 ...

  8. [OpenCV实战]47 基于OpenCV实现视觉显著性检测

    人类具有一种视觉注意机制,即当面对一个场景时,会选择性地忽略不感兴趣的区域,聚焦于感兴趣的区域.这些感兴趣的区域称为显著性区域.视觉显著性检测(Visual Saliency Detection,VS ...

  9. python视觉识别_视觉显著性python_OpenCV—python 图像显著性检测算法—HC/RC/LC/FT

    文章目录 一.显著性检测研究现状 二.基于谱残差法的显著性检测 三.基于全局对比度图像显著性检测(LC) 2.1 基于直方图对比度的显著性检测(HC) 2.2 基于区域的对比度方法(region-ba ...

最新文章

  1. ​机器学习中必要的数学基础!
  2. vue全家桶项目搭建(vue-cli 2.9.6+vue-router+vuex+axios)
  3. DataFrame 学习笔记
  4. php采集分析,PHP采集程序原理分析篇
  5. JavaScript:window.onload问题
  6. java net time_建了服可是老是提示java.net.SocketTimeoutException: Read time
  7. linux mount nfs 超时,I / O无法(偶尔)挂载NFS-服务器超时
  8. opencv python 生成画布_第16章 坚持一百秒(《Python趣味创意编程》教学视频)
  9. 如何禁止特定用户使用sqlplus或PL/SQL Developer等工具登陆?
  10. 基于java的电子政务管理系统设计(含源文件)
  11. Java之HashMap系列--保证线程安全的方法
  12. MATLAB 如何将视频和音频写入同一个文件?以视频上下颠倒为例,附带详细注释
  13. [linux]记录内核编译日志
  14. 实战教程:平面设计配色原则
  15. 【Redis】Redis数据库
  16. 中国汽车使用保险行业市场供需与战略研究报告
  17. java-pdf合并三种方法实现以及简单效率对比
  18. 贪吃机器人DIY(一)
  19. 前端面试题汇总(含答案)(JS篇)
  20. html视频不播放视频教程,html无法播放视频怎么办

热门文章

  1. 经皮黄疸仪QL1200B
  2. 基金净值(某几个基金净值)
  3. vue+element表格的左右布局及动态添加行
  4. 解决电脑运行速度慢的方法
  5. FZU 1397 保送
  6. 大数据前景如何?大数据开发工程师是什么?
  7. centos7图形界面与命令界面的切换
  8. 热重载 (Hot reload)
  9. ADAU1860调试心得(5)ADC-DAC直通程序
  10. SpringBoot实现自定义异常类。