PaddleOCR
算法主要包含三个部分,分别是:
- DB文本检测(
detection
) - 检测框矫正(
classification
) - *CRNN文本识别(
recognition
)
在训练时,这三个模型 单独进行训练,得到三个模型的训练权重,在推理预测时会把三个模型整合在一起,即 PaddleOCR
推理模型的最终结果是由上述三个模型串联推理而得,推理步骤大致如下:
- 第一步,进行文本检测,得到文本位置的检测框;
- 第二步,根据得到的文本检测框对其进行角度分类;
- 第三步,进行文本识别。
步骤一:文本检测模型( detection
)
以文本检测模型(detection
)为例,进行训练
将下载到的数据集解压到工作目录下,假设解压在 PaddleOCR/train_data/
下。另外, PaddleOCR
将 零散的标注文件整理成 单独的标注文件,您可以通过 wget
的方式进行下载。
cd PaddleOCR/
wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt
wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/test_icdar2015_label.txt
PaddleOCR
也提供了数据格式转换脚本(该脚本的目的就是将零散的标注文件整理为一个单独的文件),可以将官网 label
转换支持的数据格式。 数据转换工具在 ppocr/utils/gen_label.py
, 这里以训练集为例:
python gen_label.py --mode="det" --root_path="icdar_c4_train_imgs/" \
--input_path="ch4_training_localization_transcription_gt" \
--output_label="train_icdar2015_label.txt"
解压数据集和下载标注文件后, PaddleOCR/train_data/
有两个文件夹和两个文件,分别是:
/PaddleOCR/train_data/icdar2015/text_localization/
└─ icdar_c4_train_imgs/ icdar数据集的训练数据
└─ ch4_test_images/ icdar数据集的测试数据
└─ train_icdar2015_label.txt icdar数据集的训练标注
└─ test_icdar2015_label.txt icdar数据集的测试标注
提供的标注文件格式如下,中间用”\t”分隔:
" 图像文件名 json.dumps编码的图像标注信息"
ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]
json.dumps
编码前的图像标注信息是包含多个字典的 list
,字典中的 points
表示文本框的四个点的坐标(x, y), 从左上角的点开始顺时针排列。
transcription
表示当前文本框的文字, 当其内容为”###”时,表示该文本框无效,在训练时会跳过。
如果您想在其他数据集上训练,可以按照上述形式构建标注文件。
PaddleOCR
开源的文本检测算法列表:
在 ICDAR2015
文本检测公开数据集上,算法效果如下:
模型骨干网络precisionrecallHmean下载链接EASTResNet50_vd85.80%86.71%86.25%
EASTMobileNetV379.42%80.64%80.03%
DBResNet50_vd86.41%78.72%82.38%
DBMobileNetV377.29%73.08%75.12%
SASTResNet50_vd91.39%83.77%87.42%
在 Total-text
文本检测公开数据集上,算法效果如下:
模型骨干网络precisionrecallHmean下载链接SASTResNet50_vd89.63%78.44%83.66%
说明: SAST
模型训练额外加入了 icdar2013
、 icdar2017
、 COCO-Text
、 ArT
等公开数据集进行调优。 PaddleOCR
用到的经过整理格式的英文公开数据集下载:百度云地址 (提取码: 2bpi)
PaddleOCR
的检测模型目前支持 两种骨干网络,分别是 MobileNetV3
、 ResNet_vd
系列,您可以根据需求使用PaddleClas中的模型更换骨干网络。
cd PaddleOCR/
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_vd_pretrained.tar
wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar
tar -xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models/
./pretrain_models/MobileNetV3_large_x0_5_pretrained/
└─ conv_last_bn_mean
└─ conv_last_bn_offset
└─ conv_last_bn_scale
└─ conv_last_bn_variance
└─ ......
如果您安装的是cpu版本,请将配置文件中的 use_gpu
字段修改为 false
python tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrain_weights=./pretrain_models/MobileNetV3_large_x0_5_pretrained/
python -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrain_weights=./pretrain_models/MobileNetV3_large_x0_5_pretrained/
您也可以通过 -o
参数在不需要修改 yml
文件的情况下,改变训练的参数,比如,调整训练的学习率为 0.0001
如果训练程序中断,如果希望加载训练中断的模型从而恢复训练,可以通过指定 Global.checkpoints
指定要加载的模型路径:
python tools/train.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./your/trained/model
注意: Global.checkpoints
的优先级高于 Global.pretrain_weights
的优先级,即同时指定两个参数时,优先加载 Global.checkpoints
指定的模型,如果 Global.checkpoints
指定的模型路径有误,会加载 Global.pretrain_weights
指定的模型。
PaddleOCR
计算三个 OCR
检测相关的指标,分别是: Precision
、 Recall
、 Hmean
。
运行如下代码,根据配置文件 det_db_mv3.yml
中 save_res_path
指定的测试集检测结果文件,计算评估指标。
评估时设置后处理参数 box_thresh=0.5
, unclip_ratio=1.5
,使用不同数据集、不同模型训练,可调整这两个参数进行优化
训练中模型参数默认保存在 Global.save_model_dir
目录下。在评估指标时,需要设置 Global.checkpoints
指向保存的参数文件。
python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="{path/to/weights}/best_accuracy" PostProcess.box_thresh=0.5 PostProcess.unclip_ratio=1.5
注:
box_thresh
、unclip_ratio
是DB
后处理所需要的参数,在评估EAST
模型时不需要设置
测试 单张图像的检测效果
python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false
测试 DB
模型时,调整后处理阈值,
python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5
测试文件夹下 所有图像的检测效果
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false
截止到目前,我们得到了文本检测的训练模型,并对其进行了测试,但这并不是最终的推理模型,需要进行转换,以 MobileNetV3
为 backbone
训练的 DB
算法为例,将训练好的模型转换成 inference
模型只需要运行如下命令:
python3 tools/export_model.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml -o Global.pretrained_model=./ch_lite/ch_ppocr_mobile_v2.0_det_train/best_accuracy Global.load_static_weights=False Global.save_inference_dir=./inference/det_db/
步骤二:文本识别模型( recognition
)
PaddleOCR
支持两种数据格式:
lmdb
用于训练公开数据,调试算法;通用数据
训练自己的数据:
训练数据的默认存储路径是 PaddleOCR/train_data
,如果您的磁盘上已有数据集, Windows
系统需要将数据集拷贝至对应位置, Linux
只需创建软链接至数据集目录:
ln -sf <path/to/dataset> <path/to/paddle_ocr>/train_data/dataset
若您希望使用自己的数据进行训练,请参考下文组织您的数据。
- 训练集
首先请将训练图片放入同一个文件夹( train_images
),并用一个 txt
文件( rec_gt_train.txt
)记录图片路径和标签。
注意: 默认请将图片路径和图片标签用 \t
分割,如用其他方式分割将造成训练报错
" 图像文件名 图像标注信息 "
train_data/train_0001.jpg 简单可依赖
train_data/train_0002.jpg 用科技让复杂的世界更简单
PaddleOCR
提供了一份用于训练 icdar2015
数据集的标签文件,通过以下方式下载:
wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_train.txt
wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_test.txt
PaddleOCR
也提供了 数据格式转换脚本,可以将官网 label
转换支持的数据格式。 数据转换工具在 ppocr/utils/gen_label.py
, 这里以训练集为例:
python gen_label.py --mode="rec" --input_path="{path/of/origin/label}" --output_label="rec_gt_label.txt"
最终训练集应有如下文件结构:
|-train_data
|-ic15_data
|- rec_gt_train.txt
|- train
|- word_001.png
|- word_002.jpg
|- word_003.jpg
| ...
- 测试集
同训练集类似,测试集也需要提供一个包含所有图片的文件夹( test
)和一个 rec_gt_test.txt
,测试集的结构如下所示:
|-train_data
|-ic15_data
|- rec_gt_test.txt
|- test
|- word_001.jpg
|- word_002.jpg
|- word_003.jpg
| ...
最后需要提供一个字典( {word_dict_name}.txt
),使模型在训练时,可以将所有出现的字符映射为字典的索引。
因此字典需要包含所有希望被正确识别的字符, {word_dict_name}.txt
需要写成如下格式,并以 utf-8
编码格式保存:
l
d
a
d
r
n
word_dict.txt
每行有一个单字,将字符与数字索引映射在一起, “and”
将被映射成 [2 5 1]
ppocr/utils/ppocr_keys_v1.txt
是一个包含6623个字符的中文字典
ppocr/utils/ic15_dict.txt
是一个包含36个字符的英文字典
ppocr/utils/dict/french_dict.txt
是一个包含118个字符的法文字典
ppocr/utils/dict/japan_dict.txt
是一个包含4399个字符的日文字典
ppocr/utils/dict/korean_dict.txt
是一个包含3636个字符的韩文字典
ppocr/utils/dict/german_dict.txt
是一个包含131个字符的德文字典
ppocr/utils/dict/en_dict.txt
是一个包含63个字符的英文字典
您可以按需使用。
目前的多语言模型仍处在 demo
阶段,会持续优化模型并补充语种, 非常欢迎您为我们提供其他语言的字典和字体,如您愿意可将字典文件提交至 dict 将语料文件提交至corpus,我们会在Repo中感谢您。
- 自定义字典
如需自定义dic文件,请在 configs/rec/rec_icdar15_train.yml
中添加 character_dict_path
字段, 指向您的字典路径。
并将 character_type
设置为 ch
。
- 添加空格类别
如果希望支持识别”空格”类别, 请将 yml
文件中的 use_space_char
字段设置为 True
。
PaddleOCR
基于动态图开源的文本识别算法列表:
- CRNN(paper)[7](ppocr推荐)
- Rosetta(paper)[10]
- STAR-Net(paper)[11]
- RARE(paper)[12] coming soon
- SRN(paper)[5] coming soon
参考[DTRB]文字识别训练和评估流程,使用 MJSynth
和 SynthText
两个文字识别数据集训练,在 IIIT
, SVT
, IC03
, IC13
, IC15
, SVTP
, CUTE
数据集上进行评估,算法效果如下:
模型骨干网络Avg Accuracy模型存储命名下载链接RosettaResnet34_vd80.9%rec_r34_vd_none_none_ctc
RosettaMobileNetV378.05%rec_mv3_none_none_ctc
CRNNResnet34_vd82.76%rec_r34_vd_none_bilstm_ctc
CRNNMobileNetV379.97%rec_mv3_none_bilstm_ctc
StarNetResnet34_vd84.44%rec_r34_vd_tps_bilstm_ctc
StarNetMobileNetV381.42%rec_mv3_tps_bilstm_ctc
PaddleOCR
提供了训练脚本、评估脚本和预测脚本,本节将以 CRNN
识别模型为例:
首先 下载预训练模型,您可以下载训练好的模型在 icdar2015
数据上进行 finetune
cd PaddleOCR/
wget -P ./pretrain_models/ https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/rec_mv3_none_bilstm_ctc_v2.0_train.tar
cd pretrain_models
tar -xf rec_mv3_none_bilstm_ctc_v2.0_train.tar && rm -rf rec_mv3_none_bilstm_ctc_v2.0_train.tar
如果您安装的是cpu版本,请将配置文件中的 use_gpu
字段修改为false
python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/rec_icdar15_train.yml
- 数据增强
PaddleOCR
提供了多种数据增强方式,如果您希望在训练时加入扰动,请在配置文件中设置 distort: true
。
默认的扰动方式有:颜色空间转换(cvtColor
)、模糊(blur
)、抖动(jitter
)、噪声(Gasuss noise
)、随机切割(random crop
)、透视(perspective
)、颜色反转(reverse
)。
由于OpenCV的兼容性问题,扰动操作暂时只支持Linux
PaddleOCR
支持训练和评估交替进行, 可以在 configs/rec/rec_icdar15_train.yml
中修改 eval_batch_step
设置评估频率,默认每500个 iter
评估一次。评估过程中默认将最佳 acc
模型,保存为 output/rec_CRNN/best_accuracy
。
如果验证集很大,测试将会比较耗时,建议减少评估次数,或训练完再进行评估。
提示: 可通过 -c
参数选择 configs/rec/
路径下的多种模型配置进行训练, PaddleOCR
支持的识别算法有:
配置文件算法名称backbonetransseqpred
CRNNMobilenet_v3 small 0.5NoneBiLSTMctc
CRNNResNet34_vdNoneBiLSTMctc
CRNNMobilenet_v3 large 0.5NoneBiLSTMctc
CRNNMobilenet_v3 large 0.5NoneBiLSTMctc
RosettaMobilenet_v3 large 0.5NoneNonectc
CRNNResnet34_vdNoneBiLSTMctc
RosettaResnet34_vdNoneNonectc
训练中文数据,推荐使用 rec_chinese_lite_train_v2.0.yml
,如您希望尝试其他算法在中文数据集上的效果,请参考下列说明修改配置文件:
以 rec_chinese_lite_train_v2.0.yml
为例:
Global:
...
character_dict_path: ppocr/utils/ppocr_keys_v1.txt
character_type: ch
...
use_space_char: True
Optimizer:
...
lr:
name: Cosine
learning_rate: 0.001
...
...
Train:
dataset:
name: SimpleDataSet
data_dir: ./train_data/
label_file_list: ["./train_data/train_list.txt"]
transforms:
...
- RecResizeImg:
image_shape: [3, 32, 320]
...
loader:
...
batch_size_per_card: 256
...
Eval:
dataset:
name: SimpleDataSet
data_dir: ./train_data
label_file_list: ["./train_data/val_list.txt"]
transforms:
...
- RecResizeImg:
image_shape: [3, 32, 320]
...
loader:
batch_size_per_card: 256
...
注意,预测/评估时的配置文件请务必与训练一致。
评估数据集可以通过 configs/rec/rec_icdar15_train.yml
修改 Eval
中的 label_file_path
设置。
python -m paddle.distributed.launch --gpus '0' tools/eval.py -c configs/rec/rec_icdar15_train.yml -o Global.checkpoints={path/to/weights}/best_accuracy
使用 PaddleOCR
训练好的模型,可以通过以下脚本进行快速预测。
默认预测图片存储在 infer_img
里,通过 -o Global.checkpoints
指定权重:
python3 tools/infer_rec.py -c configs/rec/rec_icdar15_train.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.load_static_weights=false Global.infer_img=doc/imgs_words/en/word_1.png
预测使用的配置文件必须与训练一致,如您通过 python3 tools/train.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml
完成了中文模型的训练,您可以使用如下命令进行中文模型预测。
python3 tools/infer_rec.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.load_static_weights=false Global.infer_img=doc/imgs_words/ch/word_1.jpg
识别模型转 inference
模型与检测的方式相同,如下:
python3 tools/export_model.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml -o Global.pretrained_model=./ch_lite/ch_ppocr_mobile_v2.0_rec_train/best_accuracy Global.load_static_weights=False Global.save_inference_dir=./inference/rec_crnn/
注意:如果您是在自己的数据集上训练的模型,并且调整了中文字符的字典文件,请注意修改配置文件中的 character_dict_path
是否是所需要的字典文件。
转换成功后,在目录下有三个文件:
/inference/rec_crnn/
├── inference.pdiparams
├── inference.pdiparams.info
└── inference.pdmodel
步骤三:文本角度分类模型
请按如下步骤设置数据集:
训练数据的默认存储路径是 PaddleOCR/train_data/cls
,如果您的磁盘上已有数据集, Windows
系统需要将数据集拷贝至对应位置, Linux
只需创建软链接至数据集目录:
ln -sf <path/to/dataset> <path/to/paddle_ocr>/train_data/cls/dataset
- *训练集
首先请将训练图片放入同一个文件夹( train_images
),并用一个 txt
文件( cls_gt_train.txt
)记录图片路径和标签。
注意: 默认请将图片路径和图片标签用 \t
分割,如用其他方式分割将造成训练报错
0
和 180
分别表示图片的角度为 0
度和 180
度
" 图像文件名 图像标注信息 "
train/word_001.jpg 0
train/word_002.jpg 180
最终训练集应有如下文件结构:
|-train_data
|-cls
|- cls_gt_train.txt
|- train
|- word_001.png
|- word_002.jpg
|- word_003.jpg
| ...
- *测试集
同训练集类似,测试集也需要提供一个包含所有图片的文件夹( train
)和一个 cls_gt_test.txt
,测试集的结构如下所示:
|-train_data
|-cls
|- cls_gt_test.txt
|- test
|- word_001.jpg
|- word_002.jpg
|- word_003.jpg
| ...
将准备好的 txt
文件和图片文件夹路径分别写入配置文件的 Train/Eval.dataset.label_file_list
和 Train/Eval.dataset.data_dir
字段下, Train/Eval.dataset.data_dir
字段下的路径和文件里记载的图片名构成了图片的绝对路径。
如果您安装的是cpu版本,请将配置文件中的 use_gpu
字段修改为false
python3 -m paddle.distributed.launch --gpus '0,1,2,3,4,5,6,7' tools/train.py -c configs/cls/cls_mv3.yml
PaddleOCR
提供了多种数据增强方式,如果您希望在训练时加入扰动,请在配置文件中取消 Train.dataset.transforms
下的 RecAug
和 RandAugment
字段的注释。
默认的扰动方式有:颜色空间转换(cvtColor
)、模糊(blur
)、抖动(jitter
)、噪声(Gasuss noise
)、随机切割(random crop
)、透视(perspective
)、颜色反转(reverse
),随机数据增强(RandAugment
)。
由于OpenCV的兼容性问题,扰动操作暂时只支持linux
PaddleOCR支持训练和评估交替进行, 可以在 configs/cls/cls_mv3.yml
中修改 eval_batch_step
设置评估频率,默认每1000个iter评估一次。训练过程中将会保存如下内容:
├── best_accuracy.pdopt
├── best_accuracy.pdparams
├── best_accuracy.states
├── config.yml
├── latest.pdopt
├── latest.pdparams
├── latest.states
└── train.log
如果验证集很大,测试将会比较耗时,建议减少评估次数,或训练完再进行评估。
注意,预测/评估时的配置文件请务必与训练一致。
评估数据集可以通过修改 configs/cls/cls_mv3.yml
文件里的 Eval.dataset.label_file_list
字段设置。
export CUDA_VISIBLE_DEVICES=0
python3 tools/eval.py -c configs/cls/cls_mv3.yml -o Global.checkpoints={path/to/weights}/best_accuracy
使用 PaddleOCR 训练好的模型,可以通过以下脚本进行快速预测。
通过 Global.infer_img
指定预测图片或文件夹路径,通过 Global.checkpoints
指定权重:
python3 tools/infer_cls.py -c configs/cls/cls_mv3.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.load_static_weights=false Global.infer_img=doc/imgs_words/ch/word_1.jpg
方向分类模型转inference模型与检测的方式相同,如下:
python3 tools/export_model.py -c configs/cls/cls_mv3.yml -o Global.pretrained_model=./ch_lite/ch_ppocr_mobile_v2.0_cls_train/best_accuracy Global.load_static_weights=False Global.save_inference_dir=./inference/cls/
转换成功后,在目录下有三个文件:
/inference/cls/
├── inference.pdiparams
├── inference.pdiparams.info
└── inference.pdmodel
以下代码实现了 文本检测、 方向分类器和 文本识别串联推理,在执行预测时,需要通过参数image_dir指定单张图像或者图像集合的路径、参数 det_model_dir
指定检测inference模型的路径、参数 rec_model_dir
指定识别inference模型的路径、参数 use_angle_cls
指定是否使用方向分类器、参数 cls_model_dir
指定方向分类器inference模型的路径、参数 use_space_char
指定是否预测空格字符。可视化识别结果默认保存到 ./inference_results
文件夹里面。
python tools/infer/predict_system.py --image_dir="./inference_img/11.jpg" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer" --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer" --use_angle_cls=True --use_space_char=True
python tools/infer/predict_system.py --image_dir="./doc/imgs/" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/" --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True
python tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/" --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True --use_gpu=False
PaddleOCR提供的可下载模型包括 推理模型
、 训练模型
、 预训练模型
、 slim模型
,模型区别说明如下:
模型类型模型格式简介推理模型inference.pdmodel、inference.pdiparams用于python预测引擎推理,
训练模型、预训练模型.pdparams、.pdopt、.states训练过程中保存的模型的参数、优化器状态和训练中间信息,多用于模型指标评估和恢复训练slim模型.nb用于lite部署
一、文本检测模型
模型名称模型简介配置文件推理模型大小下载地址ch_ppocr_mobile_slim_v2.0_detslim裁剪版超轻量模型,支持中英文、多语种文本检测
推理模型 (coming soon) / 训练模型 (coming soon)ch_ppocr_mobile_v2.0_det原始超轻量模型,支持中英文、多语种文本检测
ch_ppocr_server_v2.0_det通用模型,支持中英文、多语种文本检测,比超轻量模型更大,但效果更好
47M
二、文本识别模型
模型名称模型简介配置文件推理模型大小下载地址ch_ppocr_mobile_slim_v2.0_recslim裁剪量化版超轻量模型,支持中英文、数字识别
ch_ppocr_mobile_v2.0_rec原始超轻量模型,支持中英文、数字识别
3.71M
ch_ppocr_server_v2.0_rec通用模型,支持中英文、数字识别
94.8M
说明: 训练模型
是基于预训练模型在真实数据与竖排合成文本数据上finetune得到的模型,在真实应用场景中有着更好的表现, 预训练模型
则是直接基于全量真实数据与合成数据训练得到,更适合用于在自己的数据集上finetune。
模型名称模型简介配置文件推理模型大小下载地址en_number_mobile_slim_v2.0_recslim裁剪量化版超轻量模型,支持英文、数字识别
en_number_mobile_v2.0_rec原始超轻量模型,支持英文、数字识别
2.56M
说明: 新增的多语言模型的配置文件通过代码方式生成,您可以通过 --help
参数查看当前PaddleOCR支持生成哪些多语言的配置文件:
cd {your/path/}PaddleOCR/configs/rec/multi_language/
python3 generate_multi_language_configs.py --help
下面以生成意大利语配置文件为例:
如果您仅仅想用配置文件测试PaddleOCR提供的多语言模型可以通过下面命令生成默认的配置文件,使用PaddleOCR提供的小语种字典进行预测。
cd {your/path/}PaddleOCR/configs/rec/multi_language/
python3 generate_multi_language_configs.py -l it
如果您想训练自己的小语种模型,可以准备好训练集文件、验证集文件、字典文件和训练数据路径,这里假设准备的意大利语的训练集、验证集、字典和训练数据路径为:
- 训练集:{your/path/}PaddleOCR/train_data/train_list.txt
- 验证集:{your/path/}PaddleOCR/train_data/val_list.txt
- 使用PaddleOCR提供的默认字典:{your/path/}PaddleOCR/ppocr/utils/dict/it_dict.txt
- 训练数据路径:{your/path/}PaddleOCR/train_data
使用以下命令生成配置文件:
cd {your/path/}PaddleOCR/configs/rec/multi_language/
python3 generate_multi_language_configs.py -l it \
--train train_data/train_list.txt \
--val train_data/val_list.txt \
--data_dir train_data \
-o Global.use_gpu=False
模型名称模型简介配置文件推理模型大小下载地址french_mobile_v2.0_rec法文识别
2.65M
german_mobile_v2.0_rec德文识别
2.65M
korean_mobile_v2.0_rec韩文识别
3.9M
japan_mobile_v2.0_rec日文识别
4.23M
it_mobile_v2.0_rec意大利文识别rec_it_lite_train.yml2.53M
xi_mobile_v2.0_rec西班牙文识别rec_xi_lite_train.yml2.53M
pu_mobile_v2.0_rec葡萄牙文识别rec_pu_lite_train.yml2.63M
ru_mobile_v2.0_rec俄罗斯文识别rec_ru_lite_train.yml2.63M
ar_mobile_v2.0_rec阿拉伯文识别rec_ar_lite_train.yml2.53M
hi_mobile_v2.0_rec印地文识别rec_hi_lite_train.yml2.63M
chinese_cht_mobile_v2.0_rec中文繁体识别rec_chinese_cht_lite_train.yml5.63M
ug_mobile_v2.0_rec维吾尔文识别rec_ug_lite_train.yml2.63M
fa_mobile_v2.0_rec波斯文识别rec_fa_lite_train.yml2.63M
ur_mobile_v2.0_rec乌尔都文识别rec_ur_lite_train.yml2.63M
rs_mobile_v2.0_rec塞尔维亚文(latin)识别rec_rs_lite_train.yml2.53M
oc_mobile_v2.0_rec欧西坦文识别rec_oc_lite_train.yml2.53M
mr_mobile_v2.0_rec马拉地文识别rec_mr_lite_train.yml2.63M
ne_mobile_v2.0_rec尼泊尔文识别rec_ne_lite_train.yml2.63M
rsc_mobile_v2.0_rec塞尔维亚文(cyrillic)识别rec_rsc_lite_train.yml2.63M
bg_mobile_v2.0_rec保加利亚文识别rec_bg_lite_train.yml2.63M
uk_mobile_v2.0_rec乌克兰文识别rec_uk_lite_train.yml2.63M
be_mobile_v2.0_rec白俄罗斯文识别rec_be_lite_train.yml2.63M
te_mobile_v2.0_rec泰卢固文识别rec_te_lite_train.yml2.63M
ka_mobile_v2.0_rec卡纳达文识别rec_ka_lite_train.yml2.63M
ta_mobile_v2.0_rec泰米尔文识别rec_ta_lite_train.yml2.63M
三、文本方向分类模型
模型名称模型简介配置文件推理模型大小下载地址ch_ppocr_mobile_slim_v2.0_clsslim量化版模型
ch_ppocr_mobile_v2.0_cls原始模型
1.38M
Original: https://blog.csdn.net/csdn1e/article/details/113317755
Author: great-wind
Title: PaddleOCR使用笔记之模型训练
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544691/
转载文章受原作者版权保护。转载请注明原作者出处!