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

نظرة عامة على المحتوى: يؤدي اكتشاف رقم الحاوية استنادًا إلى PaddleOCR إلى تقصير وقت تسجيل أرقام الحاويات وتحسين كفاءة تحميل وتفريغ المنفذ.
الكلمات الرئيسية: برنامج PaddleOCR للتعرف على النصوص عبر الإنترنت
وبحسب مجموعة من البيانات التي أصدرتها شركة Alphaliner، وهي وكالة استشارات وتحليلات شحن دولية، في مارس/آذار من هذا العام، ضمن قائمة أفضل 30 ناقلة حاويات في عام 2021،تصدر ميناء شنغهاي القائمة بـ "بطاقة تقرير" بلغت 47.025 مليون حاوية مكافئة لعشرين قدمًا.
أنهت أكبر 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 لمهام اكتشاف رقم الحاوية والتعرف عليه. استخدم كمية صغيرة من البيانات لتدريب نماذج الكشف والتعرف بشكل منفصل، وأخيرًا قم بربطها معًا لتحقيق مهمة اكتشاف رقم الحاوية والتعرف عليه.
إعداد البيئة
- ابدأ تشغيل حاوية "تدريب النموذج" في وحدة التحكم OpenBayes. حدد PaddlePaddle 2.3 للبيئة وRTX 3090 أو نوع GPU آخر للموارد.
إذا لم يكن لديك حساب على المنصة، يرجى زيارة العنوان التالي للتسجيل أولاً: https://openbayes.com/console/signup
- افتح نافذة 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
- قواعد شرح تدريب نموذج اكتشاف 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) للنقاط الأربع في مربع النص، مرتبة في اتجاه عقارب الساعة من النقطة الموجودة في الزاوية اليسرى العليا.
يمثل النسخ النص الموجود في مربع النص الحالي. عندما يكون محتواه "###"، فهذا يعني أن مربع النص غير صالح وسيتم تخطيه أثناء التدريب.
- قواعد شرح تدريب نموذج التعرف 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
-- زيادة--