یادگیری ماشین در موتور زمین

APIهای یادگیری ماشین

یادگیری ماشین (ML) یک تکنیک قدرتمند برای تجزیه و تحلیل داده های رصد زمین است. Earth Engine دارای قابلیت‌های داخلی است که به کاربران اجازه می‌دهد مدل‌های ML را برای سناریوهای رایج با استفاده از APIهای آسان بسازند و استفاده کنند.

یک کار رایج ML طبقه بندی پیکسل ها در تصاویر ماهواره ای به دو یا چند دسته است. این رویکرد برای نقشه برداری پوشش زمین کاربری زمین و سایر برنامه های کاربردی محبوب مفید است.

  • طبقه‌بندی نظارت شده: یکی از تکنیک‌های ML برای طبقه‌بندی زمین، استفاده از نمونه‌های حقیقت زمینی برای آموزش مدلی برای تمایز بین طبقات است. طبقه‌بندی‌کننده‌های داخلی موتور زمین از این فرآیند پشتیبانی می‌کنند.
  • طبقه بندی بدون نظارت: در طبقه بندی بدون نظارت، هیچ مثالی از صدق زمینی به الگوریتم آموزشی ارائه نمی شود. در عوض، الگوریتم داده های موجود را بر اساس تفاوت های ذاتی به خوشه ها تقسیم می کند. طبقه‌بندی‌کننده‌های بدون نظارت Earth Engine به‌ویژه زمانی مفید هستند که داده‌های درستی زمینی وجود نداشته باشد، زمانی که تعداد نهایی کلاس‌ها را نمی‌دانید یا زمانی که می‌خواهید آزمایش سریع انجام دهید.
  • رگرسیون: در حالی که یک مدل طبقه‌بندی سعی می‌کند هر ورودی را در یک کلاس گسسته قرار دهد، یک مدل رگرسیون تلاش می‌کند یک متغیر پیوسته را برای هر ورودی پیش‌بینی کند. به عنوان مثال، یک مدل رگرسیون می تواند کیفیت آب، درصد پوشش جنگلی، درصد پوشش ابر یا عملکرد محصول را پیش بینی کند. برای اطلاعات بیشتر، لطفاً به بخش رگرسیون خطی ee.Reducers مراجعه کنید.

آموزش و پیش بینی خارج از موتور زمین

یادگیری عمیق و شبکه های عصبی تکنیک های یادگیری ماشینی هستند که می توانند برای داده های پیچیده مانند تصاویر ماهواره ای به خوبی کار کنند. نه یادگیری عمیق و نه شبکه‌های عصبی در APIهای یادگیری ماشین Earth Engine پشتیبانی نمی‌شوند. در عوض، برای استفاده از آنها، باید از چارچوبی مانند TensorFlow یا PyTorch استفاده کنید و مدل خود را خارج از Earth Engine آموزش دهید.

اگر قبلاً با چارچوبی مانند scikit-learn برای یادگیری ماشین کلاسیک یا XGBoost برای درختان تصمیم تقویت شده گرادیان آشنا هستید، ممکن است بخواهید خارج از Earth Engine نیز آموزش دهید.

در نهایت، اگر مجموعه داده‌های شما بسیار زیاد است و از محدودیت‌های مستند شده در زیر فراتر می‌رود، ممکن است بخواهید مدلی را خارج از Earth Engine آموزش دهید.

صادرات داده ها از Earth Engine برای آموزش

دریافت پیش بینی از یک مدل خارج از موتور زمین

اگر مدلی را خارج از Earth Engine آموزش دهید، چند گزینه برای پیش‌بینی از آن مدل دارید.

  • بسته ee.Model از Earth Engine امکان پیش‌بینی با استفاده از داده‌ها در Earth Engine و یک مدل آموزش‌دیده شده بر روی Vertex AI Google را می‌دهد. می توانید مدل آموزش دیده سفارشی خود را در Vertex AI میزبانی کنید و استنتاج را مستقیماً در Earth Engine با استفاده از ee.Model.fromVertexAi انجام دهید. برای اطلاعات بیشتر به اتصال به مدل های میزبانی شده در Vertex AI مراجعه کنید.
  • روش دیگر، آموزش طبقه‌بندی پوشش زمین نشان می‌دهد که چگونه می‌توانید با استفاده از یک سرویس ابری مانند توابع ابری پیش‌بینی کنید.

دلایل دیگر برای آموزش مدل های خارج از Earth Engine

علاوه بر آشنایی و اولویت، اگر می‌خواهید از معماری‌های مدل (مثلاً شبکه‌های عصبی کانولوشن) استفاده کنید که توسط APIهای یادگیری ماشین Earth Engine پشتیبانی نمی‌شوند، اگر می‌خواهید از ویژگی‌های Vertex AI بیشتری استفاده کنید یا اگر با محدودیت‌های مقیاس‌بندی با APIهای یادگیری ماشین Earth Engine مواجه هستید، ممکن است بخواهید مدلی را خارج از Earth Engine آموزش دهید.

محدودیت های مجموعه آموزشی

آموزش با استفاده از ee.Classifier یا ee.Clusterer عموماً با مجموعه داده تا 100 مگابایت مؤثر است. به عنوان یک دستورالعمل بسیار تقریبی، با فرض دقت 32 بیتی (یعنی شناور)، این می‌تواند مجموعه داده‌های آموزشی را برآورده کند (که در آن n تعداد نمونه‌ها و b تعداد باندها است):

nb ≤ (100 * 2 20 ) / 4

به عنوان یک مثال، اگر با استفاده از 100 باند تمرین می کنید، تعداد نمونه های استفاده شده برای تمرین باید کمتر از 200000 باشد.

محدودیت های استنتاج

از آنجایی که Earth Engine کاشی‌های تصویر 256x256 را پردازش می‌کند، درخواست‌های استنتاج در تصاویر باید کمتر از 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
      })