پیش بینی تصویر

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

ee.Model.predictImage

از model.predictImage() برای پیش بینی در ee.Image با استفاده از یک مدل میزبان استفاده کنید. ee.Image برای ایجاد کاشی‌ها (وصله تصویری) باندها استفاده می‌شود که سپس به مدل میزبان ارسال می‌شوند. نوع برگشتی predictImage() یک ee.Image است که می تواند به نقشه اضافه شود، صادر شود یا در محاسبات دیگر استفاده شود.

گزینه های ورودی

هنگام انجام استنتاج با استفاده از یک ee.Image تعدادی پارامتر در رابط ee.Model استفاده می شود. این کنترل ها برای باندها و ویژگی های ورودی، کاشی کاری وصله تصویر ورودی، اندازه وصله تصویر خروجی و باندهای تصویر خروجی هستند.

باندها و خواص

برای تعیین باندهای ورودی و خصوصیات از پارامترهای زیر استفاده کنید:

inputProperties

inputProperties لیستی از نام های ویژگی برای ارسال به هر نمونه پیش بینی است. ویژگی های عددی، رشته ای و بولی پشتیبانی می شوند.

inputTypeOverride

inputTypeOverride یک فرهنگ لغت از نام های دارایی و یا باند با اطلاعات نوع و ابعاد خاص ارائه شده است. این ممکن است ضروری باشد زیرا بسیاری از الگوریتم های Earth Engine خروجی هایی با انواع پویا ایجاد می کنند که تا زمان اجرا قابل استنباط نیستند.

به عنوان مثال، اگر شما با نگاشت تابع ee.Terrain.slope روی یک مجموعه، "slope" را محاسبه می کنید، باید نوع خروجی "slope" را در ورودی های استنتاج ما مشخص کنید:

inputTypeOverride = {
  "slope": {
    "type": "PixelType",
    "precision": "float",
    "dimensions": 0,
    "min": -100.0,
    "max": 100.0
  }
}

نکته: اگر با پیغام خطا مواجه شدید که یک باند یا ویژگی «نمی‌تواند به یک تانسور تبدیل شود»، یک راه‌حل ممکن استفاده از جایگزینی نوع برای وادار کردن ورودی به یک نوع مشخص است.

inputShapes

inputShapes یک فرهنگ لغت از نام باندها و شکل آرایه-پیکسل است. برای ارسال پیکسل های با ارزش آرایه مدل خود با طول های بیشتر از 1، آرگومان inputShapes را تنظیم کنید. تنظیم شود. آرگومان مشابه inputTypeOverride است اما مختص اشکال باند ورودی برای پیش بینی تصویر است. به عنوان مثال، برای رمزگذاری سه باند، (1) "ndvi_series" به عنوان یک سری زمانی 1 بعدی با 12 مقدار، (2) "temp" به عنوان یک اسکالر، و (3) "patch" به عنوان یک آرایه پیکسلی 2 بعدی، از موارد زیر استفاده کنید:

inputShapes = {
  "ndvi_series": [12],  # 12 ndvi samples
  "temp": [], # scalar
  "patch": [2, 2], # 2px * 2px patch
}

outputBands

outputBands یک فرهنگ لغت از نام باندهای خروجی برای یک شی است که حاوی ee.PixelType و ابعاد باند است. در اینجا ابعاد باید با طول آرایه شکل تانسور یکسان باشد. به عبارت دیگر، داده های اسکالر با شکل () باید دارای ابعاد 0، داده های 1 بعدی با شکل (N) دارای ابعاد 1، داده های 2 بعدی با شکل (N، M) باید دارای ابعاد 2 باشند. به عنوان مثال، یک باند خروجی به نام "B1" با پیکسل های با ارزش آرایه با شکل با موارد زیر مشخص می شود:

outputBands = {
  'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}

اندازه های کاشی

شما نحوه کاشی کاری تصویر را با استفاده از پارامترهای زیر کنترل می کنید:

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

اندازه‌های کاشی ورودی

برای تنظیم اندازه کاشی ورودی از inputTileSize و inputOverlapSize استفاده کنید. این پارامترها را با ارائه یک جفت عرض و ارتفاع کاشی بر حسب پیکسل تنظیم کنید (به عنوان مثال [32، 32]). اندازه کل پچ با اضافه کردن ارتفاع و عرض inputTileSize و outputTileSize تعیین می شود.

به عنوان مثال، یک مدل کاملاً کانولوشن ممکن است انتظار ورودی هایی با شکل (256 x 256 x کانال) داشته باشد. اگر نگران اثرات لبه‌ها بین نتایج استنتاج هستیم، می‌توانیم پیکسل‌های inputOverlapSize[0] را از چپ و راست، و inputOverlapSize[1] از بالا و پایین هر نتیجه استنتاج حذف کنیم. این منجر به تماس های پیش بینی بیشتر برای پوشش کامل منطقه پیش بینی می شود.

به عنوان مثال اگر مدل ما انتظار دارد (256 x 256 x 3) و بخواهیم 32 پیکسل حاشیه را کنار بگذاریم، موارد زیر را مشخص می کنیم:

ee.Model({
  "endpoint": endpoint,
  "inputTileSize": [192, 192],
  "inputOverlapSize": [64, 64],
  # rest omitted.
}

توجه: inputOverlapSize یک همپوشانی کلی x و y است. اگر قصد دارید یک بافر از N پیکسل در اطراف کل تصویر داشته باشید، همپوشانی آنها [2N, 2N] خواهد بود.

اندازه کاشی خروجی

برای تنظیم اندازه کاشی خروجی، آرگومان outputTileSize را تنظیم کنید. اگر outputTileSize تنظیم نشده باشد، اندازه کاشی پیش‌فرض با inputTileSize یکسان است.

برای برخی از مدل ها، اندازه خروجی ممکن است با اندازه ورودی متفاوت باشد. به عنوان مثال، یک مدل طبقه بندی ممکن است ورودی های شکل (256، 256، کانال) را بپذیرد، اما تانسورها را با شکل (1، 1، 1) برگرداند. در این مورد outputTileSize باید روی [1, 1] تنظیم شود. این نسبتاً در مورد مدل‌هایی که خروجی احتمال (با وضوح کاهش یافته) برخی مشخصه‌های کاشی را برمی‌گردانند، معمول است.

فرافکنی

تقریباً همه مدل‌های کانولوشنال انتظار ورودی یک طرح ثابت را دارند. این به این دلیل است که اکثر مدل‌های کانولوشن در مقیاس ثابتی آموزش داده می‌شوند. در این حالت، پارامتر fixInputProj را در فراخوانی ee.Model.fromVertexAi() روی true قرار دهید و پیش بینی داده ها را در پارامتر proj مشخص کنید.

طرح ریزی تصویر ورودی و طرح ثابت مدل بر مقادیر خروجی تأثیر می گذارد. راهنمای EE Reprojection را ببینید.