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

使用Yolo-NAS+Super-Gradients时训练图像加载失败求助

针对Yolo-NAS + Super-Gradients 3.7.1 plot()找不到图像的解决办法
  • 强制使用绝对路径
    直接把数据集的图像根目录转为绝对路径,避免库在拼接路径时出错。可以在加载数据集前处理路径:

    import os
    # 定义图像根目录的绝对路径
    TRAIN_IMG_DIR = os.path.abspath("./dataset/images/train")
    # 加载数据集时指定根路径(根据Super-Gradients的数据集API调整)
    dataset = DetectionDataset(data_dir=TRAIN_IMG_DIR, ...)
    

    同时检查标注文件里的图像路径,如果是相对路径,确保和根目录拼接后是正确的绝对路径。

  • 修复路径分隔符
    Windows系统下的反斜杠\容易被转义,尝试统一用正斜杠/或者原始字符串表示路径:

    # 方式1:使用原始字符串
    img_path = r"dataset\images\train\img1.png"
    # 方式2:替换为正斜杠
    img_path = "dataset\\images\\train\\img1.png".replace("\\", "/")
    

    部分库对正斜杠的兼容性更好,即使在Windows环境也能正确识别。

  • 更换Super-Gradients版本
    既然怀疑是3.7.1版本的路径处理bug,尝试降级到3.7.0或升级到最新稳定版:

    # 降级到3.7.0
    pip install super-gradients==3.7.0 --force-reinstall
    # 升级到最新版
    pip install --upgrade super-gradients
    

    更换版本后重新加载数据集并调用plot()测试,大概率能解决版本导致的路径解析问题。

  • 自定义plot逻辑绕过库的bug
    如果库自带的plot()方法确实有问题,可以自己实现简单的绘图逻辑,绕开路径解析错误:

    import cv2
    import matplotlib.pyplot as plt
    
    def custom_plot_sample(dataset, index):
        sample = dataset[index]
        # 手动获取正确的图像绝对路径
        img_path = os.path.abspath(sample.image_path)
        img = cv2.imread(img_path)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        # 绘制标注框(根据数据集的标注格式调整)
        for bbox in sample.bboxes:
            x1, y1, x2, y2 = bbox
            cv2.rectangle(img, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 2)
        plt.imshow(img)
        plt.show()
    
    # 调用自定义函数
    custom_plot_sample(train_dataset, 0)
    
  • 检查标注文件的路径正确性
    确认LabelImg生成的XML标注文件中,<path>标签的路径是否准确。如果标注文件里的路径是旧路径,即使数据集目录正确,也会导致加载失败。可以批量更新XML里的路径,或者让数据集加载器忽略<path>标签,直接从指定目录加载图像。

内容的提问来源于stack exchange,提问作者Caio Palácio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:37:10