TOMyrrrr 2024-03-08 14:46 采纳率: 0%
浏览 5

训练目标检测模型时出错

遇到一个问题,今天把数据集和写好了的yaml文件(一共只有两个类,分别代表路面不同的形状)丢进yolov5里面跑,大概跑了30轮因为不想等了就把best.pt文件(忘记后缀是不是这个了#(呵呵) )下载下来用测试集跑结果,没想到出来的不仅没有识别出我想要的两个形状目标,反而出现了我没有标注的类,比如人类和汽车类#(泪) 这是为什么啊

想了想,这些类不知道会不会来自coco数据集,因为我是初学者,在学的过程中在同一个环境下用coco训练过模型,而我准备好自己的数据集后,没有更改环境,只是把之前的结果都删掉了,然后在train.py中将训练集的source从coco数据集改为我自己的数据集,其他的都没动,不知道是不是因为之前训练过但是没清除导致的影响?

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-08 14:46
    关注

    引自免费微信小程序:皆我百晓生

    在训练目标检测模型时遇到您所述问题,可能的原因和解决步骤如下:

    1. 预训练权重:Yolov5通常使用COCO数据集预训练的权重进行初始化。这意味着模型已经学习过包括人、汽车等常见类别在内的多种目标特征。如果您直接加载了预训练模型并在少量轮次后停止训练,模型可能尚未充分针对您的特定两个类别的形状进行优化。

      解决方案:确保从头开始训练或者fine-tune(微调)模型时,设置--weights ''以使用随机初始化权重。如果仍想利用预训练权重,则需要增加训练轮数,确保模型能充分学习并适应新类别。

    2. 类别混淆:检查您的yaml配置文件中是否正确设置了类别数量,并确认类别标签与实际标注是否一致。若类别映射有误,模型可能会将某些特征识别为预训练时的其他类别。

      检查代码示例:

      # yolov5/models/yolov5s.yaml 或相应版本的配置文件
      nc: 2  # number of classes (your specific two classes)
      
    3. 数据集质量问题:确保训练集中只包含您关注的两类形状,没有未标注的人或车辆。此外,还要检查数据增强是否可能导致测试集中出现了训练集中不存在的情况。

    4. 过度拟合/欠拟合:如果训练集过小或学习率设置不当,模型可能无法泛化到新的形状,或者在训练早期就固定在预训练权重的表现上。

      调整训练参数如学习率、训练周期数(epochs)、早停策略等,例如:

      python train.py --img-size 640 --batch-size 8 --epochs 100 --data your_dataset.yaml --weights '' --cfg models/yolov5s.yaml --device 0
      
    5. 评估方式:请确保在验证或测试过程中,使用的也是仅包含两类目标的数据集,避免混合了预训练数据集中的样本。

    综上,请仔细检查以上几个方面,对症下药调整训练过程,这应该有助于解决您所遇到的问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 3月8日
  • 创建了问题 3月8日