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

使用Roboflow Yolov4 PyTorch模型训练自定义数据集出现ValueError错误

错误原因
  • 数据集存在无效样本:使用的Roboflow导出数据集中包含无任何标注框的空标注样本,加载样本时返回的标注框对象out_bboxes为空列表,既不存在.shape属性触发第一个AttributeError,长度为0的空结构也无法匹配YOLOv4要求的5维标注格式[x,y,w,h,类别id],最终触发广播形状不匹配的ValueError。
  • 数据集加载逻辑无异常兼容:当前使用的PyTorch版YOLOv4的dataset.py没有做异常标注兼容逻辑,未提前处理标注类型转换和空标注分支,遇到异常样本直接崩溃。
解决方法
  • 方案1:清理数据集(推荐)
    登陆Roboflow平台对应数据集版本页,筛选出标注数量为0的样本,要么直接删除这类无效样本,要么补全标注后重新导出数据集,替换本地原有训练集即可。
  • 方案2:修改数据集加载代码(无需改动数据集)
    打开/content/pytorch-YOLOv4/dataset.py,定位到报错的382行附近代码,做两处修改:
    1. 先将标注框转换为numpy数组,解决无.shape属性的问题
    2. 新增空标注判断分支,遇到无标注样本时直接生成符合格式的空标注数组,避免广播报错
      修改后参考代码:
    # 新增代码 start
    import numpy as np
    out_bboxes = np.array(out_bboxes, dtype=np.float32)
    if out_bboxes.shape[0] == 0:
        out_bboxes1 = np.zeros((self.cfg.boxes, 5), dtype=np.float32)
    else:
    # 新增代码 end
        # 保留原有赋值逻辑
        out_bboxes1[:min(out_bboxes.shape[0], self.cfg.boxes)] = out_bboxes[:min(out_bboxes.shape[0], self.cfg.boxes)]
    
  • 修复验证:修改完成后先跑少量batch的测试训练,确认无同类报错后再启动全量训练。

内容的提问来源于stack exchange,提问作者Jaisil Rose Dennison

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:48:02