mmdet训练自己数据集No such file or directory


求助大神们,我用mmdet做检测训练自己数据集时,总是报No such file or directory错误,原因是我数据集图片的名字只有六位数字,但是数据集标签的文件名包含了一开始做数据集的路径名,请问怎么设置,可以让他只读取后六位的数字名。

img

img

结和ChatGPT和我自己的想法

在使用 mmdetection(通常简称为 mmdet)训练自己的数据集时,如果你的数据集图片的文件名只包含六位数字,但标签文件名包含了路径名,你可以通过修改 mmdet 配置文件来解决这个问题。以下是一般的解决步骤:

修改数据集标签文件: 确保你的数据集标签文件(通常是 XML 或 JSON 格式)中的文件路径是正确的。如果标签文件中包含了一开始的路径名,你可以使用脚本或文本编辑器进行批量替换,将路径名去除。

修改 mmdet 配置文件: 打开 mmdet 的配置文件,通常是一个 .py 文件,如 configs/custom_config.py。在配置文件中找到与数据集相关的部分,通常是 dataset_type 和 data_root,并进行相应的设置。

例如,如果你的数据集是基于 COCO 格式的,可以尝试以下设置:

dataset_type = 'CocoDataset'
classes = ('class1', 'class2', ...)  # Replace with your class names
data_root = 'path/to/your/data/root'
ann_file = 'annotations/your_annotations.json'  # Path to your annotations file
img_prefix = 'images/'  # Path to your images, relative to data_root


如果你的数据集与 COCO 不同,相应的配置会有所不同。

修改数据集加载函数: 一些情况下,你可能需要修改数据集加载函数来适应你的数据集。在配置文件中找到与数据集加载函数相关的部分,通常是 data_loaders,并确保数据加载函数正确地将文件名映射到图像和标签。

例如,如果你使用了 CustomDataset 类,可以通过以下方式设置:

data_loaders = {
    'train': {
        'type': 'CustomDataset',
        'ann_file': 'path/to/annotations/train.json',
        'img_prefix': 'path/to/images/',
        'pipeline': [...],  # Your data augmentation pipeline
    },
    'val': {
        'type': 'CustomDataset',
        'ann_file': 'path/to/annotations/val.json',
        'img_prefix': 'path/to/images/',
        'pipeline': [...],
    },
    ...
}


确认文件路径: 最后,确保你的数据集图像和标签文件的路径在系统上是正确的。运行训练脚本时,mmdet 应该能够找到正确的图像和标签文件。

完成上述步骤后,你的 mmdet 训练脚本应该能够正确地加载数据集,并将文件路径问题解决。如果问题仍然存在,可以检查日志输出或错误消息,以便更详细地了解问题所在。