图像分类 图像分割的评价指标(混淆矩阵 正确率 精准率 召回率 F1分数 IOU dice系数)

         在图像分类或者图像分割中,为评价模型的预测效果,在训练过程中通常需要比较预测值与真实标签值的差距,即误差。

目录

图像分类过程的评价指标

混淆矩阵

正确率/准确率

精准率

召回率

F1分数

图像分割过程的评价指标

混淆矩阵

混淆矩阵的生成代码

IOU与MIOU

IOU计算代码

dice系数

dice系数计算代码

IOU与dice系数的关系

图像分类过程的评价指标

混淆矩阵

        混淆矩阵,用来总结分类结果的矩阵,N*N的方阵,N表示类别数。混淆矩阵的表示真实类别,表示预测类别。

        例如:针对一个二分类问题,混淆矩阵为:

预测值=1

预测值=0

真实值=1

TP

FN

真实值=0

FP

TN

        TP为真阳性,FP为假阳性,FN为假阴性,TN为真阴性。

正确率/准确率

        衡量模型在整个数据集上分类正确的比例

 accuracy=\frac{TP+TN}{TP+FP+TN+FN}

精准率

        判别为该类的样本中,正确的有多少

(1)类别1的精准率precision: 

\frac{TP}{TP+FP}

(2)类别0的精准率precision:

\frac{TN}{TN+FN}

召回率

        该类样本中,找回了多少

(1)类别1的召回率recall:

\frac{TP}{TP+FN}

(2)类别0的召回率recall:

\frac{TN}{TN+FP}

注:正确率指全部样本;精准率或召回率指某一类,某一类的精准率或召回率

F1分数

        精准率和召回率的调和平均,可以做到二者兼顾。特点是:如果二者极度不平衡,一个值特别高、另一个值特别低时,得到的F1分数也特别低;只有二者都非常高时,F1才会高。

\frac{2*precision*recall}{precision+recall}

其中,precision recall分别为上述的精准率和召回率,也是针对某一类计算F1分数。

图像分割过程的评价指标

混淆矩阵

        图像分割是对图像进行逐像素分类,预测值与真实值不再是分类过程的单个标签值(一整个图片表示一个类别),而是一个h*w的二维数组(每个像素点代表一个类别)。因此,可以可以使用.flatten()函数 将预测值及真实值摊平成一维数组,然后逐个遍历,累计混淆矩阵的值。

混淆矩阵的生成代码

"""
class_num:分割类别数
model:模型
inputs:模型输入     shape=(b,c,h,w) b-batchsize c-channel(图片输入通道数)
labels:模型真实标签  shape=(b,h,w)
outputs:模型预测值   shape=(b,class_num,h,w)  class_num维度代表此像素点是所有类别的可能性,outputs.max(dim=1)[1]即可得到最大可能性的类别(预测类别)
"""
import numpy as np
conf_mat=np.zeros((class_num,class_num))
outputs=model(inputs)

pre_label=outputs.max(dim=1)[1].cpu().numpy().flatten()
true_label=labels.cpu().numpy().flatten()

# 混淆矩阵
for i,j in zip(true_label,pre_label):
    conf_mat[i][j]+=1

IOU与MIOU

        iouintersection over union,交并比)广泛用于语义分割中,指每个类别的预测准确率

 \frac{target\cap prediction}{target\cup prediction}

其中,target为该类别标签数量,prediction为预测该类别的数量

        miou(均交并比)为所有类别iou值的平均值

例1:假设为两个类别的图像分割,混淆矩阵2*2

预测值=1

预测值=0

真实值=1

TP

FN

真实值=0

FP

TN

(1)类别1的IOU:

\frac{TP}{TP+FP+FN}

        此时,target=TP+FN   prediction=TP+FP

(2)类别0的IOU:

\frac{TN}{TN+FP+FN}

        此时,target=TN+FP  prediction=TN+FN

IOU计算代码

import numpy as np

confusion=np.array([[100,1],[1,200]])  # 一个2*2的混淆矩阵
iou = np.diag(confusion) / (confusion.sum(axis=1) + confusion.sum(axis=0)- np.diag(confusion))
print(iou)    # [0.98039216 0.99009901]

# miou为均交并比
miou=np.mean(iou)
print(miou)   # 0.9852455833818676

dice系数

dice系数是一种集合相似度量函数,通常用于计算两个样本的相似度,取值范围在[0,1]之间

s=\frac{2|X\cap Y|}{|X|+|Y|}

对于语义分割而言,X是GT分割图像(Ground Truth),Y是pred分割图像(预测值)

例2:混淆矩阵图与例1相同

(1)类别1的dice系数:

s=\frac{2*TP}{2*TP+FN+FP}

(2)类别0的dice系数:

s=\frac{2*TN}{2*TN+FN+FP}

dice系数计算代码

import numpy as np

conf_mat=np.array([[100,1],[1,200]])
dice = 2 * np.diag(conf_mat) / (conf_mat.sum(axis=1) + conf_mat.sum(axis=0))  # 各个类别的dice系数
print(dice)             # [0.99009901 0.99502488]
print(np.mean(dice))    # 0.9925619427614403

IOU与dice系数的关系

iou=\frac{dice}{2-dice}

因此,可以推导得到

dice=\frac{2*iou}{1+iou}

由于iou取值在[0,1]之间可知,dice系数大于等于iou值。

使用dice系数可以获得更高的分数。

 

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: 对于图像分割评价指标,常用的有类别像素准确率(CPA)、准确率(Accuracy)和交并比(IoU)。 类别像素准确率是指预测类别正确的像素数占类别总像素数的比例,也称为召回率。其计算方式可以使用以下Python代码: ```python def per_class_PA_Recall(hist): return np.diag(hist) / np.maximum(hist.sum(1), 1) ``` 准确率是指预测正确的样本数占总样本数的比例,也就是类别像素准确率的均值。计算方式如下: ```python def per_Accuracy(hist): return np.sum(np.diag(hist)) / np.maximum(np.sum(hist), 1) ``` 交并比表示的是模型对某一类别预测结果和真实值的交集与并集的比值。对于图像分割,可以计算预测掩码和真实掩码之间的交并比。可以使用以下代码实现: ```python def per_class_iu(hist): return np.diag(hist) / np.maximum((hist.sum(1) + hist.sum(0) - np.diag(hist)), 1) ``` 以上是常用的图像分割评价指标计算方法。可以根据需要使用这些代码来评估模型图像分割任务中的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [图像分割常见性能指标的计算方法python)](https://blog.csdn.net/weixin_47057808/article/details/129702149)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值