在目标检测模型中,使用Yolo v5训练数据之后会直接生成为runs文件,其中包含一些运行时的信息,可以作为评判标准来告诉我们所训练的效果如何,帮助我们更好的研究模型的性能。
以下为基于机器视觉的苹果成熟度识别系统的runs文件解读示例:
confusion_matrix.png(混淆矩阵)
混淆矩阵是用于评估分类模型性能的一种工具。它由真实类别和预测类别组成的矩阵,将数据集的样本根据真实类别和预测类别进行分类。
混淆矩阵可以用来计算模型的准确率、召回率、精确率、F1值等指标,进而评估模型的性能和效果。它可以清楚地展示模型在各个类别上的分类效果,并帮助我们识别模型的偏差和错误。
在机器学习领域和统计分类问题中,混淆矩阵是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例。混淆矩阵的每一列代表了预测类别,每一行是预测类别。每一列是真实类别。每一行之和表示该类别的真实样本数量,每一列之和表示被预测为该类别的样本数量。矩阵中(a,b)的含义是:第b个类别被预测为第a个类别的概率。通过这个矩阵可以方便看出机器是否将两个不同的类混淆。
上图是对苹果成熟度分类进行训练,有图可以看出 将一个图片分为了四个部分,分别是高度成熟、中度成熟、未成熟和background FP。该图在每列上进行归一化处理。则可以看出高度成熟苹果预测正确的概率为82%,中度成熟预测正确的概率为80%,低度成熟预测正确的概率为86%。
监督学习是通过训练样本的标签信息来进行学习和预测的方法。在监督学习中,训练数据集包含了输入样本和对应的标签信息。机器学习模型通过学习这些样本和标签关系来进行预测。常见的监督学习算法包括回归算法和分类算法。在回归算法中,模型预测的结果是一个连续值,比如房价预测;而在分类算法中,模型预测的结果是一个离散值,比如垃圾邮件分类。监督学习的一个重要特点是需要有标签数据来进行训练,因此需要大量的标注工作。
无监督学习是从未标注的数据中进行学习和发现模式的方法。在无监督学习中,训练数据集只包含输入样本,没有标签信息。机器学习模型通过分析数据的统计特性和相似性来进行学习。无监督学习的目标是发现数据的内在结构和特点,比如聚类、降维和异常检测等。无监督学习的一个重要特点是不需要标签数据,因此可以使用大量的未标注数据进行学习,但是模型的学习和评估相对困难。
二分类混淆矩阵的四个单元格包括:
- 真正类(True Positive,TP):预测为正类且实际为正类的样本数。
- 假负类(False Negative,FN):预测为负类但实际为正类的样本数。
- 假正类(False Positive,FP):预测为正类但实际为负类的样本数。
- 真负类(True Negative,TN):预测为负类且实际为负类的样本数。
样例总数 = TP + FP + TN + FN。
精确率(Accuracy):精确率是最常用的分类性能指标。可以用来表示模型的精度,即模型识别正确的个数/样本的总个数。一般情况下,模型的精度越高,说明模型的效果越好。
Accuracy = (TP+TN)/(TP+FN+FP+TN)
正确率或者准确率(Precision):又称为查准率,表示在模型识别为正类的样本中,真正为正类的样本所占的比例。一般情况下,查准率越高,说明模型的效果越好。
Precision = TP/(TP+FP)
召回率(Recall):又称为查全率,召回率表现出在实际正样本中,分类器能预测出多少。
Recall(召回率) = Sensitivity(敏感指标,True Positive Rate,TPR)= 查全率
表示的是,模型正确识别出为正类的样本的数量占总的正类样本数量的比值。一般情况下,Recall越高,说明有更多的正类样本被模型预测正确,模型的效果越好。
Recall = TP/(TP+FN)
非二分类问题:
F1_curve(F1分数)
F1分数(F1 score)是一种用于衡量分类模型性能的指标。它综合了模型的准确率(Precision)和召回率(Recall),考虑了模型在预测正类和负类时的平衡性。通过计算模型的准确率和召回率并结合在一起,可以更全面地评估模型的性能。
准确率是指模型预测为正类的样本中实际为正类的比例,即正类预测正确的数量除以所有被预测为正类的样本数量。召回率是指实际为正类的样本中被模型预测为正类的比例,即正类预测正确的数量除以所有实际为正类的样本数量。
F1分数的计算公式如下:
F1分数的取值范围为0到1,值越接近1表示模型的性能越好。当模型的准确率和召回率都很高时,F1分数也会较高;当其中一个指标较高而另一个较低时,F1分数会有所下降。
P_curve
表示准确率与置信度的关系图线,横坐标置信度。由下图可以看出置信度越高,准确率越高。
R_curve
表示召回率与置信度的关系图线,横坐标置信度。由下图可以看出置信度越高,召回率越低
PR_curve
将上述两个图像结合,得到PR曲线,PR曲线中的P代表的是precision(精准率),R代表的是recall(召回率),其代表的是精准率与召回率的关系。
在前面的分析得知,我们希望的结果是召回率与预测率均为一,但是很显然在训练时无法达到这种期望。所以在训练时我们需要根据不同需要了解是要求P高还是R高。通过分析P-R曲线下围成的面积为AP(Average precision) 平均精确度或者分析mAP均值平均精度,一般而言AP值越大则性能越好。
results.png
损失函数(Loss Function)是用来衡量模型预测结果与真实结果之间的差异程度的函数。在机器学习和深度学习中,我们通常通过最小化损失函数来优化模型的参数。
- 定位损失box_loss:预测框与标定框之间的误差(GIoU)
- 置信度损失obj_loss:计算网络的置信度
- 分类损失cls_loss:计算锚框与对应的标定分类是否正确
- mAP_0.5:表示阈值大于0.5的平均mAP
- mAP_0.5:0.95表示在不同IoU阈值(从0.5到0.95,步长0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的平均mAP
result.csv
results.txt中最后三列是验证集结果,前面的是训练集结果,全部列分别是:
训练次数,GPU消耗,边界框损失,目标检测损失,分类损失,total,targets,图片大小,P,R,mAP@.5, mAP@.5:.95, 验证集val Box, 验证集val obj, 验证集val cls
train_batchx
这里设置的batchsize是8,所以一次训练8张照片
val_batchx_labels&val_batchx_pred
val_batchx_labels:验证集第x轮的实际标签
val_batchx_pred:验证集第x轮的预测标签
weights(权重)
训练所得权重
权重指的是在某个任务或模型中,用来衡量不同特征或样本的重要性的数值。权重可以被分配给特征、样本或模型参数,用于调节它们对任务的贡献程度。在机器学习和深度学习中,常常使用权重来估计或优化模型的性能。
hyp.yaml(超参数文件)
超参数是指在机器学习算法中不能通过训练得到,需要手动设置的参数。超参数是影响模型性能和训练过程的重要因素,常见的超参数包括学习率、批大小、迭代次数、正则化参数等。
设置合适的超参数可以提高模型的性能,但是调整超参数是一项复杂的任务,通常需要通过试验和调优来找到最优的超参数组合。常见的超参数调优方法包括网格搜索、随机搜索、贝叶斯优化等。
超参数的选择往往是经验性的,没有一种通用的方法可以直接预测最好的超参数值,因此在实际应用中,超参数的选择往往是一种试错的过程。
opt.yaml(模型配置文件)
opt.yaml中记录的是使用的模型配置文件,训练数据等常规参数