用的yolov7中的coco.yaml修改后令其学习目标检测苹果
为测试设置了学习两轮,结果第一轮运行正常,第二轮各项数据全部为0出现异常,即便是多几轮,后面的也全部是0,弟弟搜了一天了,也没找到解决方案,谢谢


检查下你的数据集吧,第一轮都不正常了。
- 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7419677
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:yolov7系列-训练自己的数据集
- 除此之外, 这篇博客: YOLOV7详细解读(二)论文解读中的 4.2.粗标签用于辅助头、细标签用于引导头 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
- 深度监督是深度网络训练中常用的一种技术。 其主要思想是在网络的中间层增加辅助头部,以浅层网络权重和辅助损失作为指导。 即使对于ResNet和densenet这样通常收敛良好的架构,深度监督仍然可以显著提高模型在许多任务上的性能。 图5 (a)和(b)分别显示了“没有”和“有”深度监督的对象检测器架构。 在本文中,我们称负责最终输出的头部为引导头,称辅助训练的头部为辅助头。
- 接下来我们要讨论标签分配的问题。
- 在过去的深度网络训练中,标签分配通常直接引用GT(真实标签),并根据给定的规则生成硬标签。 然而,近年来,以目标检测为例,研究人员往往利用网络预测输出的质量和分布,再结合GT,采用一些计算和优化方法,生成一个可靠的软标签。 例如YOLO使用了边界盒回归预测IoU和GT作为客观性的软标签。 本文将综合考虑网络预测结果和GT并分配软标签的机制称为“标签分配器”。
- 无论辅助头或引导头的情况如何,都需要对目标进行深度监督训练。 在开发软标签赋值器相关技术的过程中,我们偶然发现了一个新的衍生问题,即: ,“如何给辅助头和引导头分配软标签?”据我们所知,目前相关文献还没有探讨这个问题。 目前最常用的方法的结果如图5(c)所示,将辅助头和引导头分开,利用各自的预测结果和GT来执行标签分配。
- 本文提出的方法是一种通过引导头预测的同时引导辅助头和引导头的标签分配新方法。 换句话说,我们以引导头预测结果为指导,生成粗到细的层次标签,分别用于辅助头和引导头学习。 提出的两种深度监督标签分配策略分别如图5 (d)和(e)所示。

- 引导头引导标签分配器主要根据引导头的预测结果和GT进行计算,通过优化过程生成软标签。 这套软标签将作为辅助头和引导头的目标训练模型。 这样做的原因是引导头具有较强的学习能力,由此产生的软标签应该更能代表源数据和目标数据之间的分布和相关性。 此外,我们可以把这种学习看作一种广义残差学习。 通过让较浅的辅助头直接学习引导头已经学习过的信息,引导头将更能专注于学习尚未学习的残差信息。
- 粗到细引导头引导标签分配器还利用引导头的预测结果和GT来产生软标签。 但是在这个过程中我们产生了两套不同的软标签,即粗标签和细标签,其中细标签与引导头标签分配器产生的软标签相同,而粗标签是通过放松正样本分配过程的约束,允许更多的网格被视为正目标而产生的。 这是因为辅助头的学习能力不如引导头强,为了避免丢失需要学习的信息,我们将重点在目标检测任务中优化辅助头的召回。 对于引导头的输出,我们可以从高查全率的结果中过滤出高精度的结果作为最终输出。但是,我们必须注意,如果粗标签的权重接近细标签的权重,可能会在最终预测时产生较差的结果。 因此,为了使粗标签的影响更小,我们在解码器中加入限制,使粗网格不能完美地产生软标签。 上述机制使细标签和粗标签的重要性在学习过程中动态调整,使细标签的可优化上界始终高于粗标签。
- 您还可以看一下 李立宗老师的YOLOv1论文深度解析(8小时原汁原味逐句解析YOLO论文)课程中的 对比其他目标检测系统——导读小节, 巩固相关知识点