الإنجليزية | 中文
مقدمة | ?التثبيت | بداية سريعة | دروس | ?قائمة النماذج | ?قائمة مجموعة البيانات | الأسئلة المتداولة | ؟ملحوظات
MindOCR عبارة عن مجموعة أدوات مفتوحة المصدر لتطوير وتطبيق التعرف الضوئي على الحروف استنادًا إلى MindSpore، والتي تدمج سلسلة من خوارزميات/نماذج اكتشاف النص والتعرف عليه، وتوفر أدوات تدريب واستدلال سهلة الاستخدام. يمكنه تسريع عملية تطوير ونشر نماذج SoTA للكشف عن النص والتعرف عليه في تطبيقات العالم الحقيقي، مثل DBNet/DBNet++ وCRNN/SVTR، والمساعدة في تلبية الحاجة إلى فهم نص الصورة.
فيما يلي إصدارات mindocr
المقابلة وإصدارات Mindpore المدعومة.
Mindocr | com.mindpore |
---|---|
يتقن | يتقن |
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
المسار إلى ملف 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 أداة تحويل مجموعة البيانات إلى مجموعات بيانات التعرف الضوئي على الحروف بتنسيقات مختلفة ودعم مجموعة البيانات المخصصة من قبل المستخدمين. لقد قمنا بالتحقق من صحة مجموعات بيانات التعرف الضوئي على الحروف العامة التالية في نموذج التدريب/التقييم.
وسوف نقوم بتضمين المزيد من مجموعات البيانات للتدريب والتقييم. سيتم تحديث هذه القائمة بشكل مستمر.
الأسئلة المتداولة حول تكوين البيئة و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
لـ ctclos في تدريب 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 config.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.
نحن نقدر جميع أنواع المساهمات بما في ذلك القضايا والعلاقات العامة لجعل MindOCR أفضل.
يرجى الرجوع إلى CONTRIBUTING.md للحصول على إرشادات المساهمة. يرجى اتباع نموذج النموذج والمبادئ التوجيهية للمساهمة بنموذج يناسب الواجهة الشاملة :)
يتبع هذا المشروع ترخيص Apache 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}
}