영어 | 중국어
소개 | ?설치 | 빠른 시작 | 튜토리얼 | ?모델 목록 | ?데이터세트 목록 | 자주 묻는 질문 | ?메모
MindOCR은 일련의 주류 텍스트 감지 및 인식 알고리즘/모델을 통합하고 사용하기 쉬운 교육 및 추론 도구를 제공하는 MindSpore 기반 OCR 개발 및 애플리케이션을 위한 오픈 소스 도구 상자입니다. DBNet/DBNet++ 및 CRNN/SVTR과 같은 실제 애플리케이션에서 SoTA 텍스트 감지 및 인식 모델을 개발하고 배포하는 프로세스를 가속화하고 이미지-텍스트 이해 요구 사항을 충족하는 데 도움이 됩니다.
다음은 해당 mindocr
버전과 지원되는 Mindpore 버전입니다.
정신병자 | 마음의 포자 |
---|---|
주인 | 주인 |
0.4 | 2.3.0 |
0.3 | 2.2.10 |
0.1 | 1.8 |
MindOCR은 MindSpore AI 프레임워크를 기반으로 구축되었으며 다음 프레임워크 버전과 호환됩니다. 교육용 설치 지침은 아래 설치 링크를 참조하세요.
mindocr
버전을 참조하여 올바른 MindSpore 버전을 설치하십시오.MindSpore Lite 오프라인 추론은 Lite 오프라인 환경 설치를 참조하세요.
pip install -r requirements.txt
git clone https://github.com/mindspore-lab/mindocr.git
cd mindocr
pip install -e .
"편집 가능" 모드에
-e
사용하면 잠재적인 모듈 가져오기 문제를 해결하는 데 도움이 될 수 있습니다.
제공되는 docker의 환경정보는 다음과 같습니다.
Docker를 설치하려면 다음 단계를 따르세요.:
도커 다운로드
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
스크립트를 사용하여 OCR 모델을 쉽게 훈련할 수 있습니다.
python tools/train.py --config {path/to/model_config.yaml}
--config
인수는 학습할 모델과 데이터 프로세스 파이프라인, 최적화 프로그램, lr 스케줄러 등을 포함한 학습 전략을 정의하는 yaml 파일의 경로를 지정합니다.
MindOCR은 configs
폴더에 훈련 전략과 함께 SoTA OCR 모델을 제공합니다. 예를 들어 다음을 실행하여 작업/데이터 세트에 맞게 조정할 수 있습니다.
# 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}
더 많은 그림과 사용법을 보려면 튜토리얼의 모델 훈련 섹션을 참조하세요.
MindOCR 모델 또는 타사 모델 (PaddleOCR, MMOCR 등)을 사용하여 MindOCR에서 MindSpore Lite 추론을 수행할 수 있습니다. 모델 오프라인 추론 튜토리얼을 참조하세요.
학습된 모델의 자세한 성능은 https://github.com/mindspore-lab/mindocr/blob/main/configs를 참조하세요.
MindSpore Lite 추론 모델 지원에 대한 자세한 내용은 MindOCR 모델 지원 목록 및 타사 모델 지원 목록(PaddleOCR 등)을 참조하세요.
MindOCR은 다양한 형식의 OCR 데이터세트로 데이터세트 변환 도구를 제공하고 사용자가 사용자 정의한 데이터세트를 지원합니다. 우리는 모델 훈련/평가에서 다음 공개 OCR 데이터 세트를 검증했습니다.
훈련 및 평가를 위해 더 많은 데이터세트를 포함할 예정입니다. 이 목록은 지속적으로 업데이트됩니다.
환경설정 및 Mindocr 관련 자주 묻는 질문은 FAQ를 참고해주세요.
model
필드 아래에 resume
매개변수를 추가합니다(예: resume: True
, {ckpt_save_dir}/train_resume.ckpt 또는 resume: /path/to/train_resume.ckpt
에서 훈련 로드 및 재개, 다음에서 훈련 로드 및 재개). 주어진 경로.eval.dataset.output_columns
목록에 "shape_list"를 추가하여 활성화할 수 있습니다.pred_cast_fp32
비활성화하고, 유효하지 않은 다각형이 존재할 때 오류를 수정합니다.model-pretrained
설정을 통해 자체 정의된 사전 학습된 체크포인트 로드를 지원합니다.train-ema
(기본값: False) 및 train-ema_decay
설정하여 활성화할 수 있습니다.num_columns_to_net
-> net_input_column_index
: 네트워크에 공급되는 열 번호를 열 인덱스로 변경합니다.num_columns_of_labels
-> label_column_index
: 레이블에 해당하는 열 번호를 열 인덱스로 변경합니다.grouping_strategy
인수를 추가하여 사전 정의된 그룹화 전략을 선택하거나 no_weight_decay_params
인수를 사용하여 가중치 감소에서 제외할 레이어를 선택합니다(예: 편향, 표준). 예는 configs/rec/crnn/crnn_icdar15.yaml
에서 참조할 수 있습니다.gradient_accumulation_steps
추가합니다. 전역 배치 크기 = 배치_크기 * 디바이스 * 그래디언트_accumulation_steps. 예는 configs/rec/crnn/crnn_icdar15.yaml
에서 참조할 수 있습니다.grad_clip
True로 설정하여 활성화합니다.loss_scale
type
을 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.
MindOCR을 개선하기 위한 문제 및 PR을 포함한 모든 종류의 기여에 감사드립니다.
기여 지침은 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}
}