PaddleOCR训练文字识别模型时遇到an evaluation is run every 2000 iterations后程序不运行直接结束

在训练PaddleOCR的rec模块时,遇到程序异常结束的问题。经过排查,发现是由于evaldataset中无图像导致的评估禁用,并且通过调整Global配置中的max_text_length参数至1000以适应文本长度,最终解决了训练中断的故障。

昨日训练PaddleOCR的文字识别模块(rec)时遇到了如下输出后 程序直接结束

ppocr INFO: load pretrain successful from D:\PaddleOCR-train\trains\ResNet\ResNet34_vd_pretrained
[2023/05/20 08:42:37] ppocr INFO: No Images in eval dataset, evaluation during training will be disabled
[2023/05/20 08:42:37] ppocr INFO: During the training process, after the 1e+111th iteration, an evaluation is run every 2000 iterations

最开始排查了各种设置 包括将yum中Train的batch_size_per_card和num_workers调小,最后运行结果依然如此。

最后 在github上的一篇lssues中发现需要修改Global中的max_text_length,将其调整致1000,使实际文本长度<max_text_length设置的长度

问题解决了

源文章:https://github.com/PaddlePaddle/PaddleOCR/issues/9681

在使用 PP-OCR 进行训练,遇到 `'list index out of range'` 错误通常是由于数据预处理或数据集配置当引起的。该错误表明程序尝试访问列表中存在的索引,常见于数据标注格式错误、训练数据路径配置错误、或者数据加载器在读取数据未能正确解析文件内容。 以下是可能导致此错误的几个原因及对应的解决方案: ### 数据标注文件格式错误 PP-OCR 要求训练数据的标注文件(如 `train.txt`)中每一行包含图像路径和对应的文本标注,格式通常如下: ``` /path/to/image1.jpg 中国 /path/to/image2.jpg OCR技术 ``` 若某行数据格式错误,例如缺少图像路径或标签,或使用了一致的分隔符(如制表符 `\t` 和空格混用),则在读取过程中会引发索引越界错误。 **解决方案:** - 检查标注文件中的每一行是否都符合格式要求。 - 确保使用统一的分隔符(推荐使用 `\t` 分隔图像路径和标签)。 - 可使用以下 Python 代码片段验证标注文件格式: ```python with open('train.txt', 'r', encoding='utf-8') as f: lines = f.readlines() for line in lines: parts = line.strip().split('\t') if len(parts) != 2: print(f"Invalid line: {line}") ``` ### 图像路径配置错误 若标注文件中图像路径配置错误,例如路径拼写错误、文件存在、或相对路径与当前工作目录匹配,PP-OCR 在加载图像无法正确读取文件,也可能导致后续处理过程中访问空列表引发索引错误。 **解决方案:** - 检查标注文件中的图像路径是否正确,确保图像文件确实存在。 - 若使用相对路径,确保训练脚本的当前工作目录与图像路径匹配。 - 可在数据加载器中加入路径检查逻辑: ```python import os image_path = parts[0] if not os.path.exists(image_path): raise FileNotFoundError(f"Image file not found: {image_path}") ``` ### 数据增强或预处理阶段异常 PP-OCR 的训练流程中通常包含数据增强和图像预处理步骤。若图像尺寸过小、标签文本为空、或标注框超出图像边界,可能导致预处理函数返回空列表或异常数据结构,从而引发索引错误。 **解决方案:** - 检查训练数据中的文本标注是否为空。 - 确保标注框坐标在图像范围内。 - 在数据增强前加入异常处理逻辑: ```python try: # 执行数据增强操作 augmented_data = transform(image=image, bboxes=bboxes) except Exception as e: print(f"Data augmentation error: {e}") ``` ### 配置文件参数设置错误 PP-OCR 的训练配置文件(如 `configs/rec/rec_mv3_none_bilstm_ctc.yml`)中若参数设置当,例如 `batch_size` 设置过大导致部分批次数据足,也可能引发索引越界错误。 **解决方案:** - 检查配置文件中的 `batch_size`、`num_workers` 等参数是否合理。 - 尝试减小 `batch_size` 值以避免数据足问题。 ### 代码逻辑错误或版本兼容性问题 PP-OCR 的同版本之间可能存在 API 变化,若代码逻辑未及更新或依赖库版本一致,也可能导致索引错误。 **解决方案:** - 确认使用的 PP-OCR 版本与文档一致。 - 更新依赖库至推荐版本。 - 参考官方文档中的训练示例重新配置训练流程。 通过上述分析和解决方案,应能有效排查和解决 PP-OCR 训练过程中出现的 `'list index out of range'` 错误[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值