AlphaEarth Foundations من Google هو نموذج تضمين جغرافي مكاني تم تدريبه على مجموعة متنوعة من مجموعات بيانات مراقبة الأرض (EO). تم تشغيل النموذج على سلسلة زمنية سنوية من الصور، وتتوفّر عمليات التضمين الناتجة كمجموعة بيانات جاهزة للتحليل في Earth Engine. تتيح مجموعة البيانات هذه للمستخدمين إنشاء أي عدد من تطبيقات الضبط الدقيق أو المهام الأخرى بدون تشغيل نماذج التعلّم العميق المكلفة حسابيًا. والنتيجة هي مجموعة بيانات عامة الأغراض يمكن استخدامها في عدد من المهام المختلفة، مثل
- التصنيف
- الانحدار
- رصد التغييرات
- البحث عن صور مشابهة
في هذا البرنامج التعليمي، سنتعرّف على طريقة عمل التضمينات وكيفية الوصول إلى مجموعة بيانات "تضمين صور الأقمار الصناعية" وعرضها.
التعرّف على التضمينات
التضمينات هي طريقة لضغط كميات كبيرة من المعلومات في مجموعة أصغر من الميزات التي تمثّل دلالات مفيدة. يستند نموذج AlphaEarth Foundations إلى سلسلة زمنية من الصور من أجهزة الاستشعار، بما في ذلك Sentinel-2 وSentinel-1 وLandsat، ويتعلّم كيفية تمثيل المعلومات المتبادلة بين المصادر والأهداف بشكل فريد باستخدام 64 رقمًا فقط (يمكنك الاطّلاع على مزيد من المعلومات في المستند). يحتوي مصدر بيانات الإدخال على آلاف نطاقات الصور من أجهزة استشعار متعددة، ويأخذ النموذج هذا الإدخال العالي الأبعاد ويحوله إلى تمثيل منخفض الأبعاد.
النموذج العقلي الجيد لفهم طريقة عمل AlphaEarth Foundations هو تقنية تُعرف باسم "تحليل المكونات الأساسية" (PCA). تساعد PCA أيضًا في خفض أبعاد البيانات لتطبيقات تعلُّم الآلة. في حين أنّ تحليل المكوّنات الرئيسية هو أسلوب إحصائي ويمكنه ضغط عشرات النطاقات المدخلة في عدد قليل من المكوّنات الرئيسية، فإنّ AlphaEarth Foundations هو نموذج للتعليم العميق يمكنه استيعاب آلاف الأبعاد المدخلة لمجموعات بيانات السلاسل الزمنية المتعددة المستشعرات ويتعلّم كيفية إنشاء تمثيل من 64 نطاقًا يلتقط بشكل فريد التباين المكاني والزمني لتلك البكسل.
حقل التضمين هو الصفيف المستمر أو "الحقل" الخاص بعمليات التضمين التي تم التعرّف عليها. تمثّل الصور في مجموعات حقول التضمين مسارات مكانية زمنية تغطي عامًا كاملاً، وتتضمّن 64 نطاقًا (واحدًا لكل بُعد من أبعاد التضمين).
الشكل: متّجه تضمين ذو n بُعد مأخوذ من حقل تضمين
الوصول إلى مجموعة بيانات "التضمين باستخدام القمر الصناعي"
مجموعة بيانات "تضمين صور الأقمار الصناعية" هي مجموعة صور تحتوي على صور سنوية من عام 2017 فصاعدًا (مثل (2017 و2018 و2019 وما إلى ذلك). تحتوي كل صورة على 64 نطاقًا، حيث تكون كل وحدة بكسل هي متجه التضمين الذي يمثّل السلسلة الزمنية المتعددة المستشعرات للسنة المحدّدة.
var embeddings = ee.ImageCollection('GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL');
اختيار منطقة
لنبدأ بتحديد منطقة اهتمام. في هذا الدرس التعليمي، سنختار منطقة حول خزان "كريشنا راجا ساغارا" (KRS) في الهند وسنحدّد مضلّعًا كمتغيّر هندسي. بدلاً من ذلك، يمكنك استخدام "أدوات الرسم" في "محرّر التعليمات البرمجية" لرسم مضلّع حول المنطقة التي تهمّك وسيتم حفظها كمتغيّر geometry
في عمليات الاستيراد.
// Use the satellite basemap
Map.setOptions('SATELLITE');
var geometry = ee.Geometry.Polygon([[
[76.3978, 12.5521],
[76.3978, 12.3550],
[76.6519, 12.3550],
[76.6519, 12.5521]
]]);
Map.centerObject(geometry, 12);
الشكل: اختيار المنطقة محط الاهتمام
إعداد مجموعة بيانات Satellite Embedding
يتم تقسيم صور كل عام إلى مربّعات لتسهيل الوصول إليها. نطبّق الفلاتر ونبحث عن الصور الخاصة بالسنة والمنطقة اللتين اخترناهما.
var year = 2024;
var startDate = ee.Date.fromYMD(year, 1, 1);
var endDate = startDate.advance(1, 'year');
var filteredEmbeddings = embeddings
.filter(ee.Filter.date(startDate, endDate))
.filter(ee.Filter.bounds(geometry));
يتم تقسيم صور "التضمين من القمر الصناعي" إلى مربّعات يصل حجم كل منها إلى 163,840 مترًا × 163,840 مترًا، ويتم عرضها في الإسقاط الخاص بمناطق نظام الإحداثيات العالمي (UTM) للمربّع. ونتيجةً لذلك، نحصل على مربّعات متعددة من "تضمين صور الأقمار الصناعية" تغطي المنطقة التي نريدها. يمكننا استخدام الدالة mosaic()
لدمج مربعات متعددة في صورة واحدة. لنطبع الصورة الناتجة لنرى النطاقات.
var embeddingsImage = filteredEmbeddings.mosaic();
print('Satellite Embedding Image', embeddingsImage);
ستلاحظ أنّ الصورة تحتوي على 64 نطاقًا، تحمل الأسماء A00 وA01 و… وA63. يحتوي كل نطاق على قيمة متجه التضمين للسنة المحدّدة في تلك السمة أو المحور. على عكس النطاقات الطيفية أو المؤشرات، لا تحمل النطاقات الفردية أي معنى مستقل، بل يمثّل كل نطاق أحد محاور مساحة التضمين. يمكنك استخدام جميع النطاقات الـ 64 كمدخلات لتطبيقاتك النهائية.
الشكل: 64 نطاقًا لصورة التضمين من القمر الصناعي
عرض مجموعة بيانات "تضمين القمر الصناعي" بشكل مرئي
كما رأينا للتو، تحتوي صورتنا على 64 نطاقًا. لا تتوفّر طريقة سهلة لتصوّر جميع المعلومات الواردة في جميع النطاقات، إذ يمكننا عرض مجموعة من ثلاثة نطاقات فقط في كل مرة.
يمكننا اختيار أي ثلاث نطاقات لعرض ثلاثة محاور لمساحة التضمين كصورة RGB.
var visParams = {min: -0.3, max: 0.3, bands: ['A01', 'A16', 'A09']};
Map.addLayer(embeddingsImage.clip(geometry), visParams, 'Embeddings Image');
الشكل: تمثيل مرئي لثلاثة محاور في مساحة التضمين باستخدام نموذج أحمر أخضر أزرق
هناك طريقة بديلة لتصوّر هذه المعلومات وهي استخدامها لتجميع وحدات البكسل التي تتضمّن عمليات تضمين متشابهة واستخدام هذه المجموعات لفهم كيفية تعلُّم النموذج للتغيّر المكاني والزمني للمشهد.
يمكننا استخدام تقنيات التجميع غير الخاضعة للإشراف لتجميع وحدات البكسل في مساحة 64 بُعدًا في مجموعات أو "مجموعات" من القيم المتشابهة. لإجراء ذلك، نأخذ أولاً عيّنة من قيم البكسل وندرب ee.Clusterer
.
var nSamples = 1000;
var training = embeddingsImage.sample({
region: geometry,
scale: 10,
numPixels: nSamples,
seed: 100
});
print(training.first());
إذا طبعت قيم العيّنة الأولى، ستلاحظ أنّها تتضمّن 64 قيمة نطاق تحدّد المتّجه المضمّن لوحدة البكسل هذه. تم تصميم متجه التضمين ليكون له طول وحدة واحدة (أي أنّ طول المتجه من نقطة الأصل (0,0,....0) إلى قيم المتجه سيكون 1).
الشكل: متّجه التضمين المستخرَج
يمكننا الآن تدريب نموذج غير مُوجّه لتجميع العيّنات في العدد المطلوب من المجموعات. ستمثّل كل مجموعة عنقودية وحدات بكسل ذات تضمينات متشابهة.
// Function to train a model for desired number of clusters
var getClusters = function(nClusters) {
var clusterer = ee.Clusterer.wekaKMeans({nClusters: nClusters})
.train(training);
// Cluster the image
var clustered = embeddingsImage.cluster(clusterer);
return clustered;
};
يمكننا الآن تجميع صورة التضمين الأكبر حجمًا لمعرفة مجموعات وحدات البكسل التي تتضمّن عمليات تضمين متشابهة. قبل أن نفعل ذلك، من المهم أن نفهم أنّ النموذج قد سجّل المسار الزمني الكامل لكل بكسل على مدار العام، ما يعني أنّه إذا كان لبكسلين قيم طيفية متشابهة في جميع الصور ولكن في أوقات مختلفة، يمكن فصلهما.
في ما يلي تمثيل مرئي لمنطقتنا التي تهمّنا كما تم التقاطها بواسطة صور Sentinel-2 التي تم إخفاء الغيوم فيها لعام 2024. يُرجى العِلم أنّه تم استخدام جميع الصور (بالإضافة إلى الصور من Sentinel-2 وLandsat 8/9 والعديد من أجهزة الاستشعار الأخرى) لإنشاء التضمينات النهائية.
الشكل: سلسلة زمنية سنوية لمنطقتنا من القمر الصناعي Sentinel-2
لنتمكّن من عرض صور Satellite Embedding بشكل مرئي، علينا تقسيم المناظر الطبيعية إلى 3 مجموعات،
var cluster3 = getClusters(3);
Map.addLayer(cluster3.randomVisualizer().clip(geometry), {}, '3 clusters');
الشكل: صورة تضمين القمر الصناعي مع 3 مجموعات
ستلاحظ أنّ المجموعات الناتجة تتضمّن حدودًا واضحة جدًا. ويرجع ذلك إلى أنّ عمليات التضمين تتضمّن بشكل أساسي سياقًا مكانيًا، إذ من المتوقّع أن تتضمّن وحدات البكسل داخل الكائن نفسه متجهات تضمين متشابهة نسبيًا. بالإضافة إلى ذلك، تتضمّن إحدى المجموعات مناطق تحتوي على مياه موسمية حول الخزان الرئيسي. ويرجع ذلك إلى السياق الزمني الذي يتم تسجيله في متجه التضمين والذي يتيح لنا رصد وحدات البكسل هذه التي تتضمّن أنماطًا زمنية متشابهة.
لنرَ ما إذا كان بإمكاننا تحسين المجموعات العنقودية بشكل أكبر من خلال تجميع وحدات البكسل في 5 مجموعات.
var cluster5 = getClusters(5);
Map.addLayer(cluster5.randomVisualizer().clip(geometry), {}, '5 clusters');
الشكل: صورة مضمّنة من القمر الصناعي تضم 5 مجموعات
يمكننا مواصلة ذلك وتحسين الصور إلى مجموعات أكثر تخصصًا من خلال زيادة عدد المجموعات. إليك الشكل الذي تظهر به الصورة مع 10 مجموعات.
var cluster10 = getClusters(10);
Map.addLayer(cluster10.randomVisualizer().clip(geometry), {}, '10 clusters');
الشكل: صورة تضمين القمر الصناعي مع 10 مجموعات
تظهر الكثير من التفاصيل، ويمكننا رؤية أنواع مختلفة من المحاصيل يتم تجميعها في مجموعات مختلفة. بما أنّ عملية تضمين صور الأقمار الصناعية تسجّل علم الظواهر النباتية للمحاصيل إلى جانب المتغيّرات المناخية، فهي مناسبة تمامًا لربط أنواع المحاصيل. في البرنامج التعليمي التالي (التصنيف غير الخاضع للإشراف)، سنتعرّف على كيفية إنشاء خريطة لأنواع المحاصيل باستخدام بيانات Satellite Embedding مع عدد قليل من التصنيفات على مستوى الحقل أو بدونها.
جرِّب النص البرمجي الكامل لهذا الدليل التعليمي في "أداة تعديل الرموز البرمجية" في Earth Engine.