图像识别评价指标
前阵子写reid测试评估的程序,一开始没有清晰需求,走了很多弯路,现在清理一下,看完就懂。
二分类、多分类、多标签分类
- 二分类:表示分类任务中有两个类别,比如我们想识别一幅图片是不是猫。也就是说,训练一个分类器,输入一幅图片,用特征向量x表示,输出是不是猫,用y=0或1表示。二类分类是假设每个样本都被设置了一个且仅有一个标签:0或者1。
- 多类分类(Multiclass classification): 表示分类任务中有多个类别。 比如对一堆水果图片分类,它们可能是橘子、苹果、梨等. 多类分类是假设每个样本都被设置了一个且仅有一个标签: 一个水果可以是苹果或者梨, 但是同时不可能是两者。
- 多标签分类(Multilabel classification): 给每个样本一系列的目标标签。可以想象成一个数据点的各属性不是相互排斥的(一个水果既是苹果又是梨就是相互排斥的), 比如一个文档相关的话题,一个文本可能被同时认为是宗教、政治、金融或者教育相关话题。
二分类的混淆矩阵与recall,precision、acc
以分类模型中最简单的二分类为例,对于这种问题,我们的模型最终需要判断样本的结果是0还是1,或者说是positive还是negative。
我们通过样本的采集,能够直接知道真实情况下,哪些数据结果是positive,也称其为正样本,哪些结果是negative,也称其为负样本。同时,我们通过用样本数据跑出分类型模型的结果,也可以知道模型认为这些数据哪些是positive,哪些是negative。
因此,我们就能得到这样四个基础指标,我称他们是一级指标(最底层的):
- 真实值是positive(正样本中),模型认为是positive的数量(True Positive=TP)
- 真实值是positive(负样本中),模型认为是negative的数量(False Negative=FN):这就是统计学上的第一类错误(Type I Error)
- 真实值是negative(正样本中),模型认为是positive的数量(False Positive=FP):这就是统计学上的第二类错误(Type II Error)
- 真实值是negative(负样本中),模型认为是negative的数量(True Negative=TN)
precision:精确率。 在被判断为真的样例中,实际为真的样例比例。
P
=
预
测
为
正
样
本
的
结
果
/
预
测
为
正
样
本
的
所
有
结
果
=
T
P
/
(
T
P
+
F
P
)
P=预测为正样本的结果/预测为正样本的所有结果 = TP/(TP+FP)
P=预测为正样本的结果/预测为正样本的所有结果=TP/(TP+FP)
recall:召回率。 在实际为真的样例中,被判断为真的样例比例。
R
=
预
测
为
正
样
本
的
结
果
/
实
际
为
正
样
本
的
所
有
样
本
=
T
P
/
(
T
P
+
F
N
)
R=预测为正样本的结果/实际为正样本的所有样本 = TP/(TP+FN)
R=预测为正样本的结果/实际为正样本的所有样本=TP/(TP+FN)
ACC:召回率。 在实际为真的样例中,被判断为真的样例比例。
R
=
预
测
为
正
样
本
的
结
果
/
实
际
为
正
样
本
的
所
有
样
本
=
T
P
/
(
T
P
+
F
N
)
R=预测为正样本的结果/实际为正样本的所有样本 = TP/(TP+FN)
R=预测为正样本的结果/实际为正样本的所有样本=TP/(TP+FN)
多分类的混淆矩阵与recall,precision、acc![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c1b2b6881cd3f4f640f4d071f1d509d4.png)
同样对于多分类问题,也有这样距混淆矩阵:
对于多分类,当我们计算这些指标的时候,就先要将多分类转换为多个二分类的问题
每一类的计算方式和二分类问题中的是一样的,最后求得平均值即可。当然计算平均值可以选择加权与否。
ReID中的评价方式和指标
部分参考与推荐阅读:
图像检索:信息检索评价指标
ReID任务中的CMC和mAP
sklearn.metrics中的评估方法介绍(accuracy_score, recall_score, roc_curve, roc_auc_score, confusion_matrix)
sklearn中的模型评估-构建评估函数
行人重识别计算RANK-1具体是怎么操作的?