Google'ın AlphaEarth Foundations'ı, çeşitli Dünya gözlemi (EO) veri kümeleri üzerinde eğitilmiş bir coğrafi yerleştirme modelidir. Model, yıllık zaman serisi görüntüler üzerinde çalıştırılmıştır ve sonuçta elde edilen yerleştirmeler, Earth Engine'de analize hazır bir veri kümesi olarak kullanılabilir. Bu veri kümesi, kullanıcıların hesaplama açısından maliyetli derin öğrenme modellerini çalıştırmadan herhangi bir sayıda ince ayar uygulaması veya başka görev oluşturmasına olanak tanır. Sonuç olarak, aşağıdakiler gibi çeşitli farklı sonraki görevler için kullanılabilecek genel amaçlı bir veri kümesi elde edilir:
- Sınıflandırma
- Regresyon
- Değişiklik algılama
- Benzerlik araması
Bu eğitimde, yerleştirmelerin nasıl çalıştığını anlayacak ve Satellite Embedding veri kümesine nasıl erişip bu veri kümesini nasıl görselleştireceğimizi öğreneceğiz.
Yerleştirmeleri anlama
Yerleştirmeler, büyük miktarda bilgiyi anlamlı semantiği temsil eden daha küçük bir özellik kümesine sıkıştırmanın bir yoludur. AlphaEarth Foundations modeli, Sentinel-2, Sentinel-1 ve Landsat gibi sensörlerden alınan görüntülerin zaman serilerini kullanır ve kaynaklar ile hedefler arasındaki karşılıklı bilgileri yalnızca 64 sayıyla benzersiz şekilde nasıl temsil edeceğini öğrenir (daha fazla bilgiyi makalede bulabilirsiniz). Giriş veri akışı, birden fazla sensörden gelen binlerce görüntü bandı içerir. Model, bu yüksek boyutlu girişi alıp daha düşük boyutlu bir temsile dönüştürür.
AlphaEarth Foundations'ın işleyiş şeklini anlamak için iyi bir zihinsel model, Temel Bileşenler Analizi (TBA) adı verilen bir tekniktir. PCA, makine öğrenimi uygulamaları için verilerin boyutunu azaltmaya da yardımcı olur. PCA istatistiksel bir teknik olup onlarca giriş bandını birkaç temel bileşene sıkıştırabilir. AlphaEarth Foundations ise çok sensörlü zaman serisi veri kümelerinin binlerce giriş boyutunu alabilen ve bu pikselin uzamsal ve zamansal değişkenliğini benzersiz bir şekilde yakalayan 64 bantlı bir gösterim oluşturmayı öğrenen bir derin öğrenme modelidir.
Yerleştirme alanı, öğrenilmiş yerleştirmelerin sürekli dizisidir veya "alanıdır". Yerleştirme alanlarındaki koleksiyonlarda bulunan resimler, bir yılı kapsayan uzay-zaman yörüngelerini temsil eder ve 64 bant içerir (her yerleştirme boyutu için bir bant).
Şekil: Yerleştirme alanından örneklenen n boyutlu yerleştirme vektörü
Uydu yerleştirme veri kümesine erişme
Uydu Yerleştirme veri kümesi, 2017'den itibaren yıllık görüntüler içeren bir görüntü koleksiyonudur (ör. 2017, 2018, 2019…). Her görüntüde 64 bant bulunur. Her piksel, belirli yıla ait çok sensörlü zaman serisini temsil eden yerleştirme vektörüdür.
var embeddings = ee.ImageCollection('GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL');
Bölge seçin
İşe ilgi alanını tanımlayarak başlayalım. Bu eğitimde, Hindistan'daki Krishna Raja Sagara (KRS) Rezervuarı çevresinde bir bölge seçecek ve geometri değişkeni olarak bir poligon tanımlayacağız. Alternatif olarak, ilgi alanının etrafına bir çokgen çizmek için Kod Düzenleyici'deki Çizim Araçları'nı kullanabilirsiniz. Bu çokgen, İçe Aktarmalar'da geometry
değişkeni olarak kaydedilir.
// 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);
Şekil: İlgilenilen bölgeyi seçme
Uydu yerleştirme veri kümesini hazırlama
Her yıla ait resimler, kolay erişim için kutucuklara bölünür. Filtreler uygulayıp seçtiğimiz yıl ve bölgeye ait görüntüleri buluruz.
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));
Uydu yerleştirme resimleri, her biri en fazla 163.840 m x 163.840 m boyutunda olan karolar halinde ızgaralara bölünür ve karo için UTM bölgelerinin projeksiyonunda sunulur. Bu nedenle, ilgilenilen bölgeyi kapsayan birden fazla uydu yerleştirme kutucuğu elde ederiz. Birden fazla döşemeyi tek bir resimde birleştirmek için mosaic()
işlevini kullanabiliriz. Bantları görmek için ortaya çıkan görüntüyü yazdıralım.
var embeddingsImage = filteredEmbeddings.mosaic();
print('Satellite Embedding Image', embeddingsImage);
Resmin A00, A01, … , A63 olarak adlandırılmış 64 banttan oluştuğunu görürsünüz. Her bant, söz konusu boyutta veya eksende verilen yıl için yerleştirme vektörünün değerini içerir. Spektral bantların veya indekslerin aksine, tek tek bantların bağımsız bir anlamı yoktur. Her bant, yerleştirme alanının bir eksenini temsil eder. 64 bandın tamamını, aşağı akış uygulamalarınız için giriş olarak kullanırsınız.
Şekil: Uydu yerleştirme görüntüsünün 64 bandı
Uydu yerleştirme veri kümesini görselleştirme
Gördüğümüz gibi, resmimizde 64 bant var. Tek seferde yalnızca üç bant kombinasyonu görüntüleyebildiğimiz için tüm bantlarda yer alan bilgilerin tamamını görselleştirmek kolay değildir.
Yerleştirme alanının üç eksenini RGB görüntüsü olarak görselleştirmek için herhangi üç bant seçebiliriz.
var visParams = {min: -0.3, max: 0.3, bands: ['A01', 'A16', 'A09']};
Map.addLayer(embeddingsImage.clip(geometry), visParams, 'Embeddings Image');
Şekil: Yerleştirme alanının 3 ekseninin RGB görselleştirmesi
Bu bilgileri görselleştirmenin alternatif bir yolu, benzer yerleştirmelere sahip pikselleri gruplandırmak için kullanmak ve bu gruplandırmaları kullanarak modelin bir manzaranın mekansal ve zamansal değişkenliğini nasıl öğrendiğini anlamaktır.
64 boyutlu uzaydaki pikselleri benzer değerlerin grupları veya "kümeleri" halinde gruplandırmak için gözetimsiz kümeleme tekniklerini kullanabiliriz. Bunun için önce bazı piksel değerlerini örnekliyor ve bir ee.Clusterer
eğitiyoruz.
var nSamples = 1000;
var training = embeddingsImage.sample({
region: geometry,
scale: 10,
numPixels: nSamples,
seed: 100
});
print(training.first());
İlk örneğin değerlerini yazdırırsanız bu pikselin yerleştirme vektörünü tanımlayan 64 bant değeri olduğunu görürsünüz. Yerleştirme vektörü, birim uzunluğuna sahip olacak şekilde tasarlanmıştır (yani vektörün başlangıç noktasından (0,0,....0) vektör değerlerine kadar olan uzunluğu 1 olur).
Şekil: Çıkarılan yerleştirme vektörü
Artık örnekleri istenen sayıda küme halinde gruplandırmak için gözetimsiz bir model eğitebiliriz. Her küme, benzer yerleştirmelere sahip pikselleri temsil eder.
// 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;
};
Artık benzer gömmelere sahip piksel gruplarını görmek için daha büyük gömme resmini kümeleyebiliriz. Bunu yapmadan önce, modelin yıl boyunca her pikselin tam zamansal yörüngesini yakaladığını anlamak önemlidir. Bu, iki pikselin tüm görüntülerde benzer spektral değerlere sahip olması ancak farklı zamanlarda olması durumunda ayrılabileceği anlamına gelir.
Aşağıda, 2024 yılı için bulut maskeli Sentinel-2 görüntüleriyle yakalanan ilgi alanımızın görselleştirilmiş hali yer almaktadır. Son yerleştirmeleri öğrenmek için tüm görüntülerin (Sentinel-2, Landsat 8/9 ve daha birçok sensörden alınan görüntülerle birlikte) kullanıldığını unutmayın.
Şekil: Bölgemiz için Sentinel-2 yıllık zaman serisi
Manzarayı 3 kümeye ayırarak uydu yerleştirme resimlerini görselleştirelim.
var cluster3 = getClusters(3);
Map.addLayer(cluster3.randomVisualizer().clip(geometry), {}, '3 clusters');
Şekil: 3 küme içeren uydu yerleştirme resmi
Elde edilen kümelerin sınırlarının çok net olduğunu göreceksiniz. Bunun nedeni, yerleştirmelerin doğal olarak uzamsal bağlam içermesidir. Aynı nesne içindeki piksellerin nispeten benzer yerleştirme vektörlerine sahip olması beklenir. Ayrıca kümelerden birinde ana rezervuarın etrafında mevsimlik su bulunan alanlar yer alıyor. Bunun nedeni, benzer zamansal kalıplara sahip pikselleri algılamamıza olanak tanıyan yerleştirme vektöründe yakalanan zamansal bağlamdır.
Pikselleri 5 küme halinde gruplandırarak kümeleri daha da hassaslaştırabilir miyiz bakalım.
var cluster5 = getClusters(5);
Map.addLayer(cluster5.randomVisualizer().clip(geometry), {}, '5 clusters');
Şekil: 5 küme içeren uydu yerleştirme resmi
Küme sayısını artırarak devam edebilir ve görselleri daha uzmanlaşmış gruplar hâline getirebiliriz. 10 küme içeren resim aşağıdaki gibi görünür.
var cluster10 = getClusters(10);
Map.addLayer(cluster10.randomVisualizer().clip(geometry), {}, '10 clusters');
Şekil: 10 küme içeren uydu yerleştirme resmi
Birçok ayrıntı ortaya çıkıyor ve farklı türlerdeki ürünlerin farklı kümelerde gruplandığını görüyoruz. Uydu yerleştirme, iklim değişkenleriyle birlikte ürün fenolojisini yakaladığından ürün türü eşleme için uygundur. Bir sonraki eğitimde (Denetimsiz Sınıflandırma), alan düzeyinde etiketlerin olmadığı veya çok az olduğu durumlarda uydu yerleştirme verileriyle nasıl ürün türü haritası oluşturulacağını göreceğiz.
Bu eğitimin tam komut dosyasını Earth Engine Kod Düzenleyici'de deneyin.