深度学习、遥感领域常用精度评价指标盘点


最近几年,以深度学习技术为代表的新型前沿技术在图像处理领域,取得了巨大的成功,从图像处理到场景理解,从图像分类到图像实时分割,深度学习无处不在。在遥感领域,深度学习技术更是火热。

本篇博文就对常用的深度学习精度评价指标进行总结梳理,旨在为模型算法的精度评价指标选取提供一个参考。


1、精确率、召回率和F1

精确率(Precision),又可以称为正确率,主要是指识别出来的目标有多少是识别准确的,衡量的是识别结果的正确率;

召回率(Recall),又可以成为查全率,主要是指所有正确的目标有多少被识别出来了,衡量的是识别结果的查全率。

理想情况,我们希望精确率和召回率取值越高越好,但实际上,两者在一些情况下是矛盾的,可以绘制Precision-Recall曲线来帮助分析。在Python的sklearn库下,可以调用metrics函数进行计算,代码如下:

from sklearn.metrics import *
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [1, 0, 2, 1, 0, 2]
#第一种计算方式
precision, recall, thresholds = precision_recall_curve(y_true, y_pred)
f1_score = 2 * (precision * recall) / (precision + recall)
#第二种计算方式
# precision = precision_score(y_true, y_pred)
# recall = recall_score(y_true, y_pred)
# f1_score = f1_score(y_true, y_pred)
print(precision)
print(recall)
print(f1_score )
print(thresholds)

F-measure 指数,是精确率和召回率的加权调和平均数,属于综合性的评价指标,常用的是F1指标,综合了精确率和召回率的结果,当F1取值较高时,则能说明方法比较有效。

精确率、召回率和F1,三个指标一般都是一起使用,计算公式如下:

Precision= \frac{TP}{TP+FP}

Recall=\frac{TP}{TP+FN}

F1=2\times \frac{Precision\times Recall}{Precision+ Recall}

这里,FP: 假正例;FN: 假负例;TP: 真正例;TN: 真负例


2、混淆矩阵、Kappa系数、总体分类精度

混淆矩阵(confusion matrix)又称误差矩阵(error matrix),是一个用于表示分为某一类别的像元个数与地面检验为该类别数的比较阵列。

通常,阵列中的列代表参考数据,行代表由遥感数据分类得到的类别数据。有像元数和百分比表示两种。

深度学习、遥感领域常用精度评价指标盘点_第1张图片

计算:通过把所有真实参考的像元总数乘以混淆矩阵对角线的和,再减去各类中真实参考像元数与该类中被分类像元总数之积之后,再除以像元总数的平方减去各类中真实参考像元总数与该类中被分类像元总数之积对所有类别求和的结果。

Kappa系数是能够较为全面的表现分类精度的一种指标。总体精度可以表示出分类结果大致的准确情况,而没有对具体某个类别的情况加以考虑。Kappa系数可以很好的解决这一问题,对分类精度作更加全面、客观的分析。Kappa系数的表达式如下:

深度学习、遥感领域常用精度评价指标盘点_第2张图片

Kappa系数的值域为0~1之间,依据Kappa系数的数值,判断分类精度的优劣。

依据Kappa系数的分类精度评价标准如下:

深度学习、遥感领域常用精度评价指标盘点_第3张图片

总体分类精度(Overall Accuracy, OA)等于被正确分类的像元总和除以总像元数。被正确分类的像元数目沿着混淆矩阵的对角线分布,总像元数等于所有真实参考源的像元总数。总体分类精度是指对每一个随机样本,所分类的结果与检验数据类型相一致的概率。

混淆矩阵、Kappa系数、总体分类精度计算代码如下:

from sklearn.metrics import *
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [1, 0, 2, 1, 0, 2]
confusion_metrics= confusion_matrix(y_true, y_pred)
kappa = cohen_kappa_score(y_true, y_pred)
OA = accuracy_score(y_true, y_pred)

3、ROC曲线和AUC

受试者工作特征曲线(Receiver Operating Characteristic, ROC)。曲线由两个变量1-specificity 和 Sensitivity绘制,1-specificity=FPR,即负正类率。Sensitivity即是真正类率,TPR(True positive rate),反映了正类覆盖程度。

深度学习、遥感领域常用精度评价指标盘点_第4张图片

AUC值为ROC曲线下所覆盖的区域面积。假设分类器的输出是样本属于正类的socre(置信度),则AUC为,任取一对(正、负)样本,正样本的score大于负样本的score的概率。

AUC = 1,是完美分类器。

0.5 < AUC < 1,优于随机猜测。

AUC = 0.5,跟随机猜测一样,模型没有预测价值。

AUC < 0.5,比随机猜测还差。

显然,AUC越大,分类器分类效果越好。

ROC曲线及AUC值计算如下:

from sklearn.metrics import auc
from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt
import numpy as np

y = np.array([1,1,2,3]) #y为数据的真实标签
scores = np.array([0.16, 0.22, 0.45, 0.80]) #scores为分类其预测的得分
fpr, tpr, thresholds = roc_curve(y, scores, pos_label=2)
AUC = auc(fpr, tpr)

#ROC曲线
plt.plot(fpr,tpr,marker = 'o')
plt.show()

4、交并比(IoU)、平均交并比(mIoU)、频率权重交并比(FWIoU)

交并比(IoU)在语义分割任务中用来表示目标区域和预测区域之间的重合度,也就是用来表示某类标签(Ground Truth,GT)的像素集合和预测(Prediction,P)结果像素集合之间的交集比上并集。

深度学习、遥感领域常用精度评价指标盘点_第5张图片

公式表示为:

计算时,也可以转化为:

IoU=\frac{TP}{(TP+FP+FN))}

IoU的取值范围在0到1之间,值越大说明预测效果越好,当GT和P完全重合的时候为最大值1。

平均交并比(mIoU)是计算机视觉识别的一种常用的性能评价指标。对于多分类任务,将每一个类别交并比计算视为二分类任务:属于该类别与不属于该类别,随后将多个类别平均,基于混淆矩阵的计算方式如下:

深度学习、遥感领域常用精度评价指标盘点_第6张图片

公式中n表示数据标签类别个数。当数据中类别较多和不平衡时,平均交并比能较准确的反应总体的预测性能。

该指标平均了各个类别的交并比,最具有代表性,最简明。然而对于类别不平衡的情况仍然没有考虑,因此引入了频率权重交并比:

深度学习、遥感领域常用精度评价指标盘点_第7张图片


5、其他精度评价指标概念

错分误差(Commission Error):指被分为用户感兴趣的类,而实际上属于另一类的像元,错分误差显示在混淆矩阵的行里面。

漏分误差(Omission Error):指本属于地表真实分类,但没有被分类器分到相应类别中的像元数。漏分误差显示在混淆矩阵的列里。漏分误差显示在混淆矩阵的列里。

制图精度(Producer’s Accuracy):制图精度或生产者精度是指分类器将整个影像的像元正确分为A类的像元数(对角线值)与A类真实参考总数(混淆矩阵中A类列的总和)的比率。

用户精度(User’s Accuracy):指正确分到A类的像元总数(对角线值)与分类器将整个影像的像元分为A类的像元总数(混淆矩阵中A类行的总和)比率。



总结

比较常用的精度评价指标为:精确率、召回率、F1、Kappa、mIoU以及总体分类精度,这些指标的计算很容易从网上找到相应的计算代码,而且Python库scikit-learn也提供了很多精度指标的计算函数,可以直接调用。scikit-learn网址:API Reference — scikit-learn 1.0 documentation

遥感图像语义分割常用精度指标及其python实现(支持多类) - 知乎前言在介绍个精度指标前我们先来明确以下几个概念,对应的示意图如下图所示: TP(True Positive):分类准确的正类,意思是预测结果为正类,实际上是正类。FP(False Positive):被错分类为正类的负类,意思是实际为…https://zhuanlan.zhihu.com/p/150556249?from_voters_page=true


注:本文中有一些概念、公式和图片是来源于一些相关论文、网页以及百度百科,资料收集时间较久,没有引用具体的来源地址,如有侵权,请联系删除或添加引用!

你可能感兴趣的:(Python,遥感,深度学习,python,机器学习,深度学习,数据分析,评分算法)