最近是刚刚训练yolov7模型,但是只会一股脑的训练是不行的,要懂得训练多少epoch,以及通过哪些指标来查看训练的效果如何,现在这几天的经验总结一下。

本实验以person为例子,分别训练100epoch、60epoch、50epoch

训练经验:由于并不知道到底训练多少epoch效果比较好,所以现在先设置成100。(这几天查询资料得出来的结论一般50多就差不多了)

1、关于yolov7训练结果的文件解析

一、weights

也就是训练好的模型,一般使用best.pt去进行推理

包括best.pt和last.pt,以及默认25epoch保存一次模型,以及保存最后5个epoch的模型

二、 confusion_matrix.png

混淆矩阵

混淆矩阵以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值。

TP(True Positive): 将正类预测为正类数 即正确预测,真实为0,预测也为0

FN (False Negative):将正类预测为负类 即错误预测,真实为0,预测为1

FP(False Positive):将负类预测为正类数 即错误预测, 真实为1,预测为0

TN (True Negative):将负类预测为负类数,即正确预测,真实为1,预测也为1

精确率和召回率的计算方法

精确率Precision=TP / (TP+FP), 在预测是Positive所有结果中,预测正确的比重

召回率recall=TP / (TP+FN), 在真实值为Positive的所有结果中,预测正确的比重

三、F1_curve.png

F1分数,它被定义为查准率和召回率的调和平均数

一些多分类问题的机器学习竞赛,常常将F1-score作为最终测评的方法。它是精确率和召回率的调和平均数,最大为1,最小为0。

F1-Score的值是从0到1的,1是最好,0是最差。

这是100epoch得到的F1_curve,说明在置信度为0.4-0.6区间内得到比较好的F1分数

四、hyp.yaml和opt.yaml

训练时的超参数以及train.py中间的参数

五、P_curve.png

准确率precision和置信度confidence的关系图

六、PR_curve.png

PR曲线中的P代表的是precision(精准率),R代表的是recall(召回率),其代表的是精准率与召回率的关系,一般情况下,将recall设置为横坐标,precision设置为纵坐标。PR曲线下围成的面积即AP,所有类别AP平均值即Map.

如果PR图的其中的一个曲线A完全包住另一个学习器的曲线B,则可断言A的性能优于B,当A和B发生交叉时,可以根据曲线下方的面积大小来进行比较。一般训练结果主要观察精度和召回率波动情况(波动不是很大则训练效果较好)

Precision和Recall往往是一对矛盾的性能度量指标;及一个的值越高另一个就低一点;
提高Precision <==> 提高二分类器预测正例门槛 <==> 使得二分类器预测的正例尽可能是真实正例;
提高Recall <==> 降低二分类器预测正例门槛 <== >使得二分类器尽可能将真实的正例挑选

七、R_curve.png

召回率recall和置信度confidence之间的关系

八、results.png

Box:Box推测为GIoU损失函数均值,越小方框越准;
Objectness:推测为目标检测loss均值,越小目标检测越准;
Classification:推测为分类loss均值,越小分类越准,本实验为一类所以为0;
Precision:精度(找对的正类/所有找到的正类);

Recall:真实为positive的准确率,即正样本有多少被找出来了(召回了多少)。

Recall从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器挑选了出来,即真实的正例有多少被该二分类器召回。

val BOX:  验证集bounding box损失

val Objectness:验证集目标检测loss均值

val classification:验证集分类loss均值,本实验为一类所以为0

mAP是用Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值,@0.5:0.95表示阈值取0.5:0.05:0.95后取均值。

mAP@.5:.95(mAP@[.5:.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。

mAP@.5:表示阈值大于0.5的平均mAP

一般训练结果主要观察精度和召回率波动情况(波动不是很大则训练效果较好)
然后观察mAP@0.5 & mAP@0.5:0.95 评价训练结果。

九、results.txt

分别的含义是训练次数、GPU消耗、训练集边界框损失、训练集目标检测损失、训练集分类损失、训练集总损失、targets目标、输入图片大小、Precision、Recall、mAP@.5、mAP@.5:.95、验证集边界框损失、验证集目标检测损失、验证机分类损失

十、train_batchx

我设置的batch_size为8所以一次读取8张图片

十一、test_batchx_labels

验证集第一轮的实际标签

十二、运行tensorboard

activate yolov7(自己所配的环境名称)
tensorboard --logdir=训练结果所在的文件夹

二、分析模型的训练效果

接下来我将分别展示100epoch、60epoch和50epoch的tensorboard的可视化训练结果

100epoch

Loss

AP值

60epoch

Loss

AP值

50epoch

Loss

AP值

分析:从100epoch的Loss来看从50-60epoch损失值就维持在一定的范围内,所以我们可以缩小训练epoch,然后设置epoch为60继续训练,发现相较于100epoch的AP值86.8,60epoch的AP值为87.7上升0.9,但是发现val的目标检测损失在50epoch之后有所上涨,所以我们再次设置epoch为50进行训练,发现AP值上升0.1。

总结:所以来说查看yolov7模型训练的效果要综合四个损失函数的值来看,先设置的epoch次数多一些,然后通过损失函数来看减少或增加训练轮数,然后查看AP值是否有所增加。

最后增加一下计算模型训练的FPS值,设置相应的参数并运行test.py

运行结果

 FPS=1000/(4.3+0.6+5.0)=101

yolov7模型训练结果分析以及如何评估yolov7模型训练的效果相关推荐

  1. 对抗训练理论分析:自适应步长快速对抗训练

    ©PaperWeekly 原创 · 作者 | 鬼谷子 引言 该论文是关于对抗训练理论分析性的文章,目前对抗训练及其变体已被证明是抵御对抗攻击的最有效防御手段,但对抗训练的过程极其缓慢使其难以扩展到像 ...

  2. Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据

    #2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...

  3. R语言第八讲续 评估模型之自助法分析案例

    题目 今天来用自助法评估一下ISLR 程序包中的 Portfolio (金融资产)数据集的预测函数 相关资料 自助法(Bootstraping)是另一种模型验证(评估)的方法(之前已经介绍过单次验证和 ...

  4. 预测分析:R语言实现2.4 评估线性回归模型

    2.4 评估线性回归模型 再次利用lm()函数,用线性回归模型来拟合数据.我们的两套数据集会用到上述数据框里剩下的所有输入特征.R提供了一种编写公式的简写方式,它可以把某个数据框里的所有列作为特征,除 ...

  5. word2vec模型评估_利用机器学习探索食物配方 通过Word2Vec模型进行菜谱分析

    介绍 食物是我们生活中不可分割的一部分.据观察,当一个人选择吃东西时,通常会考虑食材和食谱.受食材和烹饪风格的影响,一道菜可能有数百或数千种不同的菜谱.网站上的菜谱展示了做一道菜所需要的食材和烹饪过程 ...

  6. 为什么引入验证集来评估机器学习模型?只用训练集和测试集可以吗?

    评估模型的重点是将数据划分为三个集合:训练集.验证集和测试集.在训练数据上训练模型,在验证数据上评估模型.一旦找到了最佳参数,就在测试数据上最后测试一次.你可能会问,为什么不是两个集合:一个训练集和一 ...

  7. DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别、模型评估(99.4%)

    DL之CNN:利用自定义DeepConvNet[7+1]算法对mnist数据集训练实现手写数字识别.模型评估(99.4%) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 netwo ...

  8. 对抗训练硬核分析:对抗样本与模型参数的关系

    ©PaperWeekly 原创 · 作者|孙裕道 学校|北京邮电大学博士生 研究方向|GAN图像生成.情绪对抗样本生成 引言 对抗训练是防御对抗样本一种有效的方法,但是对于它有效性的边界,一直都是很模 ...

  9. 模型评估与模型选择(训练误差和测试误差+过拟合)| 15mins 入门 | 《统计学习方法》学习笔记(四)

    模型评估与模型选择 当损失函数给定时,基于损失函数的模型的训练误差(training error)和模型的测试误差(test error)就自然成为学习方法评估的标准. 训练误差的大小,对判定给定的问 ...

最新文章

  1. 企业环境下如何把ubuntu的dhcp改为静态IP
  2. [教程] MacBook Pro 开机密码忘记解决方法
  3. 如何在bash中等待多个子进程完成并在任何子进程以代码!= 0结尾时返回退出代码!= 0?
  4. bdd行为驱动开发 java_行为驱动开发(BDD)如何与领域驱动设计(DDD)结合?
  5. Oracle init.ora常用配置详解
  6. 二十七、深入浅出Python中的 os模块
  7. java基础---System类
  8. koa --- nunjucks
  9. LRU算法数组实现超简单
  10. 深入理解BeanPostProcessor接口
  11. Fei Labs:FIP-5提案已通过
  12. 如何在 30 天内重新设计整个应用程序?
  13. 关于bootstrap--排版(标题、强调、背景、插入符等)
  14. 沧小海笔记之PCIE协议解析——第一章 PCIE概述(下)
  15. 网页实现语音对讲_通过基于WebRTC的浏览器实现语音通话的方法及系统的制作方法...
  16. openldap + samba为openldap添加smb属性----群晖synology
  17. 请问外贸独立站靠谱的收款工具有哪些,求推荐!?
  18. 程序员,如何从平庸走向理想?
  19. linux bash环境下面给expect脚本传递参数
  20. 19 ICPC 徐州网络赛 G. Colorful String(回文树)

热门文章

  1. Python深度学习(DeepDream)--学习笔记(十九)
  2. 黑苹果安装 - UEFI+GPT的Clover引导OS X 10.10
  3. Mysql 安装问题一:无法启动此程序,因为计算机丢失MSVCP120.dll,MSVCR120.dll
  4. html设置gif为透明,使用GIF动图和CSS3背景裁剪(background-clip)特性实现的透明文本烟雾特效...
  5. 基于Threejs火焰烟雾动画功能代码
  6. LearnOpenGL学习笔记——阴影
  7. 流放者柯南服务器存档文件,流放者柯南服务器设置怎么保存
  8. 简介oracle oerr工具使用
  9. VirtualBox 安装 CentOS7及网卡设置
  10. 常用的芯片封装与PCB封装总结