تدريب نموذج صغير للكشف عن الكائنات باستخدام AutoML
ينطبق على:ملحق ML Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)
في هذه المقالة، ستتعلم كيفية تدريب نموذج الكشف عن الكائنات للكشف عن الكائنات الصغيرة في صور عالية الدقة باستخدام التعلم الآلي التلقائي في Azure التعلم الآلي.
عادةً ما تعمل نماذج رؤية الكمبيوتر لاكتشاف العناصر بشكل جيد لمجموعات البيانات التي تحتوي على عناصر كبيرة نسبياً. ومع ذلك، نظراً لقيود الذاكرة والحسابات، تميل هذه النماذج إلى الأداء الضعيف عند تكليفها باكتشاف الأجسام الصغيرة في الصور عالية الدقة. نظرا لأن الصور عالية الدقة عادة ما تكون كبيرة، يتم تغيير حجمها قبل الإدخال في النموذج، ما يحد من قدرتها على اكتشاف الكائنات الأصغر - نسبة إلى حجم الصورة الأولي.
للمساعدة في هذه المشكلة، يدعم التعلم الآلي التلقائي التبليط كجزء من قدرات رؤية الكمبيوتر. تعتمد إمكانية التجانب في التعلم الآلي على المفاهيم الواردة في قوة التجانب لاكتشاف الأجسام الصغيرة.
عند التجانب، يتم تقسيم كل صورة إلى شبكة من المربعات. تتداخل المربعات المجاورة مع بعضها في أبعاد العرض والارتفاع. يتم اقتصاص التجانب من الأصل كما هو موضح في الصورة التالية.
المتطلبات الأساسية
مساحة عمل للتعلم الآلي من Microsoft 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.
الخطوات التالية
- تعرف على المزيد حول طريقة توزيع النموذج ومكانه.
- للحصول على تعريفات وأمثلة للمخططات البيانية عن الأداء والمقاييس المقدمة لكل وظيفة، راجع تقييم نتائج تجربة التعلم الآلي التلقائي.
- البرنامج التعليمي: تدريب نموذج الكشف عن الكائنات باستخدام AutoML وPython.
- راجع ما هي المعلمات التشعبية المتوفرة لمهام رؤية الكمبيوتر.
- وضع تنبؤات باستخدام ONNX عن نماذج رؤية الكمبيوتر من AutoML