yizt / crnn.pytorch

crnn实现水平和垂直方向中文文字识别, 提供在3w多个中文字符训练的水平识别和垂直识别的预训练模型; 欢迎关注,试用和反馈问题... ...
Apache License 2.0
238 stars 52 forks source link

win10直接运行train.py 报错。微信nlanguage ForkingPickler(file, protocol).dump(obj) TypeError: cannot pickle 'Font' object #31

Open nissansz opened 2 years ago

nissansz commented 2 years ago

win10直接运行train.py 报错。微信nlanguage

C:\Users\Ni\AppData\Local\Programs\Python\Python38\python.exe F:/pycharm2020.2/crnn.pytorch_generator/train_Sentence.py Namespace(batch_size=32, device='cuda', direction='horizontal', dist_backend='nccl', dist_url='env://', distributed=False, epochs=1, init_epoch=0, local_rank=0, lr=0.01, lr_gamma=0.1, lr_step_size=30, momentum=0.9, output_dir='./output', sync_bn=False, weight_decay=1e-05, workers=4, world_size=1) 0%| | 0/95804 [00:47<?, ?it/s] Traceback (most recent call last): File "", line 1, in Traceback (most recent call last): File "F:/pycharm2020.2/crnn.pytorch_generator/train_Sentence.py", line 195, in train(arguments) File "F:/pycharm2020.2/crnn.pytorch_generator/train_Sentence.py", line 138, in train loss = train_one_epoch(model, criterion, optimizer, data_loader, device, epoch, args) File "F:/pycharm2020.2/crnn.pytorch_generator/train_Sentence.py", line 65, in train_one_epoch for image, target, input_len, target_len in tqdm(data_loader): File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\tqdm\std.py", line 1165, in iter File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\multiprocessing\spawn.py", line 116, in spawn_main exitcode = _main(fd, parent_sentinel) File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\multiprocessing\spawn.py", line 126, in _main for obj in iterable: self = reduction.pickle.load(from_parent) File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 359, in iter EOFError: Ran out of input return self._get_iterator() File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 305, in _get_iterator return _MultiProcessingDataLoaderIter(self) File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 918, in init w.start() File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\multiprocessing\process.py", line 121, in start self._popen = self._Popen(self) File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\multiprocessing\context.py", line 224, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\multiprocessing\context.py", line 327, in _Popen return Popen(process_obj) File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\multiprocessing\popen_spawn_win32.py", line 93, in init reduction.dump(process_obj, to_child) File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\multiprocessing\reduction.py", line 60, in dump ForkingPickler(file, protocol).dump(obj) TypeError: cannot pickle 'Font' object

Process finished with exit code 1

nissansz commented 2 years ago

这个错误,可以解决 # num_workers=args.workers 改为num_workers = 0

但是然后转到generator.py,又在这个类报错了 C:\Users\Ni\AppData\Local\Programs\Python\Python38\python.exe F:/pycharm2020.2/crnn.pytorch_generator/train.py Namespace(batch_size=64, device='cuda', direction='horizontal', dist_backend='nccl', dist_url='env://', distributed=False, epochs=90, init_epoch=0, local_rank=0, lr=0.01, lr_gamma=0.1, lr_step_size=30, momentum=0.9, output_dir='./output', sync_bn=False, weight_decay=1e-05, workers=4, world_size=1) 0%| | 0/18 [00:00<?, ?it/s] Traceback (most recent call last): File "F:/pycharm2020.2/crnn.pytorch_generator/train.py", line 195, in train(arguments) File "F:/pycharm2020.2/crnn.pytorch_generator/train.py", line 140, in train loss = train_one_epoch(model, criterion, optimizer, data_loader, device, epoch, args) File "F:/pycharm2020.2/crnn.pytorch_generator/train.py", line 65, in train_one_epoch for image, target, input_len, target_len in tqdm(data_loader): File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\tqdm\std.py", line 1165, in iter for obj in iterable: File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 521, in next data = self._next_data() File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\utils\data\dataloader.py", line 561, in _next_data data = self._dataset_fetcher.fetch(index) # may raise StopIteration File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\utils\data_utils\fetch.py", line 49, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "C:\Users\Ni\AppData\Local\Programs\Python\Python38\lib\site-packages\torch\utils\data_utils\fetch.py", line 49, in data = [self.dataset[idx] for idx in possibly_batched_index] File "F:\pycharm2020.2\crnn.pytorch_generator\generator.py", line 181, in getitem image, indices, target_len = self.gen_image() File "F:\pycharm2020.2\crnn.pytorch_generator\generator.py", line 158, in gen_image text = np.random.choice(FONT_CHARS_DICT[font_path], target_len) File "mtrand.pyx", line 908, in numpy.random.mtrand.RandomState.choice ValueError: 'a' cannot be empty unless no samples are taken

Process finished with exit code 1