WenmuZhou / DBNet.pytorch

A pytorch re-implementation of Real-time Scene Text Detection with Differentiable Binarization
Apache License 2.0
949 stars 249 forks source link

DBNet.pytorch/base/base_dataset.py中load_data(self, data_path: str) -> list方法返回空列表 #75

Open Cavaradossi opened 4 years ago

Cavaradossi commented 4 years ago

配置文件写的绝对路径, train.txt和test.txt按repo组织的

dataset:  
  train:  
    dataset:
      args:
        data_path:
          - /home/my_name/DBNet.pytorch/datasets/train.txt
        img_mode: RGB
    loader:
      batch_size: 1
      shuffle: true
      pin_memory: true
      num_workers: 6
      collate_fn: ''
  validate:
    dataset:
      args:
        data_path:
          - /home/my_name/DBNet.pytorch/datasets/test.txt

运行bash singlel_gpu_train.sh ,报错

Traceback (most recent call last):
  File "tools/train.py", line 78, in <module>
    main(config)
  File "tools/train.py", line 36, in main
    train_loader = get_dataloader(config['dataset']['train'], config['distributed'])
  File "/home/my_name/DBNet.pytorch/data_loader/__init__.py", line 87, in get_dataloader
    _dataset = get_dataset(data_path=data_path, module_name=dataset_name, transform=img_transfroms, dataset_args=dataset_args)
  File "/home/my_name/DBNet.pytorch/data_loader/__init__.py", line 24, in get_dataset
    **dataset_args)
  File "/home/my_name/DBNet.pytorch/data_loader/dataset.py", line 17, in __init__
    super().__init__(data_path, img_mode, pre_processes, filter_keys, ignore_tags, transform)
  File "/home/my_name/DBNet.pytorch/base/base_dataset.py", line 19, in __init__
    assert item in self.data_list[0], 'data_list from load_data must contains {}'.format(item_keys)
IndexError: list index out of range

打印出config_file为: config/icdar2015_resnet18_FPN_DBhead_polyLR.yaml 打印出data_path为: /home/my_name/DBNet.pytorch/datasets/train.txt self.data_list为空列表

northwill commented 4 years ago

同样问题,请问解决了吗

WenmuZhou commented 4 years ago

检查一下图片路径对不

northwill commented 4 years ago

在data_loader/init.py中的 data_path 输出为 ['./datasets/train.txt'],这正常吗

WenmuZhou commented 4 years ago

这是你的文件吗

northwill commented 4 years ago

对阿,照着说明放的训练数据,路径应该不可能错阿

northwill commented 4 years ago

config the dataset['train']['dataset'['data_path']',dataset['validate']['dataset'['data_path']in config/icdar2015_resnet18_fpn_DBhead_polyLR.yaml 这个配置文件里面的内容不需要改吧,你不都给了,我一点没动它

Cavaradossi commented 4 years ago

如果能正常run起来的话self.data_list是什么样子?

karagg commented 3 years ago

遇到同样问题,有解决吗?

Frank1412 commented 3 years ago

同样报错,owner能否看一下什么问题呢 @WenmuZhou

WenmuZhou commented 3 years ago

我觉得是你们路径出现了问题,建议debug一下

Frank1412 commented 3 years ago

@WenmuZhou 你的base/base_dataset.py文件的load_data函数有问题,直接抛出异常了,应该返回一个dict,你可能不小心删了?

younglalala commented 3 years ago

遇到同样的问题,但是解决了,是在数据制作的时候出现问题了:train.txt 里面图片的路径指定到test文件夹了。类似这样./datasets/test/img/1039_test_l.jpg ./datasets/test/gt/1039_test_l.txt 。注意检查txt文件里面的图片路径即可。

northwill commented 3 years ago

以解决,路径问题。

Frank1412 commented 3 years ago

@WenmuZhou 用单个gpu的时候还是这个问题,BaseDataset这个类的构造函数直接报错了。。。调用的load_data函数是不是有问题

Breezewrf commented 3 years ago

遇到同样的问题,但是解决了,是在数据制作的时候出现问题了:train.txt 里面图片的路径指定到test文件夹了。类似这样./datasets/test/img/1039_test_l.jpg ./datasets/test/gt/1039_test_l.txt 。注意检查txt文件里面的图片路径即可。

我检查了还是一样报错

Breezewrf commented 3 years ago

def load_data(self, data_path: str) -> list: """ 把数据加载为一个list: :params data_path: 存储数据的文件夹或者文件 return a dict ,包含了,'img_path','img_name','text_polys','texts','ignore_tags' """ raise NotImplementedError 就这个代码,给他什么path都得引发异常的吧?

lightis-tian commented 3 years ago

同遇到这个问题,检查后确实是文件路径的问题

whgao97 commented 3 years ago

@WenmuZhou 用单个gpu的时候还是这个问题,BaseDataset这个类的构造函数直接报错了。。。调用的load_data函数是不是有问题

请问你解决了吗

BigWhit commented 3 years ago

同遇到这个问题,检查后确实是文件路径的问题

请问检查过两个txt文件,路径都没有问题,self.data_list有数据,但还是报IndexError: list index out of range这个错,可能是哪里的问题呢?

summer-1010 commented 3 years ago

def load_data(self, data_path: str) -> list: """ 把数据加载为一个list: :params data_path: 存储数据的文件夹或者文件 return a dict ,包含了,'img_path','img_name','text_polys','texts','ignore_tags' """ raise NotImplementedError 就这个代码,给他什么path都得引发异常的吧?

请问你解决了吗@Breezewrf

ekils commented 3 years ago

真的是資料格式問題诶... 改了以後就可以往下跑了

asd494961038 commented 2 years ago

同问题,已解决。最后处在txt文件的路径上,默认是./datasets/XXX,改为带盘符的绝对路径比如D:XXX/dataset/XXX就好了,不太清楚为啥,其他的路径都没有用这种形式,但是不该就跑不通

lsy-xjr commented 5 months ago

是的,你把train.txt和test.text路径换成自己的路径就可以了