WenmuZhou / DBNet.pytorch

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

train.txt test.txt格式到底是什么样的,我的data_load一直返回空列表 #167

Closed tangjingwe closed 9 months ago

newuserforstudy commented 1 year ago

我刚刚也遇到相同的问题,已解决,希望能帮到你。 1)train.txt和test.txt的内容:
train.txt存放的是所有的训练图像的相对路径和该图片的标签文本txt文件的路径,二者用\t分割
test.txt存放的是所有的测试图像的相对路径和该图片的标签文本txt文件的路径,二者用\t分割
如test.txt存放的是:(500个测试样本,中间的省略了)
./datasets/test/img/img_1.jpg ./datasets/test/gt/gt_img_1.txt ./datasets/test/img/img_500.jpg ./datasets/test/gt/gt_img_500.txt 训练也是一样的,train.txt存放的是图像路径和对应标签的txt文件的路径。 ./datasets/train/img/img_1.jpg ./datasets/train/gt/gt_img_1.txt ./datasets/train/img/img_1000.jpg ./datasets/train/gt/gt_img_1000.txt

2)需要先将数据集和标签文件放到指定的位置:文件结构 datasets train img img_1.jpg img_1000.jpg gt gt_img_1.txt gt_img_1000.txt test img img_1.jpg img_500.jpg gt gt_img_1.txt gt_img_500.txt

3)在dataset.py运行和使用脚本如singlel_gpu_train.sh运行是的目录是不一样的,运行脚本不用修改路径,运行dataset.py需要修改文件路径,修改内容如下: 1)修改config文件为上级目录即,将“.”改为“..” 2)将train.txt和test.txt内同样,将“.”改为“..”

Ashingling commented 1 year ago

def load_data() raise NotImplementedError大佬是需要自己写吗

newuserforstudy commented 1 year ago

不用自己实现,作者已经实现了。在dataset.py里面,ICDAR2015Dataset类继承了BaseDataSet并且重写了load_data()方法,可以查看class ICDAR2015Dataset(BaseDataSet)等,也可以debug查看程序如何运行的。

Ashingling commented 1 year ago

哇谢谢大佬,我先去试试,也是返回的空列表。数据是按要求存放的,但是‘。/datasets/train.txt’在写入‘\t’的时候,前100个写入的空格,不知道有没有影响

Ashingling commented 1 year ago

Traceback (most recent call last): File "tools/train.py", line 77, in main(config) File "tools/train.py", line 36, in main train_loader = get_dataloader(config['dataset']['train'], config['distributed']) File "/home/omnisky/HTC/DBNet.pytorch-master/data_loader/init.py", line 84, in get_dataloader _dataset = get_dataset(data_path=data_path, module_name=dataset_name, transform=img_transfroms, dataset_args=dataset_args) File "/home/omnisky/HTC/DBNet.pytorch-master/data_loader/init.py", line 25, in get_dataset dataset_args) File "/home/omnisky/HTC/DBNet.pytorch-master/data_loader/dataset.py", line 17, in init super().init(data_path, img_mode, pre_processes, filter_keys, ignore_tags, transform) File "/home/omnisky/HTC/DBNet.pytorch-master/base/base_dataset.py", line 18, 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** 大佬能帮我看看这个问题的原因吗,一下午没明白

newuserforstudy commented 1 year ago

Traceback (most recent call last): File "tools/train.py", line 77, in main(config) File "tools/train.py", line 36, in main train_loader = get_dataloader(config['dataset']['train'], config['distributed']) File "/home/omnisky/HTC/DBNet.pytorch-master/data_loader/init.py", line 84, in get_dataloader _dataset = get_dataset(data_path=data_path, module_name=dataset_name, transform=img_transfroms, dataset_args=dataset_args) File "/home/omnisky/HTC/DBNet.pytorch-master/data_loader/init.py", line 25, in get_dataset dataset_args) File "/home/omnisky/HTC/DBNet.pytorch-master/data_loader/dataset.py", line 17, in init super().init(data_path, img_mode, pre_processes, filter_keys, ignore_tags, transform) File "/home/omnisky/HTC/DBNet.pytorch-master/base/base_dataset.py", line 18, 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** 大佬能帮我看看这个问题的原因吗,一下午没明白

这个错误是你的self.data_list为空,原因的你的train.txt或test.txt内存放的图像路径不对,检查你的train.txt和test.txt,程序会根据这两个txt内的文件路径去读图像和label,修改正确即可。

Wangqi12138 commented 9 months ago

Traceback (most recent call last): File "tools/eval.py", line 78, in eval = EVAL(args.model_path) File "tools/eval.py", line 31, in init checkpoint = torch.load(model_path, map_location=torch.device('cpu')) File "/home/wangqi/anaconda3/envs/dbnet_env/lib/python3.6/site-packages/torch/serialization.py", line 594, in load with _open_file_like(f, 'rb') as opened_file: File "/home/wangqi/anaconda3/envs/dbnet_env/lib/python3.6/site-packages/torch/serialization.py", line 230, in _open_file_like return _open_file(name_or_buffer, mode) File "/home/wangqi/anaconda3/envs/dbnet_env/lib/python3.6/site-packages/torch/serialization.py", line 211, in init super(_open_file, self).init(open(name, mode)) FileNotFoundError: [Errno 2] No such file or directory: '' 请问出现这个问题也是数据格式不对吗 运行的是eval脚本

WenmuZhou commented 9 months ago

模型路径不对吧

Wangqi12138 commented 9 months ago

已解决 是路径的问题