You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YOLOv5多类别数据集训练异常:仅识别1类问题求助

问题排查与解决方案

1. 统一标签文件的类别ID

不同原始数据集的标签文件(.txt)可能存在类别ID冲突。比如数据集A中"马桶"是ID 0,数据集B中"洗手台"是ID 0,合并后模型会把这两类当成同一类处理。

  • 操作:随机抽取各原始数据集的标签文件,查看第一列的类别ID,对比对应data.yaml的类别映射。
  • 修复:将所有数据集的类别统一映射为0、1、2、3,批量修改标签文件的类别ID后重新合并数据集。

2. 验证combined_dataset.yaml配置

确保配置文件中:

  • nc(类别数)设置为4
  • names列表包含所有4个目标类别
  • train/val/test路径正确指向合并后的对应文件夹
    如果names只写了1个类别或nc=1,模型只会学习单一类别。

3. 检查图片与标签的匹配性

合并后可能存在图片无对应标签、标签类别ID不在配置范围内的情况:

  • 操作:用YOLOv5自带的python utils/autoanchor.py --data combined_dataset.yaml检查数据集完整性,或手动抽查图片与对应标签文件。
  • 修复:删除无标签的图片,修正标签文件中无效的类别ID。

4. 分析训练日志与可视化结果

查看runs/train/yolov5s_results目录下的文件:

  • 看results.png中的类别损失(cls_loss),如果只有1类损失下降,说明模型未学习到其他类特征,大概率是数据集配置问题。
  • 查看train_batch*.jpg,确认训练时图片的标签是否正确显示所有类别。

5. 检查数据集类别分布

如果某类图片数量远多于其他类,模型会偏向识别该类:

  • 操作:统计合并后每个类别的样本数量。
  • 修复:增加少数类样本,或训练时添加--class-weight参数给少数类更高权重。

内容的提问来源于stack exchange,提问作者Stephanie Omwanda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:42:03