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 را ببینید.