错误信息
ERROR:root:DataLoader reader thread raised an exception!
Traceback (most recent call last):
File “/home/disk0/zw/workspace/PaddleOCR/test/load_data.py”, line 38, in
for idx,batch in enumerate(data_loader):
File “/home/disk0/zw/anaconda3/envs/paddle/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py”, line 788, in next
data = self.reader.read_next_var_list()
SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception.
[Hint: Expected killed != true, but received killed_:1 == true:1.] (at /paddle/paddle/fluid/operators/reader/blocking_queue.h:158)
分析原因
在使用PaddleOCR
训练文字识别模型的时候报了上面的错误,我是自己制作的数据集来训练的
解决方法
- 检查自己制作的数据集格式是否为
" 图像文件名 图像标注信息 "
train_data/train_0001.jpg 简单可依赖
train_data/train_0002.jpg 用科技让复杂的世界更简单
注意
:图片路径和图像标注信息之间用\t
进行分割
- 检查label标签的长度
默认label最长的长度为25
,如果小于25就会使用0进行补充,大于25会在CTCLabelEncode
的时候回直接返回一个None,对于这种情况有两种解决方法,在制作标签的时候限制label的长度不大于25或者将配置文件中的max_text_length参数改为标签label中的最长长度。
- 检查图像的shape
默认的shape为[3, 32, 320]
,paddleOCR在实现resize shape的时候有一个问题,在RecResizeImg
中如果ratio = w * 1.0 / h
大于320/32=10
时会导致最终输出的图片尺寸不为[3,32,320]
图片的宽会大于320,从而导致在加载数据的时候报上面的错误。对于这种情况的解决办法,直接删除不符合条件的图片
或调大shape的尺寸