Inglés | 中文
Introducción | ?Instalación | Inicio rápido | Tutoriales | ?Lista de modelos | ?Lista de conjuntos de datos | Preguntas frecuentes | ?Notas
MindOCR es una caja de herramientas de código abierto para el desarrollo y aplicación de OCR basada en MindSpore, que integra una serie de algoritmos/modelos de detección y reconocimiento de texto convencionales y proporciona herramientas de inferencia y capacitación fáciles de usar. Puede acelerar el proceso de desarrollo e implementación de modelos de detección y reconocimiento de texto SoTA en aplicaciones del mundo real, como DBNet/DBNet++ y CRNN/SVTR, y ayudar a satisfacer la necesidad de comprensión de imagen-texto.
Las siguientes son las versiones correspondientes mindocr
y las versiones de mindspore compatibles.
mindocr | espora mental |
---|---|
maestro | maestro |
0,4 | 2.3.0 |
0.3 | 2.2.10 |
0.1 | 1.8 |
MindOCR se basa en el marco MindSpore AI y es compatible con las siguientes versiones del marco. guía de instalación para la capacitación, consulte los enlaces de instalación que se muestran a continuación.
mindocr
.Inferencia sin conexión de MindSpore Lite, consulte Instalación del entorno sin conexión de Lite
pip install -r requirements.txt
git clone https://github.com/mindspore-lab/mindocr.git
cd mindocr
pip install -e .
Usar
-e
para el modo "editable" puede ayudar a resolver posibles problemas de importación de módulos.
La información ambiental de los acopladores proporcionada es la siguiente:
Siga los pasos para instalar Docker:
Descargar ventana acoplable
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
Crear contenedor
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
Introducir contenedor
# set docker id
container_id= " your docker id "
docker exec -it --user root $container_id bash
Establecer variables de entorno Después de ingresar al contenedor, configure las variables de entorno con el siguiente comando:
source env_setup.sh
pip install mindocr
Como este proyecto está en desarrollo activo, la versión instalada desde PyPI no está actualizada actualmente. (se actualizará pronto).
Después de instalar MindOCR, podemos ejecutar la detección y el reconocimiento de texto en una imagen arbitraria fácilmente de la siguiente manera.
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
Después de ejecutar, los resultados se guardarán en ./inference_results
de forma predeterminada. A continuación se muestra un resultado de ejemplo.
Visualización del resultado de detección y reconocimiento de texto.
Podemos ver que todos los textos de la imagen se detectan y reconocen con precisión. Para obtener más uso, consulte la sección de inferencia en los tutoriales.
Es fácil entrenar su modelo de OCR con el script tools/train.py
, que admite tanto la detección de texto como el entrenamiento del modelo de reconocimiento.
python tools/train.py --config {path/to/model_config.yaml}
El argumento --config
especifica la ruta a un archivo yaml que define el modelo que se va a entrenar y la estrategia de entrenamiento, incluida la canalización del proceso de datos, el optimizador, el programador lr, etc.
MindOCR proporciona modelos SoTA OCR con sus estrategias de entrenamiento en la carpeta configs
. Puede adaptarlo a su tarea/conjunto de datos, por ejemplo, ejecutando
# 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
De manera similar, es fácil evaluar el modelo entrenado con el script 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}
Para obtener más ilustraciones y usos, consulte la sección de capacitación de modelos en Tutoriales.
Puede realizar inferencias de MindSpore Lite en MindOCR utilizando modelos MindOCR o modelos de terceros (PaddleOCR, MMOCR, etc.). Consulte el Tutorial de inferencia sin conexión del modelo.
Para conocer el rendimiento detallado de los modelos entrenados, consulte https://github.com/mindspore-lab/mindocr/blob/main/configs.
Para obtener detalles sobre la compatibilidad con los modelos de inferencia de MindSpore Lite, consulte la Lista de compatibilidad de modelos MindOCR y la Lista de compatibilidad de modelos de terceros (PaddleOCR, etc.).
MindOCR proporciona una herramienta de conversión de conjuntos de datos a conjuntos de datos OCR con diferentes formatos y admite conjuntos de datos personalizados por parte de los usuarios. Hemos validado los siguientes conjuntos de datos públicos de OCR en capacitación/evaluación de modelos.
Incluiremos más conjuntos de datos para capacitación y evaluación. Esta lista se actualizará continuamente.
Preguntas frecuentes sobre la configuración del entorno y mindocr, consulte Preguntas frecuentes.
resume
en el campo model
en la configuración de yaml, por ejemplo, resume: True
, cargue y reanude el entrenamiento desde {ckpt_save_dir}/train_resume.ckpt o resume: /path/to/train_resume.ckpt
, cargue y reanude el entrenamiento desde el camino dado.eval.dataset.output_columns
.pred_cast_fp32
para ctcloss en el entrenamiento de AMP, corrija el error cuando existen polígonos no válidos.model-pretrained
con la URL del punto de control o la ruta local en yaml.train-ema
(predeterminado: Falso) y train-ema_decay
en la configuración de yaml.num_columns_to_net
-> net_input_column_index
: cambia el número de columna que ingresa a la red al índice de columna.num_columns_of_labels
-> label_column_index
: cambia el número de columna correspondiente a la etiqueta al índice de la columna.grouping_strategy
en la configuración de yaml para seleccionar una estrategia de agrupación predefinida, o use el argumento no_weight_decay_params
para seleccionar capas para excluirlas de la caída de peso (por ejemplo, sesgo, norma). Se puede hacer referencia al ejemplo en configs/rec/crnn/crnn_icdar15.yaml
gradient_accumulation_steps
en la configuración de yaml, el tamaño de lote global = tamaño de lote * dispositivos * gradient_accumulation_steps. Se puede hacer referencia al ejemplo en configs/rec/crnn/crnn_icdar15.yaml
grad_clip
como True en la configuración de yaml.type
de loss_scale
como dynamic
. Se puede ver un ejemplo de YAML en configs/rec/crnn/crnn_icdar15.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.
Apreciamos todo tipo de contribuciones, incluidos problemas y relaciones públicas, para mejorar MindOCR.
Consulte CONTRIBUTING.md para conocer las pautas de contribución. Siga la plantilla y la guía del modelo para contribuir con un modelo que se ajuste a la interfaz general :)
Este proyecto sigue la licencia de código abierto Apache License 2.0.
Si encuentra útil este proyecto en su investigación, considere citar:
@misc{MindSpore OCR 2023,
title={{MindSpore OCR }:MindSpore OCR Toolbox},
author={MindSpore Team},
howpublished = { url {https://github.com/mindspore-lab/mindocr/}},
year={2023}
}