YOLOv7 混淆矩阵分析

参考链接:

https://blog.csdn.net/weixin_43745234/article/details/121561217

YOLOv5 与 YOLOv7 输出的混淆矩阵,其中每一列表示该列的真实标签,被分类到其他类的概率,这里进行了归一化。Recall 定义是:所有真实 Positive 中,预测正确的比例。所以计算方法就是用 对角线上的数字/该列求和。由于已经归一化所以,Recall 就是对角线上的数字。从每一列可以清楚地看到该类被误识别到其他类(包括背景)的概率。

background FN 表示 真实值是 Positive(比如是某个类别 a ),但是预测值为 Negative(把它预测为 背景),这里的意思就是漏检,也就是最后一行表示每个类别漏检的概率。

从每一行来看,预测为某一个类别(Positive),但是它可能把真实标签为别的类别的目标预测为该类别。Precision 的定义是预测的所有Postive中,预测正确的比例,所以这里 Precision = 对角线的值/该行求和。每一行表示误检的概率。最后一行中,如果其中某些值较大,那么对应的那列中模型找不到该标签类的目标,可能该类别的数据较少导致的。

最后一列 background FP 表示 真实标签为背景,也就是 Negative,但是模型把它预测为前景(Positive),这里的意思就是 所谓的虚检(原本没有目标却误认为有目标,换句话说就是原本是背景却检测成了目标。)所以如果最后一列中某些值较大,说明在虚检中,该预测值所占的比重过大,当然这也可能是该类别数据更多导致。

在我的实验中。最后一列 18-59-male = 0.38, old = 0.25, 18-59-female = 0.15,在我的数据集中这三者的数量也是占据了更多的比重,因此可能是样本数量不平衡导致的。解决方案,可能是把其他类别的数据增加一些。把大量的背景识别为了该目标,可能的原因是该类别的数据有问题。

有的类别的 Recall 较小,说明模型没有学习到怎么去找到这些目标,可能的原因是该类别数据量不够使得模型学不到更好的特征。

下面我会可视化输出验证集的结果以用来查找原因。

posted @ 2022-09-19 17:19  Zenith_Hugh  阅读(29)  评论(0)    收藏  举报