在使用mmrotate中的rotated_rtmdet旋转目标检测进行训练时出现的错误

在使用mmrotate中的rotated_rtmdet进行训练时出现的错误,这可能是我数据集坐标或者旋转角度有问题吗?


Traceback (most recent call last):
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\registry\build_functions.py", line 122, in build_from_cfg
    obj = obj_cls(**args)  # type: ignore
  File "d:\suanfa\mmrotate\mmrotate-dev-1.x\mmrotate\datasets\dota.py", line 49, in __init__
    super().__init__(**kwargs)
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\dataset\base_dataset.py", line 245, in __init__
    self.full_init()
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\dataset\base_dataset.py", line 296, in full_init
    self.data_list = self.load_data_list()
  File "d:\suanfa\mmrotate\mmrotate-dev-1.x\mmrotate\datasets\dota.py", line 97, in load_data_list
    cls_name = bbox_info[8]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\registry\build_functions.py", line 122, in build_from_cfg
    obj = obj_cls(**args)  # type: ignore
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\runner\loops.py", line 44, in __init__
    super().__init__(runner, dataloader)
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\runner\base_loop.py", line 26, in __init__
    self.dataloader = runner.build_dataloader(
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\runner\runner.py", line 1346, in build_dataloader
    dataset = DATASETS.build(dataset_cfg)
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\registry\registry.py", line 548, in build
    return self.build_func(cfg, *args, **kwargs, registry=self)
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\registry\build_functions.py", line 144, in build_from_cfg
    raise type(e)(
IndexError: class `DOTADataset` in mmrotate/datasets/dota.py: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "tools/train.py", line 125, in <module>
    main()
  File "tools/train.py", line 121, in main
    runner.train()
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\runner\runner.py", line 1687, in train
    self._train_loop = self.build_train_loop(
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\runner\runner.py", line 1479, in build_train_loop
    loop = LOOPS.build(
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\registry\registry.py", line 548, in build
    return self.build_func(cfg, *args, **kwargs, registry=self)
  File "D:\anaconda\envs\mmrotate\lib\site-packages\mmengine\registry\build_functions.py", line 144, in build_from_cfg
    raise type(e)(
IndexError: class `EpochBasedTrainLoop` in mmengine/runner/loops.py: class `DOTADataset` in mmrotate/datasets/dota.py: list index out of range

这个错误提示表明在加载数据集时出现了索引错误,可能是由于数据集中的某些标注信息不完整或格式不正确导致的。具体原因需要根据数据集和代码的具体情况进行分析。建议检查一下数据集中的标注信息是否完整并且格式正确,例如是否缺少某些字段或者某些字段的值是否符合要求。同时也可以检查一下代码中对数据集的加载和处理部分是否存在问题。如果无法解决问题,建议向相关开发者或社区寻求帮助。

  • 以下回答由chatgpt基于相关博客总结生成:

    我不熟悉mmrotate和rotated_rtmdet的具体用法,无法给出具体的解决方案。建议您在相关技术社区或论坛上寻求帮助,或者向相关开发人员咨询。同时,如果您的数据集的坐标或旋转角度存在问题,可能会导致训练失败或预测结果不准确,建议您检查数据集的质量。可以通过打印出一些样本的坐标和旋转角度,观察是否符合预期。同时,可以尝试使用其他工具或算法来处理数据集,比如opencv等。