Englisch | 中文
Einführung | ?Installation | Schnellstart | Tutorials | ?Modellliste | ?Datensatzliste | Häufig gestellte Fragen | ?Notizen
MindOCR ist eine Open-Source-Toolbox für die OCR-Entwicklung und -Anwendung auf Basis von MindSpore, die eine Reihe gängiger Texterkennungs- und -erkennungsalgorithmen/-modelle integriert und benutzerfreundliche Trainings- und Inferenztools bietet. Es kann den Prozess der Entwicklung und Bereitstellung von SoTA-Texterkennungs- und -erkennungsmodellen in realen Anwendungen wie DBNet/DBNet++ und CRNN/SVTR beschleunigen und dabei helfen, den Bedarf an Bild-Text-Verständnis zu erfüllen.
Im Folgenden finden Sie die entsprechenden mindocr
Versionen und unterstützten Mindspor-Versionen.
mindocr | Geistesspore |
---|---|
Master | Master |
0,4 | 2.3.0 |
0,3 | 2.2.10 |
0,1 | 1.8 |
MindOCR basiert auf dem MindSpore AI-Framework und ist mit den folgenden Framework-Versionen kompatibel. Installationsrichtlinien für Schulungen finden Sie unter den unten aufgeführten Installationslinks.
mindocr
-Versionen.Weitere Informationen zur Offline-Inferenz von MindSpore Lite finden Sie unter Installation der Lite-Offline-Umgebung
pip install -r requirements.txt
git clone https://github.com/mindspore-lab/mindocr.git
cd mindocr
pip install -e .
Die Verwendung
-e
für den „bearbeitbaren“ Modus kann dabei helfen, potenzielle Probleme beim Modulimport zu lösen.
Die bereitgestellten Umgebungsinformationen der Docker lauten wie folgt:
Bitte befolgen Sie die Schritte zur Installation von Docker:
Laden Sie Docker herunter
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
Container erstellen
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
Container betreten
# set docker id
container_id= " your docker id "
docker exec -it --user root $container_id bash
Umgebungsvariablen festlegen Nachdem Sie den Container eingegeben haben, legen Sie Umgebungsvariablen mit dem folgenden Befehl fest:
source env_setup.sh
pip install mindocr
Da sich dieses Projekt in der aktiven Entwicklung befindet, ist die von PyPI installierte Version derzeit veraltet. (wird bald aktualisiert).
Nach der Installation von MindOCR können wir die Texterkennung und -erkennung für ein beliebiges Bild ganz einfach wie folgt ausführen.
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
Nach der Ausführung werden die Ergebnisse standardmäßig in ./inference_results
gespeichert. Hier ist ein Beispielergebnis.
Visualisierung der Texterkennung und des Erkennungsergebnisses
Wir können sehen, dass alle Texte auf dem Bild korrekt erkannt und erkannt werden. Weitere Informationen zur Verwendung finden Sie im Abschnitt „Inferenz“ in den Tutorials.
Mit dem Skript tools/train.py
, das sowohl die Texterkennung als auch das Erkennungsmodelltraining unterstützt, können Sie Ihr OCR-Modell ganz einfach trainieren.
python tools/train.py --config {path/to/model_config.yaml}
Das Argument --config
gibt den Pfad zu einer Yaml-Datei an, die das zu trainierende Modell und die Trainingsstrategie einschließlich Datenprozesspipeline, Optimierer, LR-Scheduler usw. definiert.
MindOCR stellt SoTA-OCR-Modellen ihre Trainingsstrategien im configs
zur Verfügung. Sie können es beispielsweise durch Ausführen an Ihre Aufgabe/Ihren Datensatz anpassen
# 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
Ebenso ist es einfach, das trainierte Modell mit dem Skript tools/eval.py
auszuwerten.
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}
Weitere Illustrationen und Verwendungsmöglichkeiten finden Sie im Abschnitt „Modellschulung“ unter „Tutorials“.
Sie können MindSpore Lite-Inferenzen in MindOCR mithilfe von MindOCR-Modellen oder Modellen von Drittanbietern (PaddleOCR, MMOCR usw.) durchführen. Weitere Informationen finden Sie im Modell-Offline-Inferenz-Tutorial
Die detaillierte Leistung der trainierten Modelle finden Sie unter https://github.com/mindspore-lab/mindocr/blob/main/configs.
Einzelheiten zur Unterstützung von MindSpore Lite-Inferenzmodellen finden Sie in der Liste der unterstützten MindOCR-Modelle und der Liste der unterstützten Modelle von Drittanbietern (PaddleOCR usw.).
MindOCR bietet ein Tool zur Datensatzkonvertierung in OCR-Datensätze mit verschiedenen Formaten und unterstützt benutzerdefinierte Datensätze durch Benutzer. Wir haben die folgenden öffentlichen OCR-Datensätze im Rahmen des Modelltrainings/der Modellbewertung validiert.
Wir werden weitere Datensätze für Training und Auswertung einbinden. Diese Liste wird laufend aktualisiert.
Häufig gestellte Fragen zur Konfiguration der Umgebung und mindocr finden Sie in den FAQ.
resume
unter dem model
in der Yaml-Konfiguration hinzu, z. B. resume: True
, um das Training von {ckpt_save_dir}/train_resume.ckpt zu laden und fortzusetzen, oder resume: /path/to/train_resume.ckpt
, um das Training von zu laden und fortzusetzen der vorgegebene Weg.eval.dataset.output_columns
aktiviert werden.pred_cast_fp32
für ctcloss im AMP-Training, beheben Sie den Fehler, wenn ungültige Polygone vorhanden sind.model-pretrained
mit Prüfpunkt-URL oder lokalem Pfad in Yaml.train-ema
(Standard: False) und train-ema_decay
in der Yaml-Konfiguration aktiviert werden kann.num_columns_to_net
-> net_input_column_index
: Ändern Sie die Spaltennummer, die in das Netzwerk eingespeist wird, in den Spaltenindex.num_columns_of_labels
-> label_column_index
: Ändern Sie die Spaltennummer, die der Beschriftung des Spaltenindex entspricht.grouping_strategy
in der Yaml-Konfiguration hinzu, um eine vordefinierte Gruppierungsstrategie auszuwählen, oder verwenden Sie das Argument no_weight_decay_params
, um Ebenen auszuwählen, die vom Gewichtsabfall ausgeschlossen werden sollen (z. B. Bias, Norm). Ein Beispiel finden Sie in configs/rec/crnn/crnn_icdar15.yaml
gradient_accumulation_steps
in der Yaml-Konfiguration hinzufügen, die globale Batch-Größe = Batch_size * Geräte * Gradient_accumulation_steps. Ein Beispiel finden Sie in configs/rec/crnn/crnn_icdar15.yaml
grad_clip
in der Yaml-Konfiguration auf True setzen.type
loss_scale
auf dynamic
fest. Ein YAML-Beispiel kann in configs/rec/crnn/crnn_icdar15.yaml
eingesehen werdenoutput_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.
Wir freuen uns über alle Arten von Beiträgen, einschließlich Themen und PRs, um MindOCR besser zu machen.
Die Beitragsrichtlinie finden Sie unter CONTRIBUTING.md. Bitte folgen Sie der Modellvorlage und der Richtlinie, um ein Modell beizutragen, das zur gesamten Benutzeroberfläche passt :)
Dieses Projekt folgt der Open-Source-Lizenz Apache License 2.0.
Wenn Sie dieses Projekt für Ihre Forschung nützlich finden, denken Sie bitte darüber nach, Folgendes zu zitieren:
@misc{MindSpore OCR 2023,
title={{MindSpore OCR }:MindSpore OCR Toolbox},
author={MindSpore Team},
howpublished = { url {https://github.com/mindspore-lab/mindocr/}},
year={2023}
}