概述
MindOCR是一个基于MindSpore框架的OCR开发及应用的开源工具箱,可以帮助用户训练、应用业界最有优的文本检测、文本识别模型,例如DBNet/DBNet++和CRNN/SVTR,以实现图像文本理解的需求。
主要特性
- 模块化设计: MindOCR将OCR任务解耦成多个可配置模块,用户只需修改几行代码,就可以轻松地在定制化的数据和模型上配置训练、评估的全流程;
- 高性能: MindOCR提供的预训练权重和训练方法可以使其达到OCR任务上具有竞争力的表现;
- 易用性: MindOCR提供易用工具帮助在真实世界数据中进行文本的检测和识别(敬请期待)。
安装
依赖
请运行如下代码安装依赖包:
pip install -r requirements.txt
此外,请按官方指引安装MindSpore(>=1.9) 来适配您的机器。如果需要在分布式模式下进行训练,还请安装openmpi。
环境 |
版本 |
MindSpore |
>=1.9 |
Python |
>=3.7 |
注意:
通过PyPI安装
敬请期待
通过源文件安装
最新版的MindOCR可以通过如下命令安装:
pip install git+https://github.com/mindspore-lab/mindocr.git
注意:MindOCR目前暂时只在MindSpore>=1.9版本,Linux系统,GPU/Ascend设备上进行过测试。
快速上手
1. 模型训练评估
1.1 文本检测
MindOCR支持多种文本检测模型及数据集,在此我们使用DBNet模型和ICDAR2015数据集进行演示。请参考DBNet模型文档。
1.2 文本识别
MindOCR支持多种文本识别模型及数据集,在此我们使用CRNN模型和LMDB数据集进行演示。请参考CRNN模型文档。
2. 推理与部署
2.1 使用MX Engine推理
MX (MindX的缩写) 是一个支持昇腾设备高效推理与部署的工具。
MindOCR集成了MX推理引擎,支持文本检测识别任务,请参考mx_infer。
2.2 使用Lite推理
敬请期待
2.3 使用原生MindSpore推理
敬请期待
模型列表
文本检测
文本识别
模型训练的配置及性能结果请见configs.
基于MX引擎的推理性能结果及支持模型列表,请见mx inference performance
重要信息
变更日志
- 增加dynamic loss scaler支持, 且与drop overflow update兼容。如需使用, 请在配置文件中增加
loss_scale
字段并将type
参数设为dynamic
,参考例子请见configs/rec/crnn/crnn_icdar15.yaml
- 参数名修改:
output_keys
-> output_columns
;num_keys_to_net
-> num_columns_to_net
;
- 更新数据流程。
- 增加系统测试和CI工作流;
- 增加modelarts平台适配器,使得支持在OpenI平台上训练,在OpenI平台上训练需要以下步骤:
i) 在OpenI云平台上创建一个训练任务;
ii) 在网页上关联数据集,如ic15_mindocr;
iii) 增加 `config` 参数,在网页的UI界面配置yaml文件路径,如'/home/work/user-job-dir/V0001/configs/rec/test.yaml';
iv) 在网页的UI界面增加运行参数`enable_modelarts`并将其设置为True;
v) 填写其他项并启动训练任务。
- 增加评估脚本 with arg
ckpt_load_path
;
- Yaml文件中的
ckpt_save_dir
参数从system
移动到 train
;
- 增加rop_overflow_update控制。
如何贡献
我们欢迎包括问题单和PR在内的所有贡献,来让MindOCR变得更好。
请参考CONTRIBUTING.md作为贡献指南,请按照Model Template and Guideline的指引贡献一个适配所有接口的模型,多谢合作。
许可
本项目遵从Apache License 2.0开源许可。
引用
如果本项目对您的研究有帮助,请考虑引用:
@misc{MindSpore OCR 2023,
title={{MindSpore OCR }:MindSpore OCR Toolbox},
author={MindSpore Team},
howpublished = {\url{https://github.com/mindspore-lab/mindocr/}},
year={2023}
}