ב-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
}
}
טיפ: אם מוצגת הודעת השגיאה "לא ניתן להמיר תדר או מאפיין ל-tensor", פתרון אפשרי הוא להשתמש בשינוי ברירת המחדל של הטיפוס כדי לאלץ את הקלט להיות מסוג נתון.
inputShapes
inputShapes
הוא מילון של שמות להקות וצורה של מערך פיקסלים. כדי לשלוח את הפיקסלים של ערכי מערך המודל באורך של יותר מ-1, צריך להגדיר את הארגומנט inputShapes
. הארגומנט דומה ל-inputTypeOverride
, אבל הוא ספציפי לצורות של פס הקלט לחיזוי תמונות. לדוגמה, כדי לקודד שלוש רצועות, (1) 'ndvi_series' כסדרת זמן חד-ממדית עם 12 ערכים, (2) 'temp' כסקלר ו-(3) 'patch' כמערך פיקסלים דו-ממדי, משתמשים בקוד הבא:
inputShapes = {
"ndvi_series": [12], # 12 ndvi samples
"temp": [], # scalar
"patch": [2, 2], # 2px * 2px patch
}
outputBands
outputBands
הוא מילון של שמות של פסיי פלט לאובייקט שמכיל את ee.PixelType
ואת המאפיינים של הפס. כאן המימדים צריכים להיות זהים לאורך המערך של צורת הטנזור. במילים אחרות, לנתונים סקלריים בפורמט () צריך להיות מאפיין 0, לנתונים חד-ממדיים בפורמט (N) צריכים להיות מאפיינים 1, ולנתונים דו-ממדיים בפורמט (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, Channels), אבל להחזיר טינסורים בפורמט (1, 1, 1). במקרה כזה, צריך להגדיר את outputTileSize
לערך [1, 1]
. המצב הזה נפוץ למדי במודלים שמחזירים את הפלט של ההסתברות (ברזולוציה מופחתת) של מאפיין מסוים של המשבצת.
היטל
כמעט כל המודלים הקוונטיים ידרשו קלט של הקרנה קבועה. הסיבה לכך היא שרוב המודלים הקוונטיים עוברים אימון בקנה מידה קבוע. במקרה כזה, צריך להגדיר את הפרמטר fixInputProj
לערך true בקריאה ל-ee.Model.fromVertexAi()
ולציין את הקרנה של הנתונים בפרמטר proj
.
הקרנה של תמונת הקלט והקרנה קבועה של המודל ישפיעו על ערכי הפלט. עיינו במדריך EE Reprojection.