diff --git a/README.md b/README.md index a19f07ee89c04afb9347c603f0fd1bd2368898c8..55e33c121d373de7488468348362912aab1c48a3 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。 **近期更新** +- 2020.6.8 添加[数据集](./doc/datasets.md),并保持持续更新 - 2020.6.5 支持 `attetnion` 模型导出 `inference_model` - 2020.6.5 支持单独预测识别时,输出结果得分 - 2020.5.30 提供超轻量级中文OCR在线体验 - 2020.5.30 模型预测、训练支持Windows系统 -- 2020.5.30 开源通用中文OCR模型 - [more](./doc/update.md) ## 特性 @@ -95,6 +95,7 @@ python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_mode - [文本检测模型训练/评估/预测](./doc/detection.md) - [文本识别模型训练/评估/预测](./doc/recognition.md) - [基于预测引擎推理](./doc/inference.md) +- [数据集](./doc/datasets.md) ## 文本检测算法 @@ -112,6 +113,12 @@ PaddleOCR开源的文本检测算法列表: |DB|ResNet50_vd|83.79%|80.65%|82.19%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)| |DB|MobileNetV3|75.92%|73.18%|74.53%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)| +使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/datasets.md#1icdar2019-lsvt)街景数据集共3w张数据,训练中文检测模型的相关配置和预训练文件如下: +|模型|骨干网络|配置文件|预训练模型| +|-|-|-|-| +|超轻量中文模型|MobileNetV3|det_mv3_db.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)| +|通用中文OCR模型|ResNet50_vd|det_r50_vd_db.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)| + * 注: 上述DB模型的训练和评估,需设置后处理参数box_thresh=0.6,unclip_ratio=1.5,使用不同数据集、不同模型训练,可调整这两个参数进行优化 PaddleOCR文本检测算法的训练和使用请参考文档教程中[文本检测模型训练/评估/预测](./doc/detection.md)。 @@ -138,6 +145,12 @@ PaddleOCR开源的文本识别算法列表: |RARE|Resnet34_vd|84.90%|rec_r34_vd_tps_bilstm_attn|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_attn.tar)| |RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| +使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/datasets.md#1icdar2019-lsvt)街景数据集根据真值将图crop出来30w数据,进行位置校准。此外基于LSVT语料生成500w合成数据训练中文模型,相关配置和预训练文件如下: +|模型|骨干网络|配置文件|预训练模型| +|-|-|-|-| +|超轻量中文模型|MobileNetV3|rec_chinese_lite_train.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)| +|通用中文OCR模型|Resnet34_vd|rec_chinese_common_train.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)| + PaddleOCR文本识别算法的训练和使用请参考文档教程中[文本识别模型训练/评估/预测](./doc/recognition.md)。 ## 端到端OCR算法 @@ -161,25 +174,22 @@ PaddleOCR文本识别算法的训练和使用请参考文档教程中[文本识 ![](doc/imgs_results/chinese_db_crnn_server/8.jpg) ## FAQ -1. 预测报错:got an unexpected keyword argument 'gradient_clip' - - 安装的paddle版本不对,目前本项目仅支持paddle1.7,近期会适配到1.8。 - -2. 转换attention识别模型时报错:KeyError: 'predict' - - 基于Attention损失的识别模型推理还在调试中。对于中文文本识别,建议优先选择基于CTC损失的识别模型,实践中也发现基于Attention损失的效果不如基于CTC损失的识别模型。 - -3. 关于推理速度 +1. **预测报错:got an unexpected keyword argument 'gradient_clip'** +安装的paddle版本不对,目前本项目仅支持paddle1.7,近期会适配到1.8。 - 图片中的文字较多时,预测时间会增,可以使用--rec_batch_num设置更小预测batch num,默认值为30,可以改为10或其他数值。 +2. **转换attention识别模型时报错:KeyError: 'predict'** +基于Attention损失的识别模型推理还在调试中。对于中文文本识别,建议优先选择基于CTC损失的识别模型,实践中也发现基于Attention损失的效果不如基于CTC损失的识别模型。 -4. 服务部署与移动端部署 +3. **关于推理速度** +图片中的文字较多时,预测时间会增,可以使用--rec_batch_num设置更小预测batch num,默认值为30,可以改为10或其他数值。 - 预计6月中下旬会先后发布基于Serving的服务部署方案和基于Paddle Lite的移动端部署方案,欢迎持续关注。 +4. **服务部署与移动端部署** +预计6月中下旬会先后发布基于Serving的服务部署方案和基于Paddle Lite的移动端部署方案,欢迎持续关注。 -5. 自研算法发布时间 +5. **自研算法发布时间** +自研算法SAST、SRN、End2End-PSL都将在6-7月陆续发布,敬请期待。 - 自研算法SAST、SRN、End2End-PSL都将在6-7月陆续发布,敬请期待。 +[more](./doc/FAQ.md) ## 欢迎加入PaddleOCR技术交流群 加微信:paddlehelp,备注OCR,小助手拉你进群~ diff --git a/configs/rec/rec_chinese_common_train.yml b/configs/rec/rec_chinese_common_train.yml new file mode 100644 index 0000000000000000000000000000000000000000..af56dca26911bfcf8bbc361c7d506cb6980618db --- /dev/null +++ b/configs/rec/rec_chinese_common_train.yml @@ -0,0 +1,43 @@ +Global: + algorithm: CRNN + use_gpu: true + epoch_num: 3000 + log_smooth_window: 20 + print_batch_step: 10 + save_model_dir: ./output/rec_CRNN + save_epoch_step: 3 + eval_batch_step: 2000 + train_batch_size_per_card: 128 + test_batch_size_per_card: 128 + image_shape: [3, 32, 320] + max_text_length: 25 + character_type: ch + character_dict_path: ./ppocr/utils/ppocr_keys_v1.txt + loss_type: ctc + reader_yml: ./configs/rec/rec_chinese_reader.yml + pretrain_weights: + checkpoints: + save_inference_dir: + infer_img: + +Architecture: + function: ppocr.modeling.architectures.rec_model,RecModel + +Backbone: + function: ppocr.modeling.backbones.rec_resnet_vd,ResNet + layers: 34 + +Head: + function: ppocr.modeling.heads.rec_ctc_head,CTCPredict + encoder_type: rnn + SeqRNN: + hidden_size: 256 + +Loss: + function: ppocr.modeling.losses.rec_ctc_loss,CTCLoss + +Optimizer: + function: ppocr.optimizer,AdamDecay + base_lr: 0.0005 + beta1: 0.9 + beta2: 0.999 diff --git a/doc/FAQ.md b/doc/FAQ.md new file mode 100644 index 0000000000000000000000000000000000000000..373e275de85860c08d99a6441eb9f26460e8d4a6 --- /dev/null +++ b/doc/FAQ.md @@ -0,0 +1,43 @@ +## FAQ + +1. **预测报错:got an unexpected keyword argument 'gradient_clip'** +安装的paddle版本不对,目前本项目仅支持paddle1.7,近期会适配到1.8。 + +2. **转换attention识别模型时报错:KeyError: 'predict'** +基于Attention损失的识别模型推理还在调试中。对于中文文本识别,建议优先选择基于CTC损失的识别模型,实践中也发现基于Attention损失的效果不如基于CTC损失的识别模型。 + +3. **关于推理速度** +图片中的文字较多时,预测时间会增,可以使用--rec_batch_num设置更小预测batch num,默认值为30,可以改为10或其他数值。 + +4. **服务部署与移动端部署** +预计6月中下旬会先后发布基于Serving的服务部署方案和基于Paddle Lite的移动端部署方案,欢迎持续关注。 + +5. **自研算法发布时间** +自研算法SAST、SRN、End2End-PSL都将在6-7月陆续发布,敬请期待。 + +6. **如何在Windows或Mac系统上运行** +PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:1、在[快速安装](installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 + +7. **超轻量模型和通用OCR模型的区别** +目前PaddleOCR开源了2个中文模型,分别是8.6M超轻量中文模型和通用中文OCR模型。两者对比信息如下: + - 相同点:两者使用相同的**算法**和**训练数据**; + - 不同点:不同之处在于**骨干网络**和**通道参数**,超轻量模型使用MobileNetV3作为骨干网络,通用模型使用Resnet50_vd作为检测模型backbone,Resnet34_vd作为识别模型backbone,具体参数差异可对比两种模型训练的配置文件. + +|模型|骨干网络|检测训练配置|识别训练配置| +|-|-|-|-| +|8.6M超轻量中文OCR模型|MobileNetV3+MobileNetV3|det_mv3_db.yml|rec_chinese_lite_train.yml| +|通用中文OCR模型|Resnet50_vd+Resnet34_vd|det_r50_vd_db.yml|rec_chinese_common_train.yml| + +8. **是否有计划开源仅识别数字或仅识别英文+数字的模型** +暂不计划开源仅数字、仅数字+英文、或其他小垂类专用模型。PaddleOCR开源了多种检测、识别算法供用户自定义训练,两种中文模型也是基于开源的算法库训练产出,有小垂类需求的小伙伴,可以按照教程准备好数据,选择合适的配置文件,自行训练,相信能有不错的效果。训练有任何问题欢迎提issue或在交流群提问,我们会及时解答。 + +9. **开源模型使用的训练数据是什么,能否开源** +目前开源的模型,数据集和量级如下: + - 检测: + 英文数据集,ICDAR2015 + 中文数据集,LSVT街景数据集训练数据3w张图片 + - 识别: + 英文数据集,MJSynth和SynthText合成数据,数据量上千万。 + 中文数据集,LSVT街景数据集根据真值将图crop出来,并进行位置校准,总共30w张图像。此外基于LSVT的语料,合成数据500w。 + + 其中,公开数据集都是开源的,用户可自行搜索下载,也可参考[中文数据集](datasets.md),合成数据暂不开源,用户可使用开源合成工具自行合成,可参考的合成工具包括[text_renderer](https://github.com/Sanster/text_renderer)、[SynthText](https://github.com/ankush-me/SynthText)、[TextRecognitionDataGenerator](https://github.com/Belval/TextRecognitionDataGenerator)等。 \ No newline at end of file diff --git a/doc/WeChat.jpeg b/doc/WeChat.jpeg deleted file mode 100644 index c721b7d9e2871beed871e1f39a272850f5920545..0000000000000000000000000000000000000000 Binary files a/doc/WeChat.jpeg and /dev/null differ diff --git a/doc/datasets.md b/doc/datasets.md new file mode 100644 index 0000000000000000000000000000000000000000..1bca82c4e7e7407e36afeb2e4275a4fc974db6fa --- /dev/null +++ b/doc/datasets.md @@ -0,0 +1,58 @@ +## 数据集 +这里整理了常用中文数据集,持续更新中,欢迎各位小伙伴贡献数据集~ +- [ICDAR2019-LSVT](#ICDAR2019-LSVT) +- [ICDAR2017-RCTW-17](#ICDAR2017-RCTW-17) +- [中文街景文字识别](#中文街景文字识别) +- [中文文档文字识别](#中文文档文字识别) +- [ICDAR2019-ArT](#ICDAR2019-ArT) + +除了开源数据,用户还可使用合成工具自行合成,可参考的合成工具包括[text_renderer](https://github.com/Sanster/text_renderer)、[SynthText](https://github.com/ankush-me/SynthText)、[TextRecognitionDataGenerator](https://github.com/Belval/TextRecognitionDataGenerator)等。 + + +#### 1、ICDAR2019-LSVT +- **数据来源**:https://ai.baidu.com/broad/introduction?dataset=lsvt +- **数据简介**: 共45w中文街景图像,包含5w(2w测试+3w训练)全标注数据(文本坐标+文本内容),40w弱标注数据(仅文本内容),如下图所示: + ![](datasets/LSVT_1.jpg) + (a) 全标注数据 + ![](datasets/LSVT_2.jpg) + (b) 弱标注数据 +- **下载地址**:https://ai.baidu.com/broad/download?dataset=lsvt + + +#### 2、ICDAR2017-RCTW-17 +- **数据来源**:https://rctw.vlrlab.net/ +- **数据简介**:共包含12,000+图像,大部分图片是通过手机摄像头在野外采集的。有些是截图。这些图片展示了各种各样的场景,包括街景、海报、菜单、室内场景和手机应用程序的截图。 + ![](datasets/rctw.jpg) +- **下载地址**:https://rctw.vlrlab.net/dataset/ + + +#### 3、中文街景文字识别 +- **数据来源**:https://aistudio.baidu.com/aistudio/competition/detail/8 +- **数据简介**:共包括29万张图片,其中21万张图片作为训练集(带标注),8万张作为测试集(无标注)。数据集采自中国街景,并由街景图片中的文字行区域(例如店铺标牌、地标等等)截取出来而形成。所有图像都经过一些预处理,将文字区域利用仿射变化,等比映射为一张高为48像素的图片,如图所示: + ![](datasets/ch_street_rec_1.png) + (a) 标注:魅派集成吊顶 + ![](datasets/ch_street_rec_2.png) + (b) 标注:母婴用品连锁 +- **下载地址** +https://aistudio.baidu.com/aistudio/datasetdetail/8429 + + +#### 4、中文文档文字识别 +- **数据来源**:https://github.com/YCG09/chinese_ocr +- **数据简介**: + - 共约364万张图片,按照99:1划分成训练集和验证集。 + - 数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成 + - 包含汉字、英文字母、数字和标点共5990个字符(字符集合:https://github.com/YCG09/chinese_ocr/blob/master/train/char_std_5990.txt ) + - 每个样本固定10个字符,字符随机截取自语料库中的句子 + - 图片分辨率统一为280x32 + ![](datasets/ch_doc1.jpg) + ![](datasets/ch_doc2.jpg) + ![](datasets/ch_doc3.jpg) +- **下载地址**:https://pan.baidu.com/s/1QkI7kjah8SPHwOQ40rS1Pw (密码:lu7m) + + +#### 5、ICDAR2019-ArT +- **数据来源**:https://ai.baidu.com/broad/introduction?dataset=art +- **数据简介**:共包含10,166张图像,训练集5603图,测试集4563图。由Total-Text、SCUT-CTW1500、Baidu Curved Scene Text三部分组成,包含水平、多方向和弯曲等多种形状的文本。 + ![](datasets/ArT.jpg) +- **下载地址**:https://ai.baidu.com/broad/download?dataset=art \ No newline at end of file diff --git a/doc/datasets/ArT.jpg b/doc/datasets/ArT.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7855ba4ac631e11c3366b76ab827bd1abab34ff0 Binary files /dev/null and b/doc/datasets/ArT.jpg differ diff --git a/doc/datasets/LSVT_1.jpg b/doc/datasets/LSVT_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea11a7da5949b50241597834d8da475bd31ba54e Binary files /dev/null and b/doc/datasets/LSVT_1.jpg differ diff --git a/doc/datasets/LSVT_2.jpg b/doc/datasets/LSVT_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67bfbe5259853e097baead9a9d84905ba6cb4fc3 Binary files /dev/null and b/doc/datasets/LSVT_2.jpg differ diff --git a/doc/datasets/ch_doc1.jpg b/doc/datasets/ch_doc1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53534400ab5b5cf0eb6291fc3bb483c4e2fa0406 Binary files /dev/null and b/doc/datasets/ch_doc1.jpg differ diff --git a/doc/datasets/ch_doc2.jpg b/doc/datasets/ch_doc2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23343b8dedbae7be025552e3a45f9b7af7cf49ee Binary files /dev/null and b/doc/datasets/ch_doc2.jpg differ diff --git a/doc/datasets/ch_doc3.jpg b/doc/datasets/ch_doc3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c0c2053643c6211b9c2017e305c5fa05bba0cc66 Binary files /dev/null and b/doc/datasets/ch_doc3.jpg differ diff --git a/doc/datasets/ch_street_rec_1.png b/doc/datasets/ch_street_rec_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e158cbd1c55487b763d76a676192af3667a01b Binary files /dev/null and b/doc/datasets/ch_street_rec_1.png differ diff --git a/doc/datasets/ch_street_rec_2.png b/doc/datasets/ch_street_rec_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa0fd018801d6beba544a61faa42221adad6cc6 Binary files /dev/null and b/doc/datasets/ch_street_rec_2.png differ diff --git a/doc/datasets/rctw.jpg b/doc/datasets/rctw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e1f945b10bbae628ee5302a1fda7ad56a92546a Binary files /dev/null and b/doc/datasets/rctw.jpg differ diff --git a/doc/detection.md b/doc/detection.md index ab12dfe945e7679a52a626e73ad7f8f587b0c58d..849755bf4efbd3c7f536c39255feffee2071cf01 100644 --- a/doc/detection.md +++ b/doc/detection.md @@ -54,7 +54,7 @@ python3 tools/train.py -c configs/det/det_mv3_db.yml ``` 上述指令中,通过-c 选择训练使用configs/det/det_db_mv3.yml配置文件。 -有关配置文件的详细解释,请参考[链接](./doc/config.md)。 +有关配置文件的详细解释,请参考[链接](./config.md)。 您也可以通过-o参数在不需要修改yml文件的情况下,改变训练的参数,比如,调整训练的学习率为0.0001 ```