อังกฤษ | 中文
บทนำ | ?การติดตั้ง | เริ่มต้นอย่างรวดเร็ว | บทช่วยสอน | ?รายการรุ่น | ?รายการชุดข้อมูล | คำถามที่พบบ่อย | ?หมายเหตุ
MindOCR เป็นกล่องเครื่องมือโอเพ่นซอร์สสำหรับการพัฒนาและแอปพลิเคชัน OCR ที่ใช้ MindSpore ซึ่งรวมชุดอัลกอริทึม/โมเดลการตรวจจับและจดจำข้อความกระแสหลัก มอบเครื่องมือการฝึกอบรมและการอนุมานที่ใช้งานง่าย โดยสามารถเร่งกระบวนการพัฒนาและปรับใช้โมเดลการตรวจจับและจดจำข้อความ SoTA ในแอปพลิเคชันในโลกแห่งความเป็นจริง เช่น DBNet/DBNet++ และ CRNN/SVTR และช่วยตอบสนองความต้องการในการทำความเข้าใจข้อความรูปภาพ
ต่อไปนี้เป็นเวอร์ชัน mindocr
ที่สอดคล้องกันและเวอร์ชัน mindpore ที่รองรับ
mindocr | จิตใจ |
---|---|
ผู้เชี่ยวชาญ | ผู้เชี่ยวชาญ |
0.4 | 2.3.0 |
0.3 | 2.2.10 |
0.1 | 1.8 |
MindOCR สร้างขึ้นบนเฟรมเวิร์ก MindSpore AI และเข้ากันได้กับเฟรมเวิร์กเวอร์ชันต่อไปนี้ แนวทางการติดตั้งสำหรับการฝึกอบรม โปรดดูลิงก์การติดตั้งที่แสดงด้านล่าง
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
ตามค่าเริ่มต้น นี่คือผลลัพธ์ตัวอย่าง
การแสดงภาพผลการตรวจจับและการจดจำข้อความ
เราจะเห็นว่าข้อความทั้งหมดบนภาพถูกตรวจจับและจดจำได้อย่างแม่นยำ สำหรับการใช้งานเพิ่มเติม โปรดดูส่วนการอนุมานในบทช่วยสอน
การฝึกโมเดล OCR ของคุณเป็นเรื่องง่ายด้วยสคริปต์ tools/train.py
ซึ่งรองรับทั้งการตรวจจับข้อความและการฝึกโมเดลการจดจำ
python tools/train.py --config {path/to/model_config.yaml}
--config
arg ระบุเส้นทางไปยังไฟล์ 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 จุดตรวจหรือเส้นทางในเครื่องใน yamltrain-ema
(ค่าเริ่มต้น: False) และ train-ema_decay
ในการกำหนดค่า yamlnum_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 ขนาดแบตช์ทั่วโลก = อุปกรณ์ขนาดแบตช์ * *ไล่ระดับ_accumulation_steps ตัวอย่างสามารถอ้างอิงได้ใน configs/rec/crnn/crnn_icdar15.yaml
grad_clip
เป็น True ใน yaml configtype
ของ 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.
เราขอขอบคุณสำหรับการสนับสนุนทุกประเภท รวมถึงประเด็นต่างๆ และการประชาสัมพันธ์เพื่อทำให้ 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}
}