Skip To Content

مثال: سير عمل التعلم الشامل من البداية إلى النهاية

عادةً ما تكون نماذج التعلم الشامل كبيرة الحجم وتتطلب قوة حوسبة هائلة. من خلال دمج تدريب نماذج TensorFlow Lite مع ArcGIS API for Python، يمكنك إنشاء نماذج تعلم شامل صغيرة الحجم ومناسبة للنشر على الأجهزة الجوالة.

في سير عمل دفتر الملاحظات هذا، يُستخدم إطار عمل TensorFlow Lite لتدريب نموذج تعلم شامل لتطبيقات الأجهزة الجوالة. سيتم تدريب سير العمل لتصنيف أنواع النباتات وإنشاء الملفات اللازمة المراد نشرها للاستدلال المباشر.

المتطلبات

لتنفيذ سير العمل هذا، يجب أن تستوفي المتطلبات التالية:

  • مجموعة بيانات التدريب، تتألف من مجموعة متنوعة من صور الأنواع النباتية المصنفة.
    ملاحظة:‏

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

  • لتشغيل سير العمل هذا، يجب تعيين الحد الأقصى لذاكرة بيئة دفتر الملاحظات على 15 جيجابايت. يتم تعيين حد الذاكرة في بيئات دفتر الملاحظات القياسية والمتقدمة على 4 جيجابايت و6 جيجابايت على التوالي افتراضيًا. لتغيير هذا الحد، قم بتسجيل الدخول إلى مدير ArcGIS Notebook Server بصلاحية إدارية وانقر فوق الإعدادات > أوقات التشغيل.
    ملاحظة:‏

    يعتمد حد الذاكرة اللازم لسير العمل هذا على حجم بيانات التدريب.

  • يُعد التعلم الشامل قويًا من الناحية الحسابية ويُوصى باستخدام وحدة معالجة رسومات قوية لمعالجة مجموعات البيانات الكبيرة.

عمليات استيراد مكتبة Python

قم باستيراد مكتبات Python التالية:

#To enable TensorFlow as backend
%env ARCGIS_ENABLE_TF_BACKEND=1
 
import os
from pathlib import Path
 
from arcgis.gis import GIS
from arcgis.learn import prepare_data, FeatureClassifier
 
gis = GIS("home")

تحميل البيانات إلى مساحة العمل الخاصة بك

قم بتحميل مجموعة البيانات إلى مساحة عمل دفتر ملاحظاتك ضمن Files كملف .zip يحتوي على شرائح صور مصنفة في مجلد باسم images.

#Adding zipped file from workspace
#Use export_training_data() to get the training data
filepath = "/arcgis/home/train_200MB_a_tensorflow-lite_model_for_identifying_plant_species.zip"
 
#Extract zip
import zipfile
with zipfile.ZipFile(filepath, "r") as zip_ref:
   zip_ref.extractall(Path(filepath).parent)
 
#Get the data path
data_path = Path(os.path.join(os.path.splitext(filepath)[0]))
 
#Filter non-RGB images
from glob import glob
from PIL import Image
 
for image_filepath in glob(os.path.join(data_path, "images", "**","*.jpg")):
   if Image.open(image_filepath).mode != "RGB":
       os.remove(image_filepath)

إعداد البيانات

تعمل دالة prepare_data() في ArcGIS API for Python على إعداد البيانات لعمليات سير عمل التعلم الشامل. تقرأ الدالة عينات التدريب وتقوم بأتمتة عملية إعداد البيانات عن طريق تطبيق تحويلات وتعديلات مختلفة على بيانات التدريب. تُتيح هذه الإضافات تدريب النماذج ببيانات محدودة، وتحول دون التكيف مع النماذج بشكل زائد عن الحد.

data = prepare_data(
    path=data_path,
    dataset_type="Imagenet",
    batch_size=64,
    chip_size=224
)

للحصول على معلومات بشأن معلمات دالة prepare_data()، راجع مرجع واجهة برمجة التطبيقات arcgis.learn.

تصور بياناتك

بمجرد إعداد بياناتك، يمكنك استخدام دالة show_batch() لتمثيل عينات منها مرئيًا.

data.show_batch(rows=2)

تحميل بنية النموذج

سيحدد نموذج مصنف المعالم في arcgis.learn فئة كل معلم. يتطلب مصنف المعالم المعلمات التالية:

  • الهيكل الأساسي—وهو سلسلة اختيارية. نموذج الشبكة العصبية الالتفافية الأساسي المُستخدم لاستخراج المعالم، والذي يكون ResNet34 افتراضيًا. تتضمن الهياكل الأساسية المدعومة عائلة ResNet ونماذج Timm المحددة (بدعم تجريبي) من الهياكل الأساسية().
  • الواجهة الخلفية—وهي سلسلة اختيارية.

    يتحكم هذا في إطار عمل الواجهة الخلفية الذي سيتم استخدامه لهذا النموذج، وهو ’pytorch‘ افتراضيًا.

model = FeatureClassifier(data, backbone="MobileNetV2", backend="tensorflow")

حساب معدل التعلم

يستخدم ArcGIS API for Python أداة تحديد معدل التعلم الخاصة بـ fast.ai للعثور على معدل التعلم الأمثل لتدريب نماذجك. استخدم طريقة lr_find() للعثور على معدل التعلم الأمثل لتدريب نموذج قوي. بمجرد تحديد معدل التعلم مع التشغيل الأول للنموذج، يمكنك تمريره كقيمة ثابتة لعمليات التشغيل الإضافية في أثناء إعادة تدريب النموذج.

lr = model.lr_find()
#lr =  0.000691831 #from the first run

ملاءمة النموذج

تُستخدم طريقة fit() لتدريب نموذجك. تتطلب الطريقة إدخالاً لمعلمة الدورات. تُحدد الدورة عدد مرات تعرض النموذج لمجموعة بيانات التدريب بأكملها. تتيح كل دورة للنموذج التعلم وتعديل الترجيحات بناءً على البيانات. في المثال التالي، يتم تشغيل النموذج لمدة ثلاث دورات لأغراض الاختبار.

يُنصح بالبدء بـ 25 دورة للحصول على نموذج أكثر دقة للنشر.

model.fit(3, lr=lr)

تمثيل النتائج بشكل مرئي

للتحقق من صحة نتائج النموذج الخاص بك في دفتر ملاحظاتك، يمكنك استخدام طريقة show_results() لمقارنة تنبؤات النموذج بصور حقائق أرضية عشوائية.

model.show_results(rows=4, thresh=0.2)

حفظ النموذج

بعد التأكد من دقة نموذجك الذي تم تدريبه، احفظه للاستخدام لاحقًا. يتم حفظ النموذج افتراضيًا كملف .dlpk في مجلد النماذج الفرعي داخل مجلد بيانات التدريب.

model.save("Plant-identification-25-tflite", framework="tflite")

نشر النموذج

يمكنك الآن نشر ملف .dlpk المحفوظ مع مجموعات بيانات أخرى ومشاركته داخل مؤسستك. للحصول على معلومات بشأن كيفية استخدام ملف .dlpk، راجع حساب عدد السيارات في الصور الجوية باستخدام التعلم الشامل.