图片语义分割评价指标计算miou、precision、recall

一、通过histogram计算miou、precision、recall

通过python的numpy包中的histogram函数计算图像语义分割的评价指标。
这里想得出每一类的评价指标,而不是一个整体的,故采用
对于某一张图片
imlabel和impred均为h*w的矩阵,且每个像素点的值为1~numclass

T P m a t = i m p r e d ∗ ( i m p r e d = = i m l a b e l ) TP_mat=impred*(impred==imlabel) TPmat=impred(impred==imlabel)
F P m a t = i m p r e d ∗ ( i m p r e d   ! = i m l a b e l ) FP_mat=impred*(impred \ !=imlabel) FPmat=impred(impred !=imlabel)
F N m a t = i m l a b e l ∗ ( i m p r e d   ! = i m l a b e l ) FN_mat=imlabel*(impred \ !=imlabel) FNmat=imlabel(impred !=imlabel)

(TP,  )=np.histogram(TP_mat,bins=numclass,rangge=(1,numclass))  #这里得到的是每一类TP的像素点个数
(FP,  )=np.histogram(FP_mat,bins=numclass,rangge=(1,numclass))  #这里得到的是每一类FP的像素点个数
(FN,  )=np.histogram(FN_mat,bins=numclass,rangge=(1,numclass))  

从而
i o u = T P T P + F P + F N iou= \frac{TP}{TP+FP+FN} iou=TP+FP+FNTP

p r e c i s i o n = T P T P + F P precision= \frac{TP}{TP+FP} precision=TP+FPTP

r e c a l l = T P T P + F N recall= \frac{TP}{TP+FN} recall=TP+FNTP

二、通过混淆矩阵

混淆矩阵的定义的理解:
混淆矩阵(confusion matrix),又称为可能性表格或是错误矩阵。它是一种特定的矩阵用来呈现分类结果是否准确的可视化效果。其每一行代表预测值,每一列代表的是实际的类别。这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个class被预测成另一个class),每一个矩阵元素表示实际为A预测为A’的个数。
图片语义分割评价指标计算miou、precision、recall_第1张图片
从而,对角线上为TP,上三角为FP,下三角为FN

def generate_matrix(numclass,gt_image,pre_image):
	mask=(gt_image>=0)&(gt_image<=numclass)
	label=num_class*gt_image[mask].astype('int')+pre_image[mask]
	count=np.bincount(label,minlength=numclass**2)
	confusion_matrix=count.reshape(numclass,numclass)
	return confusion_matrix

你可能感兴趣的:(我的笔记)