Machine Learning APIs
למידת מכונה (ML) היא טכניקה יעילה לניתוח נתונים של תצפיות על כדור הארץ. Earth Engine כולל יכולות מובנות שמאפשרות למשתמשים ליצור מודלים של ML ולהשתמש בהם לתרחישים נפוצים באמצעות ממשקי API קלים לשימוש.
משימה נפוצה של ML היא לסווג את הפיקסלים בתמונות לוויין לשתי קטגוריות או יותר. הגישה הזו שימושית למיפוי של שימוש בקרקע וכיסוי קרקע, וליישומים פופולריים אחרים.
- סיווג מבוקר: אחת הטכניקות של למידת מכונה לסיווג קרקע היא שימוש בדוגמאות של נתוני אמת כדי ללמד מודל להבחין בין סוגים שונים של קרקע. התהליך הזה נתמך על ידי מסווגים מפוקחים מובנים של Earth Engine.
- סיווג לא מפוקח: בסיווג לא מפוקח, לא מסופקות דוגמאות של נתוני אמת לאלגוריתם האימון. במקום זאת, האלגוריתם מחלק את הנתונים הזמינים לקלאסטרים על סמך הבדלים מובנים. מסווגים לא מפוקחים של Earth Engine שימושיים במיוחד כשאין נתוני אמת, כשלא יודעים מה מספר הסיווגים הסופי או כשרוצים לבצע ניסוי מהיר.
- רגרסיה: מודל סיווג מנסה לסווג כל קלט לקטגוריה נפרדת, ומודל רגרסיה מנסה לחזות משתנה רציף לכל קלט. לדוגמה, מודל רגרסיה יכול לחזות את איכות המים, את אחוז הכיסוי של היערות, את אחוז הכיסוי של העננים או את יבול הגידולים. מידע נוסף זמין בקטע Linear Regression of ee.Reducers.
אימון וחיזוי מחוץ ל-Earth Engine
למידה עמוקה ורשתות עצביות הן טכניקות של למידת מכונה שיכולות להתאים לנתונים מורכבים כמו תמונות לוויין. Earth Engine API ללמידת מכונה לא תומך בלמידה עמוקה או ברשתות עצביות. במקום זאת, כדי להשתמש בהם, תצטרכו להשתמש במסגרת כמו TensorFlow או PyTorch ולאמן את המודל מחוץ ל-Earth Engine.
אפשר גם לאמן מחוץ ל-Earth Engine אם אתם כבר מכירים מסגרת כמו scikit-learn ללמידת מכונה קלאסית או XGBoost לעצי החלטה עם שיפור גרדיאנט.
לבסוף, יכול להיות שתרצו לאמן מודל מחוץ ל-Earth Engine אם מערך הנתונים שלכם גדול מאוד וחורג מהמגבלות שמפורטות בהמשך.
ייצוא נתונים מ-Earth Engine לצורך אימון
- פורמט הנתונים TFRecord מותאם לאימון ב-TensorFlow. בדף הדוגמאות ללמידת מכונה יש כמה תהליכי עבודה של TensorFlow שמדגימים איך לאמן מודל באמצעות TFRecords.
- לחלופין, כדי לראות דוגמה להורדת נתונים באמצעות Apache Beam, שמתארחת ב-Google Cloud Dataflow, ולאחר מכן לאימון ב-Vertex AI באמצעות TensorFlow, אפשר לעיין במדריך לסיווג כיסוי הקרקע ולפעול לפי ההוראות ב-notebook של Colab.
קבלת חיזויים ממודל מחוץ ל-Earth Engine
אם מאמנים מודל מחוץ ל-Earth Engine, יש כמה אפשרויות לקבלת תחזיות מהמודל הזה.
-
חבילת
ee.Model
של Earth Engine מאפשרת לבצע תחזיות באמצעות נתונים ב-Earth Engine ומודל מאומן שמתארח ב-Vertex AI של Google. אתם יכולים לארח את המודל שעבר אימון בהתאמה אישית ב-Vertex AI ולבצע הסקה ישירות ב-Earth Engine באמצעותee.Model.fromVertexAi
. מידע נוסף זמין במדריך בנושא חיזוי תמונות או במדריך בנושא חיזוי טבלאות. - לחלופין, במדריך לסיווג כיסוי הקרקע מוסבר איך אפשר לבצע חיזויים באמצעות שירות ענן כמו Cloud Functions.
סיבות נוספות לאימון מודלים מחוץ ל-Earth Engine
בנוסף לשיקולים של נוחות והעדפה, יכול להיות שתרצו לאמן מודל מחוץ ל-Earth Engine אם אתם רוצים להשתמש בארכיטקטורות של מודלים (למשל, רשתות עצביות קונבולוציוניות) שלא נתמכות על ידי ממשקי ה-API של למידת מכונה ב-Earth Engine, אם אתם רוצים להשתמש בתכונות נוספות של Vertex AI או אם אתם נתקלים במגבלות של שינוי קנה מידה עם ממשקי ה-API של למידת מכונה ב-Earth Engine.
הגבלות על קבוצת נתונים לאימון
בדרך כלל, אימון באמצעות ee.Classifier
או ee.Clusterer
יעיל עם מערכי נתונים של עד 100MB. ככלל, בהנחה של דיוק של 32 ביט (כלומר, float),
אפשר להשתמש בנתונים האלה לאימון מערכי נתונים שעומדים בתנאי הבא (כאשר n הוא מספר הדוגמאות
ו-b הוא מספר הפסים):
nb ≤ (100 * 2 20) / 4
לדוגמה, אם אתם מאמנים את המודל באמצעות 100 רצועות, מספר הדוגמאות שמשמשות לאימון צריך להיות קטן מ-200,000.
מגבלות על הסקת מסקנות
מערכת 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")
מגבלות על גודל המודל
בנוסף, גודל המודל עצמו צריך להיות פחות מ-100MB. אפשר להגדיר הרבה מהמסווגים שלנו כך שהמורכבות שלהם תהיה מוגבלת, וכך גם הגודל שלהם. לדוגמה:
var classifier = ee.Classifier.smileRandomForest({ numberOfTrees: 10, minLeafPopulation: 10, maxNodes: 10000 })