Inglês | 中文
Introdução | ?Instalação | Início rápido | Tutoriais | ?Lista de modelos | ?Lista de conjuntos de dados | Perguntas frequentes | ?Notas
MindOCR é uma caixa de ferramentas de código aberto para desenvolvimento e aplicação de OCR baseada em MindSpore, que integra uma série de algoritmos/modelos convencionais de detecção e reconhecimento de texto, fornece treinamento fácil de usar e ferramentas de inferência. Ele pode acelerar o processo de desenvolvimento e implantação de modelos de detecção e reconhecimento de texto SoTA em aplicações do mundo real, como DBNet/DBNet++ e CRNN/SVTR, e ajudar a atender à necessidade de compreensão de imagem-texto.
A seguir estão as versões correspondentes mindocr
e as versões suportadas do mindspore.
mindocr | esporo mental |
---|---|
mestre | mestre |
0,4 | 2.3.0 |
0,3 | 2.2.10 |
0,1 | 1,8 |
MindOCR é construído na estrutura MindSpore AI e é compatível com as seguintes versões da estrutura. orientação de instalação para treinamento, consulte os links de instalação mostrados abaixo.
mindocr
.Inferência offline do MindSpore Lite, consulte Instalação do ambiente offline do Lite
pip install -r requirements.txt
git clone https://github.com/mindspore-lab/mindocr.git
cd mindocr
pip install -e .
Usar
-e
para o modo "editável" pode ajudar a resolver possíveis problemas de importação de módulos.
As informações ambientais dos dockers fornecidas são as seguintes:
Siga as etapas para instalar o docker:
Baixe a janela de encaixe
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
Criar contêiner
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
Entrar no contêiner
# set docker id
container_id= " your docker id "
docker exec -it --user root $container_id bash
Definir variáveis de ambiente Depois de entrar no contêiner, defina as variáveis de ambiente com o seguinte comando:
source env_setup.sh
pip install mindocr
Como este projeto está em desenvolvimento ativo, a versão instalada do PyPI está desatualizada no momento. (atualizará em breve).
Depois de instalar o MindOCR, podemos executar facilmente a detecção e o reconhecimento de texto em uma imagem arbitrária da seguinte maneira.
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
Após a execução, os resultados serão salvos em ./inference_results
por padrão. Aqui está um exemplo de resultado.
Visualização do resultado de detecção e reconhecimento de texto
Podemos ver que todos os textos da imagem são detectados e reconhecidos com precisão. Para mais uso, consulte a seção de inferência nos tutoriais.
É fácil treinar seu modelo de OCR com o script tools/train.py
, que suporta detecção de texto e treinamento de modelo de reconhecimento.
python tools/train.py --config {path/to/model_config.yaml}
O argumento --config
especifica o caminho para um arquivo yaml que define o modelo a ser treinado e a estratégia de treinamento, incluindo pipeline de processo de dados, otimizador, agendador LR, etc.
MindOCR fornece modelos SoTA OCR com suas estratégias de treinamento na pasta configs
. Você pode adaptá-lo à sua tarefa/conjunto de dados, por exemplo, executando
# 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
Da mesma forma, é fácil avaliar o modelo treinado com o 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 obter mais ilustrações e uso, consulte a seção de treinamento de modelo em Tutoriais.
Você pode fazer inferência do MindSpore Lite no MindOCR usando modelos MindOCR ou modelos de terceiros (PaddleOCR, MMOCR, etc.). Consulte o tutorial de inferência off-line do modelo
Para o desempenho detalhado dos modelos treinados, consulte https://github.com/mindspore-lab/mindocr/blob/main/configs.
Para obter detalhes sobre o suporte aos modelos de inferência do MindSpore Lite, consulte a Lista de suporte de modelos MindOCR e a Lista de suporte de modelos de terceiros (PaddleOCR etc.).
MindOCR fornece uma ferramenta de conversão de conjuntos de dados para conjuntos de dados OCR com diferentes formatos e oferece suporte a conjuntos de dados personalizados pelos usuários. Validamos os seguintes conjuntos de dados públicos de OCR no treinamento/avaliação de modelos.
Incluiremos mais conjuntos de dados para treinamento e avaliação. Esta lista será continuamente atualizada.
Perguntas frequentes sobre a configuração do ambiente e do mindocr, consulte o FAQ.
resume
no campo model
na configuração do yaml, por exemplo, resume: True
, carregue e retome o treinamento de {ckpt_save_dir}/train_resume.ckpt ou resume: /path/to/train_resume.ckpt
, carregue e retome o treinamento de o caminho dado.eval.dataset.output_columns
.pred_cast_fp32
para ctcloss no treinamento AMP, corrija o erro quando existirem polígonos inválidos.model-pretrained
com URL de ponto de verificação ou caminho local em yaml.train-ema
(padrão: False) e train-ema_decay
na configuração do yaml.num_columns_to_net
-> net_input_column_index
: altera o número da coluna que alimenta a rede para o índice da coluna.num_columns_of_labels
-> label_column_index
: altera o número da coluna que corresponde ao rótulo do índice da coluna.grouping_strategy
na configuração do yaml para selecionar uma estratégia de agrupamento predefinida ou use o argumento no_weight_decay_params
para escolher camadas a serem excluídas da redução de peso (por exemplo, viés, norma). O exemplo pode ser consultado em configs/rec/crnn/crnn_icdar15.yaml
gradient_accumulation_steps
na configuração do yaml, o tamanho global do lote = batch_size * devices * gradiente_accumulation_steps. O exemplo pode ser consultado em configs/rec/crnn/crnn_icdar15.yaml
grad_clip
como True na configuração do yaml.type
de loss_scale
como dynamic
. Um exemplo YAML pode ser visualizado em 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.
Agradecemos todos os tipos de contribuições, incluindo questões e relações públicas, para tornar o MindOCR melhor.
Consulte CONTRIBUTING.md para obter as diretrizes de contribuição. Siga o modelo e as diretrizes do modelo para contribuir com um modelo que se ajuste à interface geral :)
Este projeto segue a licença de código aberto Apache License 2.0.
Se você achar este projeto útil em sua pesquisa, 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}
}