تعلُّم الآلة في Earth Engine

واجهات برمجة تطبيقات التعلم الآلي

تعلُّم الآلة (ML) هو أسلوب فعّال لتحليل بيانات رصد Earth. توفّر أداة Earth Engine إمكانات مضمّنة للسماح للمستخدمين ب إنشاء نماذج تعلُّم الآلة واستخدامها في السيناريوهات الشائعة باستخدام واجهات برمجة تطبيقات سهلة الاستخدام.

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

  • التصنيف الخاضع للإشراف: من بين تقنيات تعلُّم الآلة لتصنيف الأراضي استخدام أمثلة على الحقائق الأساسية لتعليم نموذج للتفريق بين الفئات. تتيح المعرِّفات الخاضعة للإشراف المدمجة في Earth Engine تنفيذ هذه العملية.
  • التصنيف غير المُوجَّه: في التصنيف غير المُوجَّه، لا يتم تقديم أمثلة على الحقائق الأساسية إلى خوارزمية التدريب. بدلاً من ذلك، تقسم الخوارزمية البيانات المتاحة إلى مجموعات استنادًا إلى اختلافات أساسية. إنّ الأدوات المصنّفة غير الخاضعة للإشراف في Earth Engine مفيدة بشكل خاص في حال عدم توفّر بيانات حقيقية، أو في حال عدم معرفة العدد النهائي للفئات أو عند إجراء تجربتين سريعتين.
  • الانحدار: في حين أنّ نموذج التصنيف يحاول تجميع كل مدخلات في فئة منفصلة، يحاول نموذج الانحدار التنبؤ بمتغيّر مستمر لكل مدخل. على سبيل المثال، يمكن أن يتنبّأ نموذج الانحدار بجودة المياه أو النسبة المئوية للغطاء النباتي أو النسبة المئوية للغطاء السحابي أو إنتاج المحاصيل. لمزيد من المعلومات، يُرجى الرجوع إلى قسم "التكرار الخطي" في ee.Reducers.

التدريب والتوقّعات خارج Earth Engine

التعلّم العميق والشبكات العصبية هما من تقنيات تعلُّم الآلة التي يمكنها العمل بشكل جيد مع البيانات المعقدة، مثل الصور من الأقمار الصناعية. لا تتوفّر تقنيات التعلم العميق أو الشبكات العصبية في واجهات برمجة التطبيقات لميزة "التعلم الآلي" في Earth Engine. بدلاً من ذلك، للاستفادة منها، عليك استخدام إطار عمل مثل TensorFlow أو PyTorch وتدريب النموذج خارج Earth Engine.

يمكنك أيضًا إجراء التدريب خارج Earth Engine إذا كنت تتعلّم إطار عمل مثل scikit-learn لتعلم الآلة الكلاسيكي أو XGBoost لشجرات القرارات المحسّنة بالانحدار.

أخيرًا، قد تحتاج إلى تدريب نموذج خارج Earth Engine إذا كانت مجموعة data كبيرة جدًا وتتجاوز الحدود الموضّحة أدناه.

تصدير البيانات من Earth Engine للتدريب

الحصول على توقّعات من نموذج خارج Earth Engine

إذا درّبت نموذجًا خارج Earth Engine، لديك بعض الخيارات للحصول على توقّعات من هذا النموذج.

أسباب أخرى لتدريب النماذج خارج Earth Engine

بالإضافة إلى السهولة والاستخدام المفضّل، قد تحتاج إلى تدريب نموذج خارج Earth Engine إذا كنت تريد استخدام تصاميم النماذج (مثل شبكات الخلايا العصبية التوليدية) غير المتوافقة مع واجهات برمجة التطبيقات الخاصة بميزة "تعلُّم الآلة" في Earth Engine، أو إذا كنت تريد استخدام المزيد من ميزات Vertex AI أو إذا واجهت حدودًا في التوسيع باستخدام واجهات برمجة التطبيقات الخاصة بميزة "تعلُّم الآلة" في Earth Engine.

حدود مجموعة التدريب

يكون التدريب باستخدام ee.Classifier أو ee.Clusterer فعالًا بشكل عام مع مجموعات البيانات التي يصل حجمها إلى 100 ميغابايت. كإرشادات تقريبية جدًا، بافتراض دقة 32 بت (أي أرقام عائمة)، يمكن أن تتوافق هذه الدقة مع مجموعات بيانات التدريب التي تستوفي (حيث n هو عدد الأمثلة b هو عدد النطاقات):

عدد العناصر ≤ (100 * 2 20) / 4

على سبيل المثال، إذا كنت تدرِّب باستخدام 100 مجموعة، يجب أن يكون عدد الأمثلة المستخدَمة للتدريب أقل من 200,000.

حدود الاستنتاج

بما أنّ Earth Engine تعالج شرائح صور بدقة 256 × 256، يجب أن تتضمّن طلبات الاستنتاج المتعلّقة بالصور أقل من 400 نطاق (مرة أخرى، بافتراض دقة 32 بت للصور).

يمكنك إعادة تدريب أحد المصنّفات أكثر من مرّة للحفاظ على مجموعة البيانات لكل عملية تدريب ضمن الحدود المسموح بها.

      var trainings = ee.List.sequence(0, 3).map(function(cover) {
          return image.addBands(landcover.eq(cover).stratifiedSample()
      })

      var classifier = ee.Classifier.smileCart()
          .train(trainings.get(0), "cover")
          .train(trainings.get(1), "cover")
          .train(trainings.get(2), "cover")
          .train(trainings.get(3), "cover")
    

الحدود المفروضة على حجم النموذج

بالإضافة إلى ذلك، يجب أن يكون حجم النموذج نفسه أقل من 100 ميغابايت. يمكن ضبط العديد من المصنّفات لدينا للحدّ من تعقيدها وبالتالي حجمها. على سبيل المثال:

      var classifier = ee.Classifier.smileRandomForest({
          numberOfTrees: 10,
          minLeafPopulation: 10,
          maxNodes: 10000
      })