Anglais | Chine
Introduction | ?Installation | Démarrage rapide | Tutoriels | ?Liste des modèles | ?Liste des ensembles de données | Foire aux questions | ?Remarques
MindOCR est une boîte à outils open source pour le développement et l'application d'OCR basée sur MindSpore, qui intègre une série d'algorithmes/modèles traditionnels de détection et de reconnaissance de texte et fournit des outils de formation et d'inférence faciles à utiliser. Il peut accélérer le processus de développement et de déploiement de modèles de détection et de reconnaissance de texte SoTA dans des applications du monde réel, telles que DBNet/DBNet++ et CRNN/SVTR, et contribuer à répondre au besoin de compréhension image-texte.
Voici les versions mindocr
correspondantes et les versions mindspore prises en charge.
esprit | spore mentale |
---|---|
maître | maître |
0,4 | 2.3.0 |
0,3 | 2.2.10 |
0,1 | 1.8 |
MindOCR est construit sur le framework MindSpore AI et est compatible avec les versions de framework suivantes. guide d'installation pour la formation, veuillez vous référer aux liens d'installation indiqués ci-dessous.
mindocr
.Inférence hors ligne MindSpore Lite, veuillez vous référer à l'installation de l'environnement hors ligne Lite
pip install -r requirements.txt
git clone https://github.com/mindspore-lab/mindocr.git
cd mindocr
pip install -e .
L'utilisation
-e
pour le mode "modifiable" peut aider à résoudre les problèmes potentiels d'importation de modules.
Les informations sur l'environnement des dockers fournies sont les suivantes :
Veuillez suivre les étapes pour installer Docker :
Télécharger le menu fixe
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
Créer un conteneur
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
Entrez le conteneur
# set docker id
container_id= " your docker id "
docker exec -it --user root $container_id bash
Définir les variables d'environnement Après être entré dans le conteneur, définissez les variables d'environnement à l'aide de la commande suivante:
source env_setup.sh
pip install mindocr
Comme ce projet est en cours de développement actif, la version installée à partir de PyPI est actuellement obsolète. (sera bientôt mis à jour).
Après avoir installé MindOCR, nous pouvons facilement exécuter la détection et la reconnaissance de texte sur une image arbitraire comme suit.
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
Après l'exécution, les résultats seront enregistrés par défaut dans ./inference_results
. Voici un exemple de résultat.
Visualisation du résultat de la détection et de la reconnaissance de texte
Nous pouvons voir que tous les textes sur l'image sont détectés et reconnus avec précision. Pour plus d'utilisation, veuillez vous référer à la section d'inférence dans les didacticiels.
Il est facile de former votre modèle OCR avec le script tools/train.py
, qui prend en charge à la fois la détection de texte et la formation du modèle de reconnaissance.
python tools/train.py --config {path/to/model_config.yaml}
L'argument --config
spécifie le chemin d'accès à un fichier yaml qui définit le modèle à entraîner et la stratégie de formation, y compris le pipeline de processus de données, l'optimiseur, le planificateur lr, etc.
MindOCR fournit des modèles SoTA OCR avec leurs stratégies de formation dans le dossier configs
. Vous pouvez l'adapter à votre tâche/ensemble de données, par exemple en exécutant
# 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 même, il est facile d'évaluer le modèle entraîné avec le 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}
Pour plus d'illustrations et d'utilisation, veuillez vous référer à la section de formation des modèles dans les didacticiels.
Vous pouvez effectuer une inférence MindSpore Lite dans MindOCR à l'aide de modèles MindOCR ou de modèles tiers (PaddleOCR, MMOCR, etc.). Veuillez vous référer au didacticiel d'inférence de modèle hors ligne.
Pour les performances détaillées des modèles formés, veuillez vous référer à https://github.com/mindspore-lab/mindocr/blob/main/configs.
Pour plus de détails sur la prise en charge des modèles d'inférence MindSpore Lite, veuillez vous référer à la liste de prise en charge des modèles MindOCR et à la liste de prise en charge des modèles tiers (PaddleOCR, etc.).
MindOCR fournit un outil de conversion d'ensembles de données en ensembles de données OCR avec différents formats et prend en charge les ensembles de données personnalisés par les utilisateurs. Nous avons validé les ensembles de données OCR publics suivants dans la formation/évaluation du modèle.
Nous inclurons davantage d'ensembles de données pour la formation et l'évaluation. Cette liste sera continuellement mise à jour.
Questions fréquemment posées sur la configuration de l'environnement et de mindocr, veuillez vous référer à la FAQ.
resume
sous le champ model
dans la configuration yaml, par exemple, resume: True
, chargez et reprenez l'entraînement à partir de {ckpt_save_dir}/train_resume.ckpt ou resume: /path/to/train_resume.ckpt
, chargez et reprenez l'entraînement à partir de le chemin donné.eval.dataset.output_columns
.pred_cast_fp32
pour ctcloss dans la formation AMP, corrigez l'erreur lorsqu'il existe des polygones non valides.model-pretrained
avec l'URL du point de contrôle ou le chemin local dans yaml.train-ema
(par défaut : False) et train-ema_decay
dans la configuration yaml.num_columns_to_net
-> net_input_column_index
: change le numéro de colonne alimentant le réseau en index de colonne.num_columns_of_labels
-> label_column_index
: change le numéro de colonne qui correspond à l'étiquette à l'index de la colonne.grouping_strategy
dans la configuration yaml pour sélectionner une stratégie de regroupement prédéfinie, ou utilisez l'argument no_weight_decay_params
pour sélectionner les couches à exclure de la dégradation du poids (par exemple, biais, norme). Un exemple peut être référencé dans configs/rec/crnn/crnn_icdar15.yaml
gradient_accumulation_steps
dans la configuration yaml, la taille globale du lot = batch_size * devices * gradient_accumulation_steps. Un exemple peut être référencé dans configs/rec/crnn/crnn_icdar15.yaml
grad_clip
sur True dans la configuration yaml.type
de loss_scale
sur dynamic
. Un exemple YAML peut être consulté dans 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.
Nous apprécions toutes sortes de contributions, y compris les problèmes et les relations publiques, pour améliorer MindOCR.
Veuillez vous référer à CONTRIBUTING.md pour les directives de contribution. Veuillez suivre le modèle de modèle et les lignes directrices pour contribuer à un modèle qui correspond à l'interface globale :)
Ce projet fait suite à la licence open source Apache License 2.0.
Si vous trouvez ce projet utile dans votre recherche, pensez à citer :
@misc{MindSpore OCR 2023,
title={{MindSpore OCR }:MindSpore OCR Toolbox},
author={MindSpore Team},
howpublished = { url {https://github.com/mindspore-lab/mindocr/}},
year={2023}
}