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
روی مجموعهای محاسبه میکنید، باید نوع خروجی «شیب» را
در ورودیهای استنتاج ما به این صورت مشخص کنید:
inputTypeOverride = {
"slope": {
"type": "PixelType",
"precision": "float",
"dimensions": 0,
"min": -100.0,
"max": 100.0
}
}
نکته: اگر با پیام خطای «نمیتوان به تانسور تبدیل کرد» برای باند یا ویژگی مواجه شدید، یک راهحل احتمالی استفاده از لغو نوع برای اجبار ورودی به نوع مشخص است.
inputShapes
inputShapes واژهنامهای از نام باندها و شکل آرایه-پیکسل است. برای ارسال
پیکسلهای با مقدار آرایه با طول بیشتر از ۱ به مدل،
آرگومان inputShapes را تنظیم کنید. تنظیم شود. این آرگومان شبیه به
inputTypeOverride است اما مختص شکلهای باند ورودی برای پیشبینیهای تصویر است. برای مثال، برای کدگذاری سه باند، (۱) «ndvi_series» بهعنوان یک سری زمانی یکبعدی با ۱۲ مقدار، (۲) «temp» بهعنوان یک اسکالر، و (۳) «patch» بهعنوان یک آرایه پیکسل دوبعدی، از موارد زیر استفاده کنید:
inputShapes = {
"ndvi_series": [12], # 12 ndvi samples
"temp": [], # scalar
"patch": [2, 2], # 2px * 2px patch
}
outputBands
outputBands واژهنامهای از نامهای باند خروجی به شیء حاوی
ee.PixelType و ابعاد باند است. در اینجا ابعاد باید با طول آرایه شکل تانسور یکسان باشد. به عبارت دیگر، دادههای اسکالر با
شکل () باید دارای بعد ۰، دادههای یکبعدی با شکل (N) باید دارای بعد
۱، و دادههای دوبعدی با شکل (N, M) باید دارای بعد ۲ باشند. برای مثال،
یک باند خروجی با نام «B1» با پیکسلهای دارای مقدار آرایه با شکل با
موارد زیر مشخص میشود:
outputBands = {
'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}
اندازه کاشی
بااستفاده از پارامترهای زیر میتوانید نحوه کاشیکاری تصویر را کنترل کنید:
inputTileSizeinputOverlapSizeoutputTileSize
اندازه کاشیهای ورودی
برای تنظیم اندازه کاشی ورودی، از inputTileSize و inputOverlapSize استفاده کنید.
این پارامترها را با ارائه یک جفت عرض و ارتفاع کاشی برحسب پیکسل (برای مثال [32, 32]) تنظیم کنید. اندازه کل وصله با جمع کردن ارتفاع و عرض inputTileSize و outputTileSize تعیین میشود.
برای مثال، یک مدل کاملاً پیچشی ممکن است ورودیهایی با شکل (۲۵۶ × ۲۵۶ × کانالها) را انتظار داشته باشد. اگر نگران اثرات لبه بین نتایج استنتاج هستیم، میتوانیم inputOverlapSize[0] پیکسل از چپ و راست و inputOverlapSize[1] پیکسل از بالا و پایین هر نتیجه استنتاج را حذف کنیم. این
کار باعث میشود تماسهای پیشبینی بیشتری برای پوشش کامل منطقه پیشبینی
انجام شود.
برای مثال، اگر مدل ما (۲۵۶ × ۲۵۶ × ۳) را انتظار داشته باشد و بخواهیم ۳۲ پیکسل حاشیه را حذف کنیم، موارد زیر را مشخص میکنیم:
ee.Model({
"endpoint": endpoint,
"inputTileSize": [192, 192],
"inputOverlapSize": [64, 64],
# rest omitted.
}
توجه: inputOverlapSize همپوشانی کامل x و y است. اگر قصد دارید
بافر N پیکسلی در اطراف کل تصویر داشته باشید، همپوشانی [2N, 2N] خواهد بود
اندازه کاشی برونداد
برای تنظیم اندازه کاشی خروجی، آرگومان outputTileSize را تنظیم کنید. اگر
outputTileSize تنظیم نشده باشد، اندازه کاشی پیشفرض با
inputTileSize یکسان است.
برای برخیاز مدلها، اندازه برونداد ممکن است با اندازه ورودی متفاوت باشد. برای مثال، یک مدل طبقهبندی ممکن است ورودیهایی با شکل (256, 256, Channels) را بپذیرد، اما تانسورهایی با شکل (1, 1, 1) را برگرداند. در این مورد،
outputTileSize باید روی [1, 1] تنظیم شود. این امر در مدلهایی که خروجی احتمال (با وضوح کاهشیافته) برخیاز ویژگیهای کاشی را برمیگردانند نسبتاً رایج است.
پیشبینی
تقریباً همه مدلهای پیچشی انتظار ورودی با تصویر ثابت را دارند. دلیلش این است که اکثر مدلهای پیچشی در مقیاس ثابتی آموزش دیدهاند. در این حالت،
پارامتر fixInputProj را در تماس با
ee.Model.fromVertexAi() روی true تنظیم کنید و تصویر دادهها را در پارامتر
proj مشخص کنید.
تصویر ورودی و تصویر ثابت مدل بر مقادیر خروجی تأثیر میگذارند. راهنمای بازطرحریزی EE را ببینید.