英语 | 中文
简介 | ?安装|快速入门 |教程 | ?型号列表| ?数据集列表|常见问题 | ?笔记
MindOCR是一个基于MindSpore的开源OCR开发和应用工具箱,集成了一系列主流文本检测和识别算法/模型,提供易于使用的训练和推理工具。它可以加速在实际应用中开发和部署 SoTA 文本检测和识别模型的过程,例如 DBNet/DBNet++ 和 CRNN/SVTR,并帮助满足图像文本理解的需求。
以下是对应的mindocr
版本和支持的mindspore版本。
头脑多克 | 心灵孢子 |
---|---|
掌握 | 掌握 |
0.4 | 2.3.0 |
0.3 | 2.2.10 |
0.1 | 1.8 |
MindOCR 基于 MindSpore AI 框架构建,兼容以下框架版本。 Training安装指南,请参考如下安装链接。
mindocr
版本。MindSpore Lite离线推理请参考Lite离线环境安装
pip install -r requirements.txt
git clone https://github.com/mindspore-lab/mindocr.git
cd mindocr
pip install -e .
使用
-e
进行“可编辑”模式可以帮助解决潜在的模块导入问题。
提供的dockers环境信息如下:
请按照以下步骤安装docker:
下载docker
docker pull swr.cn-central-221.ovaijisuan.com/mindocr/mindocr_dev_910_ms_2_2_10_cann7_0_py39:v1
docker pull swr.cn-central-221.ovaijisuan.com/mindocr/mindocr_dev_ms_2_2_10_cann7_0_py39:v1
创建容器
docker_name= " temp_mindocr "
# 910
image_name= " swr.cn-central-221.ovaijisuan.com/mindocr/mindocr_dev_910_ms_2_2_10_cann7_0_py39:v1 "
# 910*
image_name= " swr.cn-central-221.ovaijisuan.com/mindocr/mindocr_dev_ms_2_2_10_cann7_0_py39:v1 "
docker run --privileged --name ${docker_name}
--tmpfs /tmp
--tmpfs /run
-v /sys/fs/cgroup:/sys/fs/cgroup:ro
--device=/dev/davinci1
--device=/dev/davinci2
--device=/dev/davinci3
--device=/dev/davinci4
--device=/dev/davinci5
--device=/dev/davinci6
--device=/dev/davinci7
--device=/dev/davinci_manager
--device=/dev/hisi_hdc
--device=/dev/devmm_svm
-v /etc/localtime:/etc/localtime
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi
--shm-size 800g
--cpus 96
--security-opt seccomp=unconfined
--network=bridge -itd ${image_name} bash
进入容器
# set docker id
container_id= " your docker id "
docker exec -it --user root $container_id bash
设置环境变量进入容器后,通过以下命令设置环境变量:
source env_setup.sh
pip install mindocr
由于该项目正在积极开发中,从 PyPI 安装的版本目前已经过时。 (很快就会更新)。
安装MindOCR后,我们可以轻松地对任意图像进行文本检测和识别,如下所示。
python tools/infer/text/predict_system.py --image_dir {path_to_img or dir_to_imgs}
--det_algorithm DB++
--rec_algorithm CRNN
--visualize_output True
运行后,结果默认保存在./inference_results
中。这是一个示例结果。
文本检测和识别结果可视化
我们可以看到图像上的所有文本都被准确地检测和识别。更多使用请参考教程中的推理部分。
使用tools/train.py
脚本可以轻松训练OCR模型,该脚本支持文本检测和识别模型训练。
python tools/train.py --config {path/to/model_config.yaml}
--config
arg 指定 yaml 文件的路径,该文件定义要训练的模型和训练策略,包括数据处理管道、优化器、lr 调度器等。
MindOCR 在configs
文件夹中提供 SoTA OCR 模型及其训练策略。您可以将其调整为您的任务/数据集,例如,通过运行
# train text detection model DBNet++ on icdar15 dataset
python tools/train.py --config configs/det/dbnet/dbpp_r50_icdar15.yaml
# train text recognition model CRNN on icdar15 dataset
python tools/train.py --config configs/rec/crnn/crnn_icdar15.yaml
同样,使用tools/eval.py
脚本可以轻松评估训练后的模型。
python tools/eval.py
--config {path/to/model_config.yaml}
--opt eval.dataset_root={path/to/your_dataset} eval.ckpt_load_path={path/to/ckpt_file}
更多说明和使用请参考教程中的模型训练部分。
您可以使用MindOCR 模型或第三方模型(PaddleOCR、MMOCR 等)在 MindOCR 中进行 MindSpore Lite 推理。请参考模型离线推理教程
训练后模型的详细表现请参考https://github.com/mindspore-lab/mindocr/blob/main/configs。
MindSpore Lite推理模型支持详情请参考MindOCR模型支持列表和第三方模型支持列表(PaddleOCR等)。
MindOCR提供了不同格式OCR数据集的数据集转换工具,并支持用户自定义数据集。我们在模型训练/评估中验证了以下公共 OCR 数据集。
我们将包含更多用于训练和评估的数据集。该列表将持续更新。
有关配置环境和mindocr的常见问题,请参阅FAQ。
model
字段下添加resume
参数,例如: resume: True
,从{ckpt_save_dir}/train_resume.ckpt加载并恢复训练或resume: /path/to/train_resume.ckpt
,从以下加载并恢复训练给定的路径。eval.dataset.output_columns
列表来启用。pred_cast_fp32
,修复存在无效多边形时的错误。model-pretrained
来加载自定义的预训练检查点。train-ema
(默认:False)和train-ema_decay
来启用。num_columns_to_net
-> net_input_column_index
:将输入网络的列号更改为列索引。num_columns_of_labels
-> label_column_index
:将标签对应的列号更改为列索引。grouping_strategy
参数来选择预定义的分组策略,或使用no_weight_decay_params
参数来选择要从权重衰减中排除的层(例如,偏差、范数)。示例可以参考configs/rec/crnn/crnn_icdar15.yaml
gradient_accumulation_steps
,全局批量大小=batch_size * devices *gradient_accumulation_steps。示例可以参考configs/rec/crnn/crnn_icdar15.yaml
grad_clip
设置为 True 来启用它。loss_scale
的type
设置为dynamic
。可以在configs/rec/crnn/crnn_icdar15.yaml
中查看 YAML 示例output_keys
-> output_columns
、 num_keys_to_net
-> num_columns_to_net
i) Create a new training task on the openi cloud platform.
ii) Link the dataset (e.g., ic15_mindocr) on the webpage.
iii) Add run parameter `config` and write the yaml file path on the website UI interface, e.g., '/home/work/user-job-dir/V0001/configs/rec/test.yaml'
iv) Add run parameter `enable_modelarts` and set True on the website UI interface.
v) Fill in other blanks and launch.
我们感谢各种贡献,包括问题和 PR,以使 MindOCR 变得更好。
请参阅 CONTRIBUTING.md 了解贡献指南。请遵循模型模板和指南来贡献适合整体界面的模型:)
本项目遵循 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}
}