تنفيذ التعلم النشط

استخدام التعلم النشط لتحسين نماذجك بسرعة على Roboflow .

Written by Mohamed Traore

Last published at: June 30th, 2022

"التعلم النشط هو إستراتيجية تدريب على التعلم الآلي تمكّن الخوارزمية من التحديد الاستباقي لمجموعات فرعية من بيانات التدريب التي قد تعمل على تحسين الأداء بكفاءة أكبر. وببساطة أكثر - التعلم النشط هو استراتيجية لتحديد الأمثلة المحددة في بيانات التدريب لدينا التي يمكنها تحسين أداء النموذج بشكل أفضل. إنها مجموعة فرعية من استراتيجيات التعلم الآلي للإنسان في الحلقة لتحسين نماذجنا من خلال الحصول على أقصى استفادة من بيانات التدريب لدينا. " - ما هو التعلم النشط؟

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

هناك ثلاث طرق رئيسية لتطبيق التعلم النشط:

1. باستمرار جمع الصور الجديدة بشكل عشوائي

يمكنك كتابة عينات عشوائية في حل النشر الخاص بك.

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

مزايا:

  1. سيتعلم النموذج بسرعة ما يجب اكتشافه وما لا يتم اكتشافه داخل البيئة الموجودة فيه.
  2. المزيد من الصور التي تحتوي على الكائنات موضع الاهتمام (ما تم تدريب نموذجنا على اكتشافه) - بعد وضع العلامات وإعادة التدريب ، سيعمل نموذجنا بشكل أفضل في بيئة النشر الخاصة به!

مثال:

أنت تقوم بتشغيل الاستنتاج (نشر النموذج الخاص بك) لمدة 6 ساعات. في هذا الإطار الزمني المكون من 6 ساعات ، تقوم بضبط جهازك برمجيًا (مثل NVIDIA Jetson أو OAK Device) لحفظ عدد محدد من الصور كل 15 دقيقة (أي "حفظ 3 صور كل 15 دقيقة"). أعد الصور التي تم جمعها إلى Roboflow أو قم بتخزينها على أجهزتك / نظامك لتحميلها في المستقبل إلى Roboflow .

  • بمرور الوقت ، ستلاحظ عددًا أقل من عمليات الكشف الخاطئة.
    • بالإضافة إلى ذلك ، سوف تحصل على بعض الصور مع الأشياء المثيرة للاهتمام (ما الذي تم تدريب نموذجك على "رؤيته") ، بغض النظر عن مستوى الثقة.
    • وتتمثل ميزة هذا في أنه سيتم تعزيز نموذجك لمواصلة القيام "بعمل جيد" بشأن الأشياء محل الاهتمام ، وتحسين المكان الذي قام فيه "بعمل سيئ" (اكتشاف ثقة منخفضة ، أو عدم اكتشاف عندما كان يجب أن يكون هناك 1) بغض النظر عن مستوى الثقة الذي تم اكتشافه عنده.

2. اجمع صورًا جديدة أقل من حد معين من الثقة

يمكن استخدام هذه الطريقة عن طريق تحديد حد الثقة لعمليات الاكتشاف والمطالبة (ضمن الكود الخاص بك) بأخذ عينات من أي اكتشافات للكائنات (تم تدريب النموذج على التعرف عليها) مع حد ثقة أقل من ___٪ ، أو 0 .___ يتم أخذ عينات وإرسالها العودة إلى مساحة العمل الخاصة بك على Roboflow لمزيد من الفحص ، أي الاختبار في تطبيق الويب المستضاف أو واجهة برمجة تطبيقات Inference للعثور على المشكلة + وضع العلامات وإعادة التدريب.

مزايا:

  1. سيتعلم النموذج بسرعة ما يجب اكتشافه وما لا يتم اكتشافه داخل البيئة الموجودة فيه.
  2. سيبدأ مستوى الثقة في الاكتشافات في الزيادة بسرعة نظرًا لأنك تخبر نموذجك بشكل أساسي (بعد وضع العلامات وإعادة التدريب) ، "مرحبًا ، لقد قمت بعمل سيئ هنا - هذا ما كان من المفترض أن تفعله".
  3. المزيد من الصور التي تحتوي على الكائنات موضع الاهتمام (ما تم تدريب نموذجنا على اكتشافه) - بعد وضع العلامات وإعادة التدريب ، سيعمل نموذجنا بشكل أفضل في بيئة النشر الخاصة به!

أمثلة:

  • ابدأ بحد ثقة معيّن بنسبة 40٪ - أي كائنات (أو كل __ عدد المرات التي يتم فيها اكتشاف كائن) عند مستوى ثقة أقل من 40٪ ، أو 0.40 ، يجب ضبطها برمجيًا للعودة إلى Roboflow أو تخزينها على أجهزتك للتحميل في المستقبل إلى Roboflow .
    • التالي : بعد إعادة التدريب وتلقي مقاييس تدريب أفضل و / أو المزيد من البيانات من بيئة الإنتاج ، قم بتعيين حد الثقة على 50٪ ، وأي كائنات تم اكتشافها بمستوى ثقة أقل من 50٪ ، أو 0.50 ، يجب تعيينها بشكل برمجي للعودة إلى Roboflow أو تخزينها على أجهزتك / نظامك للتحميل في المستقبل إلى Roboflow .
    • لاحقًا : بمرور الوقت ، ستتمكن من تعيين معيار أعلى لمستويات الثقة ، مثل 60٪ أو 75٪ أو 80٪. السبب وراء عدم رغبتك في البدء عند هذه المستويات لمعايير الثقة هو أنك ستتلقى عددًا كبيرًا جدًا من الاكتشافات الخاطئة ، أو الاكتشافات بثقة منخفضة ، مع الطرز الأحدث.

3. اطلب من مستخدمي التطبيق التحقق من تنبؤات النموذج

مزايا:

  1. ملاحظات المستخدم هي أداة رائعة. تحصل بشكل أساسي على مجموعات أكثر من العيون للمساعدة في مراقبة جودة نموذجك.
  2. يمكنك أيضًا إضافة bug repo rts ، في حالة عدم عمل النموذج على الإطلاق (على سبيل المثال ، تنبيهات عند تعطل النظام أو التطبيق أو تشغيل النموذج ولكن لا يكتشف أي شيء).

مثال:

  • أضف "bug repo rts" داخل لوحة القيادة أو تطبيق الهاتف المحمول أو مع ذلك اخترت إنشاء منتج رؤية الكمبيوتر الخاص بك. استخدم bug repo rts للتعرف بسرعة على طرق تحسين وظائف منتج رؤية الكمبيوتر الخاص بك ، والأهم من ذلك ، التأكد من أن المستخدمين لديهم نموذج لا يعمل بشكل جيد فحسب ، بل مهيأ للتحسين بسرعة.
    • التقط أي صور من bug repo rts وقم بتعيينها برمجيًا للعودة إلى Roboflow أو قم بتخزينها على نظامك لتحميلها في المستقبل إلى Roboflow .

موارد لتطبيق التعلم النشط

نموذج مفكرة

أولاً ، قم بتثبيت حزمة Roboflow Python pip (PyPi)

# installing the Roboflow Python pip package
pip install roboflow
  1. انسخ / الصق كتلة التعليمات البرمجية أدناه في VSCode أو XCode أو PyCharm أو Spyder (أو محرر كود آخر)
  2. قم بتحديث قيم الطراز [الاسم] ، وإصدار الطراز ، ومفتاح api_name ، واسم الجهاز داخل الكائن "rf".
  3. احفظ ملف python في دليل - تأكد من تدوين اسم الدليل واسم الملف لأننا سنحتاجهما لاحقًا حتى يعمل النشر .
from roboflow import Roboflow
import json
# private api key found in Roboflow > YOURWORKSPACE > Roboflow API
# NOTE: this is your private key, not publishable key!
# https://docs.roboflow.com/rest-api#obtaining-your-api-key
private_api_key = "INSERT API KEY HERE"

# gain access to your workspace
rf = Roboflow(api_key=private_api_key)
workspace = rf.workspace()

# you can obtain your model path from your project URL, it is located
# after the name of the workspace within the URL - you can also find your
# model path on the Example Web App for any dataset version trained
# with Roboflow Train
# https://docs.roboflow.com/inference/hosted-api#obtaining-your-model-endpoint
model_path = "INSERT MODEL PATH HERE"
project = workspace.project(f"{model_path}")

# be sure to replace with a path to your file
# if you run this in Colab, be sure to upload the file to colab, hover over
# the file name, and select the 3 dots on the right of the file name to copy
# the file path, and paste it as the value for "imgpath"
img_path = "INSERT IMAGE PATH HERE"

# establish number of retries to use in case of upload failure
project.upload(f"{img_path}", num_retry_uploads=3)

واجهة برمجة تطبيقات تحميل Roboflow

يمكن استخدام واجهة برمجة تطبيقات التحميل لتحميل الصور إلى مشروع جديد

  • مثال : المشروع 1 : النموذج المنتشر حاليا | المشروع 2 : صور التعلم النشط - صور تم جمعها عشوائيًا | المشروع 3 : صور التعلم النشط - الصور أقل من عتبة الثقة 30٪ | المشروع 4: صور التعلم النشط - الصور أقل من حد الثقة بنسبة 50٪

API الاستدلال Roboflow

يتم استخدام البرامج النصية "InferenceHosted" و "UploadHosted" للصور التي يتم استضافتها على الخادم. يتم استخدام البرامج النصية "InferenceLocal" و "UploadLocal" للصور التي تتم استضافتها على جهازك (مثل محرك الأقراص الثابتة بجهاز الكمبيوتر أو جهاز الحافة).

حزمة بايثون Roboflow