Uydu yerleştirmeleri, standart uzaktan algılama sınıflandırma iş akışları için kullanılabilir. Yerleştirmeler, özellikle az görevli öğrenmede başarılı olacak şekilde tasarlanmıştır. Bu da yüksek kaliteli sınıflandırma sonuçları elde etmek için nispeten az sayıda etiketlenmiş veri (örneğin, 10 ila 100 örnek) gerektiği anlamına gelir. Yerleştirmeler spektral, mekansal ve zamansal bağlam içerdiğinden k-En Yakın Komşular (kNN) veya Rastgele Orman gibi basit sınıflandırıcılar, karmaşık manzaraları hedef sınıflara sınıflandırmak için yerleştirme vektörlerini kullanabilir.
Bu eğitimde, uydu yerleştirme özelliğini kullanarak kNN sınıflandırıcısıyla mangrovları sınıflandırmak için denetimli öğrenme yaklaşımını nasıl kullanacağımızı öğreneceğiz.
Bölge seçin
İşe ilgi alanını tanımlayarak başlayalım. Bu eğitimde, Kenya kıyı şeridi boyunca bir bölge seçip geometri değişkeni olarak bir poligon tanımlayacağız. Alternatif olarak, ilgi alanının etrafına bir poligon çizmek için Kod Düzenleyici'deki Çizim Araçları'nı kullanabilirsiniz. Bu poligon, İçe Aktarmalar'da geometri değişkeni olarak kaydedilir.
var geometry = ee.Geometry.Polygon([[
[39.4926, -4.39833],
[39.4926, -4.47394],
[39.5491, -4.47394],
[39.5491, -4.39833]
]]);

Şekil: Mangrov sınıflandırması için ilgi alanını seçme
Eğitim örnekleri toplama
Uydu yerleştirme ile sınıflandırma iş akışları, nispeten doğru sonuçlar elde etmek için yalnızca birkaç etiketli örnek gerektirir. Arazi örtüsü sınıflandırmamız için eğitim örnekleri oluşturmak üzere noktaları Earth Engine'e bırakıp etiketlemek en kolay yöntemdir. Uydu yerleştirme işleminden elde edilen her pikseli aşağıdaki üç sınıftan birine göre sınıflandıracak 3 sınıflı bir sınıflandırma oluşturacağız:
| Arazi Örtüsü Sınıfı | Açıklama | Sınıf Değeri |
|---|---|---|
| mangrovlar | Tuz toleranslı tüm kıyı bitkisi türleri | 1 |
| su | Tüm yüzey suları (göl, gölet, nehir, okyanus vb.) | 2 |
| diğer | Diğer tüm yüzeyler (binalar, açıkta kalan toprak, kum, ekinler, ağaçlar vb.) | 3 |
Noktaları doğru şekilde etiketleyebilmemiz için önce Sentinel-2 bulutsuz kompozit oluşturup yüklüyoruz. Su, bitki örtüsü ve yapı yüzeyleri arasındaki farkı vurgulayan bir yanlış renk görselleştirme seçiyoruz. Bu sayede uygun örnekleri kolayca seçebiliyoruz.
// Pick a year for classification
var year = 2020;
var startDate = ee.Date.fromYMD(year, 1, 1);
var endDate = startDate.advance(1, 'year');
// Create a Sentinel-2 composite for the selected year
// for selecting training samples
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED');
var filteredS2 = s2
.filter(ee.Filter.date(startDate, endDate))
.filter(ee.Filter.bounds(geometry));
// Use the Cloud Score+ collection for cloud masking
var csPlus = ee.ImageCollection('GOOGLE/CLOUD_SCORE_PLUS/V1/S2_HARMONIZED');
var csPlusBands = csPlus.first().bandNames();
var filteredS2WithCs = filteredS2.linkCollection(csPlus, csPlusBands);
function maskLowQA(image) {
var qaBand = 'cs';
var clearThreshold = 0.6;
var mask = image.select(qaBand).gte(clearThreshold);
return image.updateMask(mask);
}
var filteredS2Masked = filteredS2WithCs
.map(maskLowQA)
.select('B.*');
// Create a median composite of cloud-masked images
var composite = filteredS2Masked.median();
// Display the input composite
var swirVis = {min: 300, max: 4000, bands: ['B11', 'B8', 'B4']};
Map.centerObject(geometry);
Map.addLayer(composite.clip(geometry), swirVis, 'S2 Composite (False Color)');

Şekil: Sentinel-2 yanlış renkli kompozit
Artık hedef yıldan, sınıflandırma için örnekleri etiketlemek üzere kullanılabilecek bir referans resmimiz var. İlk olarak, örnek toplama katmanlarını yapılandıracağız. Geometri İçe Aktarma İşlemleri bölümünü açın ve + yeni katman'ı tıklayın.

Şekil: Yeni katman oluşturma
Yeni katmanın yanındaki Katman Özelliklerini Düzenle'yi (dişli simgesi) tıklayın ve aşağıda gösterildiği gibi yapılandırın. Katman adını mangroves olarak girin ve türü FeatureCollection olarak değiştirin. + Özellik'i tıklayın ve 1 değeriyle yeni bir özellik landcover ekleyin. Rengi yeşilin bir tonu olarak değiştirin ve Tamam'ı tıklayın.

Şekil: Mangrov katmanının katman özelliklerini yapılandırma
Benzer şekilde, diğer sınıflar için 2 yeni katman ekleyin. Su için landcover değerini, diğerleri için 2 değerini kullanın.3

Şekil: (Solda) su ve (sağda) diğer katmanlar için katman özelliklerini yapılandırma
Katmanlar yapılandırıldıktan sonra örnek toplamaya başlayabiliriz. Bir bölgeyi yakınlaştırın ve farklı sınıflardaki pikselleri görsel olarak tanımlayın. mangroves katmanını seçin ve İşaretçi ekle aracını kullanarak, yanlış renkli Sentinel-2 kompozitimizde orta tonlu yeşil olarak görünen (referans için uydu haritası görünümünü de kontrol edebilirsiniz) mangrov ormanlarına ait piksellere nokta bırakın. Uydu yerleştirme veri kümesiyle sınıflandırma yaparken çok fazla noktaya ihtiyacınız yoktur. Bunun yerine, ilgi alanınızdaki değişkenliği temsil eden yüksek kaliteli örnekler seçmeniz daha önemlidir. Bu eğitim için 10 örnek yeterli olacaktır.

Şekil: Mangrov sınıfı için örnek toplama
Ardından water katmanına geçin ve açık su için SWIR bantlarının güçlü emilimi nedeniyle Sentinel-2 kompozitimizde neredeyse siyah görünen yüzey suyu pikselleri için örnekler toplayın. other katmanı için işlemi tekrarlayın. Bu katmanda, açıkça mangrove veya water olmayan örnekler seçin.

Şekil: Su ve diğer sınıflar için örnek toplama
Eğitim örneği toplama işlemi tamamlandı. Üç ayrı FeatureCollection'ı tek bir yer kontrol noktası (YKN) koleksiyonunda birleştirebiliriz.
var gcps = mangroves.merge(water).merge(other);
Sınıflandırıcı eğitme
Artık bir sınıflandırıcıyı eğitmeye hazırız. Uydu yerleştirme veri kümesini yükler, seçtiğimiz yıl ve ilgi alanımızdaki bölgeler için döşemeleri filtreler, mozaik oluşturur ve ardından eğitim veri kümesi oluşturmak için yerleştirme vektörlerini örnekleriz.
var embeddings = ee.ImageCollection('GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL');
var embeddingsFiltered = embeddings
.filter(ee.Filter.date(startDate, endDate))
.filter(ee.Filter.bounds(geometry));
var embeddingsImage = embeddingsFiltered.mosaic();
// Overlay the samples on the image to get training data.
var training = embeddingsImage.sampleRegions({
collection: gcps,
properties: ['landcover'],
scale: 10
});
print('Training Feature', training.first());
Eğitim özelliklerinde giriş özellikleri olarak yerleştirme vektörleri, sınıf özelliği olarak da ilişkili etiket bulunur. Artık bu çıkarılan özelliklerle bir sınıflandırıcı eğitebiliriz. Earth Engine'de bulunan çeşitli sınıflandırıcılar arasından seçim yapabiliriz. Az çekimli sınıflandırma (örneğimizdeki gibi çok az sayıda örnek kullanılarak yapılan sınıflandırma) için iyi bir seçenek, k-En Yakın Komşular (kNN) algoritmasıdır. kNN sınıflandırmasında, etiketli örnekler yerleştirme alanını "bölmek" veya kümelemek için kullanılır. Yerleştirme alanındaki en yakın komşularının etiketlerine göre her piksele bir etiket atanır. Eğitim verilerimizle bir kNN sınıflandırıcı eğitelim.
var classifier = ee.Classifier.smileKNN().train({
features: training,
classProperty: 'landcover',
inputProperties: embeddingsImage.bandNames()
});
Uydu yerleştirme mozaiğini sınıflandırın
Artık eğitilmiş sınıflandırıcıyı kullanarak uydu yerleştirme mozağinin tüm piksellerindeki sınıfı tahmin edebiliriz.
var classified = embeddingsImage.classify(classifier);
Sınıflandırılmış resmi bir öğeye aktarma (isteğe bağlı)
Büyük bir bölgeyi sınıflandırmaya çalışıyorsanız Earth Engine'in, etkileşimli bilgi işlem ortamında izin verilen süreden daha fazla zamana ihtiyacı vardır. Görev yürütme için daha uzun sınırlara ve daha fazla kaynağa sahip olan toplu işlem ortamından yararlanmak üzere ara sonuçları öğe olarak dışa aktarmak iyi bir uygulamadır. Bu, büyük bölgelerle çalışırken işlem zaman aşımına uğradı veya kullanıcı belleği aşıldı hatalarının da üstesinden gelmenize yardımcı olur. Sınıflandırılmış görüntüyü dışa aktaralım.
// Replace this with your asset folder
// The folder must exist before exporting
var exportFolder = 'projects/spatialthoughts/assets/satellite_embedding/';
var classifiedExportImage = 'mangrove_classification';
var classifiedExportImagePath = exportFolder + classifiedExportImage;
Export.image.toAsset({
image: classified.clip(geometry),
description: 'Classified_Image_Export',
assetId: classifiedExportImagePath,
region: geometry,
scale: 10,
maxPixels: 1e10
});
Dışa aktarma görevlerini başlatın ve devam etmeden önce tamamlanmasını bekleyin. Dışa aktarma görevi tamamlandıktan sonra sınıflandırılmış görüntüyü kodumuza tekrar aktarırız.
// Use the exported asset
var classified = ee.Image(classifiedExportImagePath);
Sınıflandırmayı görselleştirme
Sınıflandırmanızı etkileşimli olarak çalıştırdıysanız veya bir öğeye aktardıysanız artık sınıflandırmanızın sonuçlarını içeren sınıflandırılmış bir değişkeniniz olacak.
// Choose a 3-color palette
// Assign a color for each class in the following order
// Mangrove, Water, Other
var palette = ['green', 'blue', 'gray'];
Map.addLayer(
classified.clip(geometry),
{min: 1, max: 3, palette: palette},
'Classified Satellite Embeddings Image');

Şekil: Sınıflandırılmış uydu yerleştirme görüntüsü
Mangrov haritası oluşturma
3 sınıflı bir sınıflandırılmış görüntü oluşturduk. Mangrov haritası oluşturmak için Mangrov (1. sınıf) olarak sınıflandırılan pikselleri ayıklayabiliriz.
// Extract mangroves class
var mangrovesImage = classified.eq(1).selfMask();
var mangroveVis = {min: 0, max: 1, palette: ['green']};
Map.addLayer(mangrovesImage.clip(geometry),
mangroveVis, 'Mangroves Map (Satellite Embedding Classification)');

Şekil: Mangrov haritası
Sonuçları doğrulama
Sonuçlarımızı değerlendirmek için bunları yüksek kaliteli ve hakemli bir veri kümesi olan Global Mangrove Watch ile karşılaştırabiliriz. Bu veri kümesi, JAXA'nın L-bandı sentetik açıklıklı radarından (SAR) elde edilmiş olup 1996-2020 yılları arasındaki yıllık mangrov haritalarını içerir. Bu veri kümesi GEE Community Catalog'da mevcuttur. Bu nedenle, Earth Engine'de kolayca yüklenebilir ve görselleştirilebilir.
var gmw = ee.ImageCollection(
'projects/earthengine-legacy/assets/projects/sat-io/open-datasets/' +
'GMW/extent/GMW_V3');
var gmwFiltered = gmw
.filter(ee.Filter.date(startDate, endDate))
.filter(ee.Filter.bounds(geometry));
var gmwImage = gmwFiltered.first();
Map.addLayer(gmwImage.clip(geometry),
mangroveVis, 'Mangroves (Global Mangrove Watch)');

Şekil: (sol) Uydu yerleştirmelerinden elde edilen mangrov haritası (sağ) GMW'den elde edilen mangrov haritası
Küresel mangrov gözlem sonuçları ile Satellite Embedding veri kümesinin az görüntülü sınıflandırma çıkışı arasında yakın bir eşleşme olduğunu unutmayın. Temel haritayı uydu görünümüne geçirdiğinizde, uydu yerleştirme sınıflandırmasının, küresel mangrov gözlem sınıflandırmasında eksik olan manzaranın daha ayrıntılı kısımlarını da yakaladığını görürsünüz.
Bu eğitimin tam komut dosyasını Earth Engine Kod Düzenleyici'de deneyin.