AlphaEarth Foundations گوگل یک مدل جاسازی مکانی است که بر روی مجموعه دادههای مشاهده زمین (EO) مختلف آموزش داده شده است. این مدل بر روی سریهای زمانی سالانه تصاویر اجرا شده است و جاسازیهای حاصل بهعنوان یک مجموعه داده آماده برای تجزیه و تحلیل در Earth Engine موجود است. این مجموعه داده کاربران را قادر می سازد تا هر تعداد برنامه تنظیم دقیق یا وظایف دیگر را بدون اجرای مدل های یادگیری عمیق محاسباتی گران قیمت بسازند. نتیجه یک مجموعه داده همه منظوره است که می تواند برای تعدادی از وظایف مختلف پایین دستی مانند
- طبقه بندی
- رگرسیون
- تشخیص تغییر
- جستجوی شباهت
در این آموزش نحوه کار embedding ها را می آموزیم و نحوه دسترسی و تجسم به مجموعه داده Satellite Embedding را می آموزیم.
درک تعبیه ها
تعبیهها راهی برای فشردهسازی مقادیر زیادی از اطلاعات در مجموعهای کوچکتر از ویژگیها هستند که معانی معنادار را نشان میدهند. مدل AlphaEarth Foundations سریهای زمانی تصاویر را از حسگرهایی از جمله Sentinel-2، Sentinel-1 و Landsat میگیرد و یاد میگیرد که چگونه اطلاعات متقابل بین منابع و اهداف را تنها با 64 عدد به طور منحصربهفرد نشان دهد (در مقاله بیشتر بیاموزید). جریان داده ورودی شامل هزاران باند تصویر از چندین حسگر است و مدل این ورودی با ابعاد بالا را گرفته و آن را به نمایشی با ابعاد پایینتر تبدیل میکند.
یک مدل ذهنی خوب برای درک نحوه عملکرد پایه های AlphaEarth، تکنیکی به نام تجزیه و تحلیل اجزای اصلی (PCA) است. PCA همچنین به کاهش ابعاد داده برای برنامه های کاربردی یادگیری ماشین کمک می کند. در حالی که PCA یک تکنیک آماری است و میتواند دهها باند ورودی را به تعداد انگشت شماری از مؤلفههای اصلی فشرده کند، AlphaEarth Foundations یک مدل یادگیری عمیق است که میتواند هزاران بعد ورودی مجموعهدادههای سری زمانی چند حسگر را بگیرد و یاد میگیرد که یک نمایش ۶۴ باندی ایجاد کند که به طور منحصربهفردی تنوع مکانی و زمانی پیکسلی را به تصویر میکشد.
فیلد تعبیه آرایه پیوسته یا "فیلد" جاسازی های آموخته شده است. تصاویر در مجموعههای فیلدهای جاسازی، مسیرهای فضا-زمانی را نشان میدهند که یک سال کامل را پوشش میدهند و دارای 64 باند (یک باند برای هر بعد جاسازی) هستند.
شکل: بردار جاسازی n بعدی که از یک میدان جاسازی نمونه برداری شده است
به مجموعه داده های Satellite Embedding دسترسی داشته باشید
مجموعه داده Satellite Embedding یک مجموعه تصویری است که شامل تصاویر سالانه از سال 2017 به بعد است (به عنوان مثال، 2017، 2018، 2019 ...). هر تصویر دارای 64 باند است که در آن هر پیکسل بردار تعبیه شده ای است که مجموعه زمانی چند حسگر را برای سال معین نشان می دهد.
var embeddings = ee.ImageCollection('GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL');
یک منطقه را انتخاب کنید
بیایید با تعریف منطقه مورد علاقه شروع کنیم. برای این آموزش، منطقه ای را در اطراف مخزن کریشنا راجا ساگارا (KRS) در هند انتخاب می کنیم و چند ضلعی را به عنوان متغیر هندسه تعریف می کنیم. همچنین، میتوانید از ابزار طراحی در ویرایشگر کد برای ترسیم چند ضلعی در اطراف ناحیه مورد نظر استفاده کنید که به عنوان متغیر geometry
در Imports ذخیره میشود.
// 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));
تصاویر جاسازی ماهوارهای در کاشیهایی با ابعاد حداکثر 163840 متر در هر کدام 163840 متر شبکهبندی میشوند و در طرحبندی برای مناطق UTM برای کاشی ارائه میشوند. در نتیجه، چندین کاشی جاسازی ماهواره ای را دریافت می کنیم که منطقه مورد نظر را پوشش می دهند. میتوانیم از تابع mosaic()
برای ترکیب چند کاشی در یک تصویر استفاده کنیم. بیایید تصویر حاصل را چاپ کنیم تا باندها را ببینیم.
var embeddingsImage = filteredEmbeddings.mosaic();
print('Satellite Embedding Image', embeddingsImage);
خواهید دید که تصویر دارای 64 باند به نام های A00, A01, … , A63 است. هر باند حاوی مقدار بردار تعبیه شده برای سال معین در آن بعد یا محور است. برخلاف باندها یا شاخص های طیفی، باندهای منفرد معنای مستقلی ندارند - بلکه هر باند نشان دهنده یک محور از فضای تعبیه شده است. شما می توانید از تمام 64 باند به عنوان ورودی برای برنامه های پایین دستی خود استفاده کنید.
شکل: 64 باند از تصویر تعبیه شده ماهواره
مجموعه داده های Satellite Embedding را تجسم کنید
همانطور که دیدیم، تصویر ما شامل 64 باند است. هیچ راه آسانی برای تجسم تمام اطلاعات موجود در همه باندها وجود ندارد زیرا ما فقط می توانیم ترکیبی از سه باند را در یک زمان مشاهده کنیم.
ما میتوانیم هر سه باند را برای تجسم سه محور فضای جاسازی به عنوان یک تصویر RGB انتخاب کنیم.
var visParams = {min: -0.3, max: 0.3, bands: ['A01', 'A16', 'A09']};
Map.addLayer(embeddingsImage.clip(geometry), visParams, 'Embeddings Image');
شکل: تجسم RGB از 3 محور فضای تعبیه شده
یک راه جایگزین برای تجسم این اطلاعات استفاده از آن برای گروه بندی پیکسل ها با جاسازی های مشابه و استفاده از این گروه بندی ها برای درک اینکه مدل چگونه تغییرپذیری مکانی و زمانی یک منظره را یاد گرفته است.
میتوانیم از تکنیکهای خوشهبندی بدون نظارت برای گروهبندی پیکسلها در فضای ۶۴ بعدی به گروهها یا «خوشههایی» با مقادیر مشابه استفاده کنیم. برای این، ابتدا مقداری پیکسل را نمونهبرداری میکنیم و یک 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 برای منطقه ما
بیایید تصاویر جاسازی ماهواره را با تقسیم منظره به 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 فنولوژی محصول را همراه با متغیرهای آب و هوایی ثبت می کند، برای نقشه برداری از نوع محصول بسیار مناسب است. در آموزش بعدی (طبقه بندی بدون نظارت)، خواهیم دید که چگونه می توان یک نقشه از نوع برش با داده های Satellite Embedding با برچسب های سطح میدان کم یا بدون برچسب ایجاد کرد.
اسکریپت کامل این آموزش را در ویرایشگر کد موتور زمین امتحان کنید .