تدريب نموذج صغير للكشف عن الكائنات باستخدام AutoML

ينطبق على:ملحق ML Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)

في هذه المقالة، ستتعلم كيفية تدريب نموذج الكشف عن الكائنات للكشف عن الكائنات الصغيرة في صور عالية الدقة باستخدام التعلم الآلي التلقائي في Azure التعلم الآلي.

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

للمساعدة في هذه المشكلة، يدعم التعلم الآلي التلقائي التبليط كجزء من قدرات رؤية الكمبيوتر. تعتمد إمكانية التجانب في التعلم الآلي على المفاهيم الواردة في قوة التجانب لاكتشاف الأجسام الصغيرة.

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

رسم تخطيطي يظهر صورة يتم تقسيمها إلى شبكة من الإطارات المتراكبة.

المتطلبات الأساسية

النماذج المدعومة

يتم دعم الكشف عن الكائنات الصغيرة باستخدام التبليط لجميع النماذج التي يدعمها التعلم الآلي التلقائي للصور لمهمة الكشف عن الكائنات.

تمكين التجانب أثناء التدريب

لتمكين التبليط، يمكنك تعيين المعلمة tile_grid_size إلى قيمة مثل '3x2'؛ حيث 3 هو عدد الإطارات المتجانبة على طول بعد العرض و2 هو عدد الإطارات المتجانبة على طول بعد الارتفاع. عند تعيين هذه المعلمة إلى '3x2'؛ يتم تقسيم كل صورة إلى شبكة من الإطارات المتجانبة 3 × 2. تتداخل كل التجانبات مع المربعات المجاورة، بحيث يتم تضمين أي عناصر تقع على حدود التجانب بالكامل في أحد التجانبات. يتم التحكم في هذا التداخل بواسطة المعلمة tile_overlap_ratio ، والتي يتم تعيينها افتراضيا إلى 25٪.

عند تمكين التجانب، يتم تمرير الصورة بأكملها والتجانب الناتج منها عبر النموذج. يتم تغيير حجم هذه الصور والمربعات وفقاً لمعلمات min_size وmax_size قبل التغذية بالنموذج. يزيد وقت الحساب بشكل متناسب بسبب معالجة هذه البيانات الإضافية.

على سبيل المثال، عندما تكون المعلمة tile_grid_size "3x2" يكون وقت الحساب أعلى بسبعة أضعاف تقريبا من دون التبليط.

يمكنك تحديد قيمة tile_grid_size في معلمات التدريب كسلسلة.

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

training_parameters:
  tile_grid_size: '3x2'

تعتمد قيمة المعلمة tile_grid_size على أبعاد الصورة وحجم العناصر داخل الصورة. على سبيل المثال، قد يكون العدد الأكبر من المربعات مفيداً عند وجود عناصر أصغر في الصور.

لاختيار القيمة المثلى لهذه المعلمة لمجموعة البيانات الخاصة بك، يمكنك استخدام بحث المعامل التشعبي. للقيام بذلك، يمكنك تحديد اختيار قيم هذه المعلمة في مساحة المعلمة التشعبية.

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

search_space:
  - model_name:
      type: choice
      values: ['fasterrcnn_resnet50_fpn']
    tile_grid_size:
      type: choice
      values: ['2x1', '3x2', '5x3']

التجانب أثناء الاستدلال

عندما يتم توزيع نموذج تم تدريبه على التجانب، يحدث التجانب أيضاً أثناء الاستدلال. يستخدم التعلم الآلي من Microsoft Azure قيمة tile_grid_size من التدريب لإنشاء التجانب أثناء الاستدلال. يتم تمرير الصورة بأكملها والمربعات المقابلة من خلال النموذج، ويتم دمج مقترحات العناصر منها لإخراج التنبؤات النهائية، كما في الصورة التالية.

رسم تخطيطي يوضح عروض الكائنات من الصور واللوحات التي يتم دمجها لتشكيل التنبؤات النهائية.

إشعار

من الممكن أن يتم اكتشاف نفس العنصر من عدة مربعات، ويتم الكشف عن التكرار لإزالة مثل هذه التكرارات.

يتم الكشف عن التكرار عن طريق تشغيل NMS على العروض من المربعات والصورة. عندما تتداخل عدة مقترحات، يتم اختيار العرض الحاصل على أعلى درجة ويتم تجاهل العروض الأخرى باعتبارها تكرارات. يتم اعتبار عرضين متداخلين عندما يكون التقاطع فوق الاتحاد (iou) بينهما أكبر من المعلمة tile_predictions_nms_thresh.

لديك أيضاً خيار تمكين التجانب فقط أثناء الاستدلال دون تمكينه في التدريب. للقيام بذلك، قم بتعيين المعلمة tile_grid_size أثناء الاستدلال فقط، وليس للتدريب.

قد يؤدي القيام بذلك إلى تحسين الأداء لبعض مجموعات البيانات، ولن تتحمل التكلفة الإضافية التي تأتي مع التبليط في وقت التدريب.

تجانب معلمات تشعبية

فيما يلي المعلمات التي يمكنك استخدامها للتحكم في ميزة التجانب.

اسم المعلمة ‏‏الوصف الإعداد الافتراضي
tile_grid_size حجم الشبكة المراد استخدامه لتجانب كل صورة. متاح للاستخدام أثناء التدريب والتحقق والاستدلال.

يجب تمريرها كسلسلة بتنسيق '3x2' .

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

يجب أن يكون عدداً حراً في [0، 1).
0.25
tile_predictions_nms_thresh التقاطع عبر عتبة الاتحاد لاستخدامه في عدم الحد الأقصى للقمع (nms) أثناء دمج التنبؤات من المربعات والصورة. متاح أثناء التحقق والاستدلال. قم بتغيير هذه المعلمة إذا كان هناك العديد من الصناديق التي تم اكتشافها لكل عنصر في التوقعات النهائية.

يجب أن يكون عدداً حراً في [0، 1].
0.25

مثال دفاتر الملاحظات

راجع المفكرة النموذجية لاكتشاف العناصر للحصول على أمثلة التعليمة البرمجية التفصيلية لإعداد عنصر اكتشاف العنصر والتدريب عليه.

إشعار

يتم توفير جميع الصور في هذه المقالة وفقاً لقسم الاستخدام المسموح به في اتفاقية ترخيص MIT. حقوق النشر © 2020 Roboflow, Inc.

الخطوات التالية