английский | 中文
Введение | ?Установка | Быстрый старт | Учебники | ?Список моделей | ?Список наборов данных | Часто задаваемые вопросы | ?Примечания
MindOCR — это набор инструментов с открытым исходным кодом для разработки и применения оптического распознавания символов на основе MindSpore, который объединяет ряд основных алгоритмов/моделей обнаружения и распознавания текста, предоставляет простые в использовании инструменты обучения и вывода. Он может ускорить процесс разработки и внедрения моделей обнаружения и распознавания текста SoTA в реальных приложениях, таких как DBNet/DBNet++ и CRNN/SVTR, а также помочь удовлетворить потребность в понимании текста и изображения.
Ниже приведены соответствующие версии mindocr
и поддерживаемые версии Mindspore.
разум | разумспора |
---|---|
владелец | владелец |
0,4 | 2.3.0 |
0,3 | 2.2.10 |
0,1 | 1,8 |
MindOCR построен на базе искусственного интеллекта MindSpore и совместим со следующими версиями платформы. Руководство по установке для обучения см. по ссылкам для установки, показанным ниже.
mindocr
.Офлайн-вывод MindSpore Lite см. в разделе «Установка автономной среды Lite».
pip install -r requirements.txt
git clone https://github.com/mindspore-lab/mindocr.git
cd mindocr
pip install -e .
Использование
-e
для «редактируемого» режима может помочь решить потенциальные проблемы с импортом модулей.
Предоставляемая информация об среде докеров следующая:
Пожалуйста, следуйте инструкциям по установке докера:
Скачать докер
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
, который поддерживает обучение модели обнаружения текста и распознавания.
python tools/train.py --config {path/to/model_config.yaml}
Аргумент --config
указывает путь к файлу yaml, который определяет обучаемую модель и стратегию обучения, включая конвейер обработки данных, оптимизатор, планировщик lr и т. д.
MindOCR предоставляет модели SoTA OCR со стратегиями обучения в папке configs
. Вы можете адаптировать его к своей задаче/набору данных, например, запустив
# 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}
Дополнительные иллюстрации и использование см. в разделе «Обучение модели» в Учебных пособиях.
Вы можете сделать вывод MindSpore Lite в MindOCR, используя модели MindOCR или сторонние модели (PaddleOCR, MMOCR и т. д.). Пожалуйста, обратитесь к руководству по автономному выводу модели.
Подробную информацию о производительности обученных моделей можно найти на странице https://github.com/mindspore-lab/mindocr/blob/main/configs.
Подробную информацию о поддержке моделей вывода MindSpore Lite см. в списках поддержки моделей MindOCR и списках поддержки сторонних моделей (PaddleOCR и т. д.).
MindOCR предоставляет инструмент преобразования наборов данных в наборы данных OCR различных форматов и поддерживает настраиваемые пользователями наборы данных. Мы проверили следующие общедоступные наборы данных OCR при обучении/оценке модели.
Мы добавим больше наборов данных для обучения и оценки. Этот список будет постоянно обновляться.
Часто задаваемые вопросы о настройке среды и Mindocr см. в разделе Часто задаваемые вопросы.
resume
в поле model
в конфигурации yaml, например, resume: True
, загрузить и возобновить обучение из {ckpt_save_dir}/train_resume.ckpt или resume: /path/to/train_resume.ckpt
, загрузить и возобновить обучение из заданный путь.eval.dataset.output_columns
.pred_cast_fp32
для ctcloss в обучении AMP, исправьте ошибку при наличии недопустимых полигонов.model-pretrained
с помощью URL-адреса контрольной точки или локального пути в yaml.train-ema
(по умолчанию: False) и train-ema_decay
в конфигурации yaml.num_columns_to_net
-> net_input_column_index
: измените номер столбца, подаваемого в сеть, на индекс столбца.num_columns_of_labels
-> label_column_index
: изменение номера столбца соответствует метке индекса столбца.grouping_strategy
в конфигурацию yaml, чтобы выбрать предопределенную стратегию группировки, или используйте аргумент no_weight_decay_params
, чтобы выбрать слои, которые необходимо исключить из снижения веса (например, смещение, норма). Пример можно найти в configs/rec/crnn/crnn_icdar15.yaml
gradient_accumulation_steps
в конфигурацию yaml, глобальный размер пакета = размер_пакета * устройства * градиент_аккумуляция_шаги. Пример можно найти в configs/rec/crnn/crnn_icdar15.yaml
grad_clip
значение True в конфигурации yaml.type
loss_scale
как dynamic
. Пример YAML можно посмотреть в 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.
Мы ценим любой вклад, включая вопросы и 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}
}