最近在用自己在paddlelabel辛辛苦苦标的数据集来训练模型,分享一下自己采的坑。
先讲一下训练模型的流程吧:
首先下载好数据集,我是用我自己的。记住label.txt里面的文件路径非常重要,我就是因为这个原因搞了好几天,一定要是绝对路径,不然会显示找不到图片的路径的。
比如这样,我就是弄了相对路径找不到出处。然后就是因为我的数据集和label.txt的标签的对应有问题,这是我个人的疏忽,一定要保证你的照片和label.txt里面的标签一模一样。
后面补充:不清楚是不是官方的bug,我后面一张一张照片得检查,终于发现原来有2张图片没有label。一张图片因为没有文字,我就没有弄检测框,但是怕打乱图片顺序我又没有把照片删掉,所以就出现了有一张图片无法识别出label,导致后面没有办法继续读取照片。另一张不清楚什么的原因。
[2022/11/26 19:28:00] ppocr ERROR: When parsing line container/20191029-022800-01-1.jpg [{"transcription": "TLLU 6022699", "points": [[1128, 390], [1160, 402], [1132, 1109], [1090, 1107]], "difficult": false}]
, error happened with msg: Traceback (most recent call last):
File "/home/lixinru/PaddleOCR/ppocr/data/simple_dataset.py", line 132, in __getitem__
raise Exception("{} does not exist!".format(img_path))
Exception: ./container/container/20191029-022800-01-1.jpg does not exist!
Error:Blocking queue is killed bacause the data reader raises an exception
label.txt标签格式如下:transcription表示识别的内容,points表示方框的位置。
/home/lixinru/PaddleOCR/test22_data/20191029-143532-01-3-R.jpg [{"transcription": "TRHU250822I", "points": [[963, 516], [1020, 511], [1090, 1294], [1032, 1300]], "difficult": false}, {"transcription": "22G1", "points": [[1147, 513], [1191, 509], [1213, 796], [1168, 800]], "difficult": false}, {"transcription": "TRHU250822I", "points": [[963, 516], [1020, 511], [1090, 1294], [1032, 1300]], "difficult": false}, {"transcription": "22G1", "points": [[1147, 513], [1191, 509], [1213, 796], [1168, 800]], "difficult": false}]
官方文档:
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/dataset/ocr_datasets.md
然后就是下载模型,官方建议是用最新的。因为我之前因为数据集的问题帕不了,我也不清楚旧的版本行不行。反正官方说用最新就是用那个咯。
图片第2个就是:(记得要修改对应的配置文件哦)
下载地址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/finetune.md
顺便把配置文件讲一下巴,送fo送到西。
Global:
use_gpu: false #有的电脑不支持gpu,支持就改为true save_model_dir: /home/PaddleOCR/output/ch_db_mv3/ #注意是保存输出的模型 pretrained_model: ./ch_PP-OCRv3_det_distill_train/student.pdparams # 预训练模型路径save_res_path: /home/lixinru/PaddleOCR/output/det_db/predicts_db.txt #记得是绝对路径 Train: data_dir: /home/PaddleOCR/PPOCRLabel/data/container/ label_file_list: - /home/lixinru/PaddleOCR/PPOCRLabel/data/container/Label.txt #记得是绝对路径 Eval: dataset: name: SimpleDataSet data_dir: /home/PaddleOCR/PPOCRLabel/data/text_data/ label_file_list: - /home/PaddleOCR/PPOCRLabel/data/text_data/Label.txt #记得是绝对路径
loader: num_workers: 4 (注意这个,有的电脑不支持多线程跑,最好改为0)
终端命令为:(记得在home后面加上你自己电脑的名字)
python3 tools/train.py -c /home/PaddleOCR/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml
祝你也愉快得训练好自己的数据集