HyperAI

تفاصيل البرنامج التعليمي | استخدام PaddleOCR لاكتشاف أرقام الحاويات وتحديدها

特色图像

نظرة عامة على المحتوى: يؤدي اكتشاف رقم الحاوية استنادًا إلى PaddleOCR إلى تقصير وقت تسجيل أرقام الحاويات وتحسين كفاءة تحميل وتفريغ المنفذ.
الكلمات الرئيسية: برنامج PaddleOCR للتعرف على النصوص عبر الإنترنت

وبحسب مجموعة من البيانات التي أصدرتها شركة Alphaliner، وهي وكالة استشارات وتحليلات شحن دولية، في مارس/آذار من هذا العام، ضمن قائمة أفضل 30 ناقلة حاويات في عام 2021،تصدر ميناء شنغهاي القائمة بـ "بطاقة تقرير" بلغت 47.025 مليون حاوية مكافئة لعشرين قدمًا.
وبالمقارنة مع نفس الفترة من العام الماضي، بلغ إجمالي حجم مناولة الحاويات في ميناء شنغهاي 8.1%، وهو ما يزيد بنحو 10 ملايين حاوية نمطية عن أقرب منافس له سنغافورة.

أنهت أكبر 100 ميناء حاويات في العالم مناولة إجمالية للحاويات بلغت 676 مليون حاوية نمطية في عام 2021.لقد أدى هذا العدد الكبير من الحاويات إلى زيادة الضغط على تحديد رقم الحاوية. إن الطريقة التقليدية لتحديد أرقام الحاويات وتسجيلها يدويًا مكلفة وغير فعالة وتؤدي إلى ظروف تشغيل عكسية.

مع تطور الاقتصاد والمجتمع، أصبح إدخال الذكاء الاصطناعي في عمليات الموانئ هو المفتاح لتحويل وترقية الموانئ التقليدية في المنافسة في السوق.

ستتناول هذه المقالة إعداد البيئة لنمذجة التدريب.توضيح كيفية استخدام PaddleOCR لاكتشاف أرقام الحاويات وتحديدها.

شاهد مباشرة البرنامج التعليمي للكود:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu

استخدام كمية صغيرة من البيانات لتحقيق مهام اكتشاف رقم الصندوق والتعرف عليه

يشير رقم الحاوية إلى رقم الحاوية التي يتم شحن البضائع المصدرة إليها.هذا مطلوب عند ملء سند الشحنة. يعتمد هيكل رقم الحاوية القياسي على معيار ISO6346 (1995) ويتكون من 11 رقمًا. إذا أخذنا رقم الحاوية CBHU 123456 7 كمثال، فهو يتكون من 3 أجزاء:

الجزء الأول يتكون من 4 أحرف إنجليزية. تشير الأحرف الثلاثة الأولى إلى مالك الحاوية أو مشغلها، ويشير الحرف الرابع إلى نوع الحاوية. CBHU تعني حاوية قياسية مالكها ومشغلها هو COSCO Container.

الجزء الثاني يتكون من 6 أرقام. يشير إلى رمز تسجيل الحاوية، وهو التعريف الفريد للحاوية.

الجزء الثالث هو رمز التحقق، والتي يتم الحصول عليها عن طريق حساب قواعد التحقق بناءً على الأحرف الأربعة والأرقام الستة السابقة، ويتم استخدامها لتحديد ما إذا كان هناك خطأ يحدث أثناء التحقق.

حاويات متراكمة في الميناء في انتظار الشحن
يعتمد هذا البرنامج التعليمي على PaddleOCR لمهام اكتشاف رقم الحاوية والتعرف عليه. استخدم كمية صغيرة من البيانات لتدريب نماذج الكشف والتعرف بشكل منفصل، وأخيرًا قم بربطها معًا لتحقيق مهمة اكتشاف رقم الحاوية والتعرف عليه.

إعداد البيئة

  1. ابدأ تشغيل حاوية "تدريب النموذج" في وحدة التحكم OpenBayes. حدد PaddlePaddle 2.3 للبيئة وRTX 3090 أو نوع GPU آخر للموارد.

إذا لم يكن لديك حساب على المنصة، يرجى زيارة العنوان التالي للتسجيل أولاً: https://openbayes.com/console/signup

  1. افتح نافذة Terminal في Jupyter. ثم قم بتنفيذ الأمر التالي:
cd PaddleOCR-release-2.5 #进入 PaddleOCR-release-2.5 文件夹
pip install -r requirements.txt #安装 PaddleOCR 所需依赖
python setup.py install #安装 PaddleOCR

مقدمة مجموعة البيانات

يستخدم هذا البرنامج التعليمي مجموعة بيانات OCR لرقم الحاوية، والتي تحتوي على 3003 صورة حاوية بدقة 1920×1080.

للاطلاع على تفاصيل مجموعة البيانات، يرجى زيارة:
https://openbayes.com/console/open-tutorials/datasets/BzuGVEOJv2T/3

  1. قواعد شرح تدريب نموذج اكتشاف PaddleOCR هي كما يلي، مفصولة بـ "\t":
" 图像文件名                    json.dumps 编码的图像标注信息"
ch4_test_images/img_61.jpg    [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]

معلومات شرح الصورة قبل ترميز json.dumps عبارة عن قائمة تحتوي على قواميس متعددة. تمثل النقاط الموجودة في القاموس إحداثيات (x، y) للنقاط الأربع في مربع النص، مرتبة في اتجاه عقارب الساعة من النقطة الموجودة في الزاوية اليسرى العليا.

يمثل النسخ النص الموجود في مربع النص الحالي. عندما يكون محتواه "###"، فهذا يعني أن مربع النص غير صالح وسيتم تخطيه أثناء التدريب.

  1. قواعد شرح تدريب نموذج التعرف PaddleOCR هي كما يلي، مفصولة بـ "\t":
" 图像文件名                 图像标注信息 "

train_data/rec/train/word_001.jpg   简单可依赖
train_data/rec/train/word_002.jpg   用科技让复杂的世界更简单

## تجميع البيانات

3.1 إعداد البيانات المطلوبة لنموذج الكشف

قم بتقسيم الصور البالغ عددها 3000 صورة في مجموعة البيانات إلى مجموعات تدريب ومجموعات تحقق بنسبة 2:1 وقم بتشغيل الكود التالي:

from tqdm import tqdm
finename = "all_label.txt"
f = open(finename)
lines = f.readlines() 
t = open('det_train_label.txt','w')
v = open('det_eval_label.txt','w')
count = 0
for line in tqdm(lines):
    if count < 2000:
        t.writelines(line)
        count += 1
    else:
        v.writelines(line)
f.close()
t.close()
v.close()

3.2 إعداد البيانات المطلوبة لنموذج التعريف

وفقًا لتعليقات جزء الاكتشاف، قم بقص مجموعة البيانات بحيث تحتوي فقط على جزء النص من الصورة كبيانات التعرف، ثم قم بتشغيل الكود التالي:
أدخل وصف الصورة هنا
للحصول على الكود الكامل، انظر: https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu

تجربة ##

نظرًا لأن البيانات صغيرة نسبيًا، فمن أجل تحقيق تقارب أفضل وأسرع للنماذج، يتم استخدام نموذج PP-OCRv3 في PaddleOCR للكشف والتعرف.

بناءً على PP-OCRv2، تم تحسين مؤشر Hmean الشامل لـ PP-OCRv3 للمشاهد الصينية بمقدار 5% مقارنةً بـ PP-OCRv2، وتم تحسين التأثير الشامل للنماذج الرقمية الإنجليزية بمقدار 11%.

يرجى الرجوع إلى التقرير الفني لـ PP-OCRv3 للحصول على تفاصيل التحسين التفصيلية.

4.1 نموذج الكشف

4.1.1 تكوين نموذج الكشف

يوفر PaddleOCR العديد من نماذج الكشف. على الطريق PaddleOCR-release-2.5/configs/det يمكن العثور على النموذج وملفات التكوين الخاصة به تحت إذا اخترنا النموذج جh_PP-OCRv3_det_student.ymlمسار ملف التكوين هو:PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml

يجب إجراء الإعدادات اللازمة قبل الاستخدام، مثل معلمات التدريب ومسار مجموعة البيانات وما إلى ذلك. فيما يلي بعض التكوينات الرئيسية:

#关键训练参数
use_gpu: true #是否使用显卡
epoch_num: 1200 #训练 epoch 个数
save_model_dir: ./output/ch_PP-OCR_V3_det/ #模型保存路径
save_epoch_step: 200 #每训练 200epoch,保存一次模型
eval_batch_step: [0, 100] #训练每迭代 100 次,进行一次验证
pretrained_model: ./PaddleOCR-release
2.5/pretrain_models/ch_PP-OCR_V3_det/best_accuracy.pdparams #预训练模型路径
#训练集路径设置
Train:
  dataset:
    name: SimpleDataSet
    data_dir: /input0/images #图片文件夹路径
    label_file_list:
      - ./det_train_label.txt #标签路径

4.1.2 ضبط النموذج بدقة

قم بتشغيل الأمر التالي في دفتر الملاحظات لضبط النموذج، حيث يمرر -c مسار ملف النموذج الذي تم تكوينه:

leOCR-release-2.5/tools/train.py \
    -c PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml

باستخدام المعلمات الافتراضية، النموذج ch_PP-OCRv3_det_student بعد 385 حقبة من التدريب على مجموعة التدريب، وصل متوسط النموذج على مجموعة التحقق إلى: 96.96%، ولم يكن هناك زيادة كبيرة بعد ذلك:

[2022/10/11 06:36:09] ppocr INFO: best metric, hmean: 0.969551282051282, precision: 0.9577836411609498,
recall: 0.981611681990265, fps: 20.347745459258228, best_epoch: 385

4.2 نموذج التعريف

4.2.1 تكوين نموذج التعريف

يوفر PaddleOCR العديد من نماذج التعرف. على الطريق PaddleOCR-release-2.5/configs/rec يمكن العثور على النموذج وملفات التكوين الخاصة به تحت

إذا اخترنا النموذج ch_PP-OCRv3_rec_distillationمسار ملف التكوين الخاص به هو:
PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml

يجب إجراء الإعدادات اللازمة قبل الاستخدام، مثل معلمات التدريب، ومسار مجموعة البيانات، وما إلى ذلك. تظهر أدناه بعض التكوينات الرئيسية:

#关键训练参数
use_gpu: true #是否使用显卡
epoch_num: 1200 #训练 epoch 个数
save_model_dir: ./output/rec_ppocr_v3_distillation #模型保存路径
save_epoch_step: 200 #每训练 200epoch,保存一次模型
eval_batch_step: [0, 100] #训练每迭代 100 次,进行一次验证
pretrained_model: ./PaddleOCR-release-2.5/pretrain_models/PPOCRv3/best_accuracy.pdparams #预训练模型路径
#训练集路径设置
Train:
  dataset:
    name: SimpleDataSet
    data_dir: ./RecTrainData/ #图片文件夹路径
    label_file_list:
      - ./rec_train_label.txt #标签路径

4.2.2 ضبط النموذج بدقة

قم بتشغيل الأمر التالي في دفتر الملاحظات لضبط النموذج، حيث يمرر -c مسار ملف النموذج الذي تم تكوينه:

%run PaddleOCR-release-2.5/tools/train.py \
    -c PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml

باستخدام المعلمات الافتراضية، النموذج ch_PP-OCRv3_rec_distillation بعد 136 حقبة من التدريب على مجموعة التدريب، وصلت دقة النموذج على مجموعة التحقق إلى 96.11%، ولم يكن هناك زيادة كبيرة بعد ذلك:

[2022/10/11 20:04:28] ppocr INFO: best metric, acc: 0.9610600272522444, norm_edit_dis: 0.9927426548965615,
Teacher_acc: 0.9540291998159589, Teacher_norm_edit_dis: 0.9905629345025616, fps: 246.029195787707, best_epoch: 136

نتائج

5.1 استدلال نموذج الكشف

قم بتشغيل الأمر التالي في دفتر الملاحظات لاستخدام النموذج المُعدَّل بدقة لاكتشاف النص في صورة الاختبار:

  • Global.infer_img هو مسار الصورة أو مسار مجلد الصورة
  • Global.pretrained_model هو النموذج المضبوط بدقة
  • Global.save_res_path هو المسار لحفظ نتائج الاستدلال
%run PaddleOCR-release-2.5/tools/infer_det.py \
    -c PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml \
    -o Global.infer_img="/input0/images" Global.pretrained_model="./output/ch_PP-OCR_V3_det/best_accuracy" Global.save_res_path="./output/det_infer_res/predicts.txt"

5.2 استدلال نموذج التعرف

قم بتشغيل الأمر التالي في دفتر الملاحظات لاستخدام النموذج المُعدَّل بدقة لاكتشاف النص في صورة الاختبار:

  • Global.infer_img المسار إلى الصورة أو المسار إلى مجلد الصورة
  • Global.pretrained_model للنموذج المُعدَّل بدقة
  • Global.save_res_path احفظ المسار لنتائج الاستدلال
%run PaddleOCR-release-2.5/tools/infer_rec.py \
    -c PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml \
    -o Global.infer_img="./RecEvalData/" Global.pretrained_model="./output/rec_ppocr_v3_distillation/best_accuracy" Global.save_res_path="./output/rec_infer_res/predicts.txt"

5.3 نموذج الكشف والتعرف على الاستدلال التسلسلي

5.3.1 تحويل النموذج

قبل الاستدلال التسلسلي، يجب عليك أولاً تحويل النموذج المدرب والمحفوظ إلى نموذج استنتاج عن طريق تنفيذ أوامر الكشف التالية على التوالي. في:

  • -c مرر المسار إلى ملف تكوين النموذج المراد تحويله
  • -o Global.pretrained_model ملف النموذج المراد تحويله
  • Global.save_inference_dir مسار التخزين لنموذج الاستدلال الذي تم الحصول عليه للتحويل
    أدخل وصف الصورة هنا

5.3.2 الاستدلال المتتالي النموذجي

بعد اكتمال عملية التحويل، يوفر PaddleOCR أداة ربط نموذج الكشف والتعرف، والتي يمكنها ربط أي نموذج كشف مدرب وأي نموذج معترف به في نظام التعرف على النص المكون من مرحلتين.

تمر صورة الإدخال بأربع مراحل رئيسية: اكتشاف النص، وتصحيح إطار الاكتشاف، والتعرف على النص، وتصفية النتيجة لإخراج موقع النص ونتائج التعرف.

كود التنفيذ هو كما يلي:

  • image_dir المسار إلى صورة واحدة أو مجموعة من الصور
  • det_model_dir المسار لاكتشاف نموذج الاستدلال
  • rec_model_dir لتحديد مسار نموذج الاستدلال

يتم حفظ نتائج التعرف البصري في المجلد ./inference_results بشكل افتراضي.

%run PaddleOCR-release-2.5/tools/infer/predict_system.py \
--image_dir="OCRTest" \
--det_model_dir="./output/det_inference/" \
--rec_model_dir="./output/rec_inference/Student/"

مثال على نتائج التصور
لمشاهدة البرنامج التعليمي الكامل، قم بزيارة:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu

حول PaddleOCR و OpenBayes

PaddleOCR هي مكتبة أدوات OCR تعتمد على Baidu PaddlePaddle، بما في ذلك OCR صيني خفيف الوزن للغاية مع نموذج إجمالي يبلغ 8.6 مليون فقط. كما أنه يدعم خوارزميات التدريب ونشر الخدمة والنشر النهائي لاكتشاف النصوص المتعددة والتعرف عليها.

لمزيد من المعلومات، يرجى زيارة:
https://github.com/PaddlePaddle/PaddleOCR

فهم OpenBayes

OpenBayes هي مؤسسة رائدة في مجال أبحاث الذكاء الآلي في الصين.يوفر عددًا من الخدمات الأساسية المتعلقة بتطوير الذكاء الاصطناعي، بما في ذلك حاويات قوة الحوسبة، والنمذجة التلقائية، والتعديل التلقائي للمعلمات.

وفي الوقت نفسه، أطلقت OpenBayes أيضًا العديد من الموارد العامة السائدة مثل مجموعات البيانات والبرامج التعليمية والنماذج. لتمكين المطورين من التعلم بسرعة وإنشاء نماذج التعلم الآلي المثالية.

قم بزيارة openbayes.com وقم بالتسجيل الآن للاستمتاع بـ 600 دقيقة أسبوعيًا من RTX 3090 و300 دقيقة أسبوعيًا من وقت الحوسبة المجاني لوحدة المعالجة المركزية.

ملاحظة: ستصل موارد الهدايا الأسبوعية إلى حسابك كل يوم اثنين بعد الظهر

لمشاهدة وتشغيل البرنامج التعليمي الكامل، قم بزيارة الرابط التالي:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu

-- زيادة--