Pengantar Dataset Sematan Satelit

Edit di GitHub
Laporkan masalah
Histori halaman
Tutorial ini adalah bagian dari serangkaian tutorial tentang set data Sematan Satelit, lihat juga Klasifikasi Tanpa Pengawasan, Klasifikasi dengan Pengawasan, Regresi, dan Penelusuran Kemiripan.

AlphaEarth Foundations Google adalah model sematan geospasial yang dilatih dengan berbagai set data pengamatan Bumi (EO). Model telah dijalankan pada deret waktu gambar tahunan dan embedding yang dihasilkan tersedia sebagai set data yang siap dianalisis di Earth Engine. Set data ini memungkinkan pengguna membuat sejumlah aplikasi penyesuaian atau tugas lainnya tanpa menjalankan model deep learning yang mahal secara komputasi. Hasilnya adalah set data serbaguna yang dapat digunakan untuk sejumlah tugas hilir yang berbeda, seperti

  • Klasifikasi
  • Regresi
  • Deteksi perubahan
  • Penelusuran kemiripan

Dalam tutorial ini, kita akan memahami cara kerja sematan dan mempelajari cara mengakses serta memvisualisasikan set data Sematan Satelit.

Memahami penyematan

Embedding adalah cara untuk memadatkan sejumlah besar informasi menjadi sekumpulan fitur yang lebih kecil yang merepresentasikan semantik yang bermakna. Model AlphaEarth Foundations menggunakan deret waktu gambar dari sensor, termasuk Sentinel-2, Sentinel-1, dan Landsat, serta mempelajari cara merepresentasikan informasi bersama antara sumber dan target secara unik hanya dengan 64 angka (pelajari lebih lanjut dalam makalah). Aliran data input berisi ribuan band gambar dari beberapa sensor dan model mengambil input berdimensi tinggi ini dan mengubahnya menjadi representasi berdimensi lebih rendah.

Model mental yang baik untuk memahami cara kerja AlphaEarth Foundations adalah teknik yang disebut Principal Component Analysis (PCA). PCA juga membantu mengurangi dimensi data untuk aplikasi machine learning. Meskipun PCA adalah teknik statistik dan dapat memadatkan puluhan band input menjadi beberapa komponen utama, AlphaEarth Foundations adalah model deep learning yang dapat mengambil ribuan dimensi input dari set data deret waktu multi-sensor dan belajar membuat representasi 64 band yang secara unik menangkap variabilitas spasial dan temporal piksel tersebut.

Kolom penyematan adalah array atau “kolom” berkelanjutan dari penyematan yang dipelajari. Gambar dalam koleksi kolom penyematan merepresentasikan lintasan ruang-waktu yang mencakup satu tahun penuh dan memiliki 64 band (satu untuk setiap dimensi penyematan).


Gambar: Vektor embedding berdimensi n yang diambil sampelnya dari kolom embedding

Mengakses set data Sematan Satelit

Set data Sematan Satelit adalah kumpulan gambar yang berisi gambar tahunan dari tahun 2017 dan seterusnya (misalnya, 2017, 2018, 2019…). Setiap gambar memiliki 64 band dengan setiap piksel adalah vektor embedding yang merepresentasikan deret waktu multi-sensor untuk tahun tertentu.

var embeddings = ee.ImageCollection('GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL');

Pilih region

Mari kita mulai dengan menentukan region yang diminati. Untuk tutorial ini, kita akan memilih region di sekitar Waduk Krishna Raja Sagara (KRS) di India dan menentukan poligon sebagai variabel geometri. Atau, Anda dapat menggunakan Alat Gambar di Editor Kode untuk menggambar poligon di sekitar area yang diinginkan yang akan disimpan sebagai variabel geometry di Impor.

// 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);


Gambar: Memilih region yang diminati

Menyiapkan set data Embedding Satelit

Gambar setiap tahun dibagi menjadi ubin untuk memudahkan akses. Kita menerapkan filter dan menemukan gambar untuk tahun dan wilayah yang kita pilih.

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));

Gambar Sematan Satelit diatur dalam petak hingga 163.840 m x 163.840 m setiap petaknya dan disajikan dalam proyeksi untuk zona UTM petak. Hasilnya, kita mendapatkan beberapa petak Sematan Satelit yang mencakup wilayah yang diminati. Kita dapat menggunakan fungsi mosaic() untuk menggabungkan beberapa petak menjadi satu gambar. Mari kita cetak gambar yang dihasilkan untuk melihat pita.

var embeddingsImage = filteredEmbeddings.mosaic();
print('Satellite Embedding Image', embeddingsImage);

Anda akan melihat bahwa gambar memiliki 64 band, yang diberi nama A00, A01, … , A63. Setiap rentang berisi nilai vektor sematan untuk tahun tertentu dalam dimensi atau sumbu tersebut. Tidak seperti indeks atau band spektral, setiap band tidak memiliki arti independen – melainkan, setiap band merepresentasikan satu sumbu ruang penyematan. Anda akan menggunakan semua 64 band sebagai input untuk aplikasi downstream.


Gambar: 64 band gambar sematan satelit

Memvisualisasikan set data Sematan Satelit

Seperti yang baru saja kita lihat, gambar kita berisi 64 band. Tidak ada cara mudah untuk memvisualisasikan semua informasi yang terdapat dalam semua band karena kita hanya dapat melihat kombinasi tiga band sekaligus.

Kita dapat memilih tiga band mana pun untuk memvisualisasikan tiga sumbu ruang penyematan sebagai gambar RGB.

var visParams = {min: -0.3, max: 0.3, bands: ['A01', 'A16', 'A09']};
Map.addLayer(embeddingsImage.clip(geometry), visParams, 'Embeddings Image');


Gambar: Visualisasi RGB dari 3 sumbu ruang sematan

Cara alternatif untuk memvisualisasikan informasi ini adalah dengan menggunakannya untuk mengelompokkan piksel dengan embedding serupa dan menggunakan pengelompokan ini untuk memahami cara model mempelajari variabilitas spasial dan temporal lanskap.

Kita dapat menggunakan teknik pengelompokan tanpa pengawasan untuk mengelompokkan piksel dalam ruang 64 dimensi ke dalam grup atau "kelompok" nilai serupa. Untuk melakukannya, kita terlebih dahulu mengambil sampel beberapa nilai piksel dan melatih ee.Clusterer.

var nSamples = 1000;
var training = embeddingsImage.sample({
  region: geometry,
  scale: 10,
  numPixels: nSamples,
  seed: 100
});
print(training.first());

Jika mencetak nilai sampel pertama, Anda akan melihat bahwa sampel tersebut memiliki 64 nilai band yang menentukan vektor penyematan untuk piksel tersebut. Vektor embedding dirancang untuk memiliki panjang unit (yaitu, panjang vektor dari asal (0,0,....0) ke nilai vektor adalah 1).


Gambar: Vektor embedding yang diekstrak

Sekarang kita dapat melatih model tanpa pengawasan untuk mengelompokkan sampel ke dalam jumlah cluster yang diinginkan. Setiap cluster akan merepresentasikan piksel sematan yang serupa.

// 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;
};

Sekarang kita dapat mengelompokkan gambar embedding yang lebih besar untuk melihat kelompok piksel yang memiliki embedding serupa. Sebelum melakukannya, penting untuk memahami bahwa model telah merekam seluruh lintasan temporal setiap piksel selama setahun - artinya, jika dua piksel memiliki nilai spektral yang serupa di semua gambar, tetapi pada waktu yang berbeda - keduanya dapat dipisahkan.

Di bawah ini adalah visualisasi area yang kami minati sebagaimana yang diambil oleh gambar Sentinel-2 yang ditutupi awan untuk tahun 2024. Ingatlah bahwa semua gambar (bersama dengan gambar dari Sentinel-2, Landsat 8/9, dan banyak lagi sensor) telah digunakan untuk mempelajari sematan akhir.


Gambar: Deret waktu tahunan Sentinel-2 untuk wilayah kami

Mari kita visualisasikan gambar Sematan Satelit dengan menyegmentasikan lanskap menjadi 3 cluster,

var cluster3 = getClusters(3);
Map.addLayer(cluster3.randomVisualizer().clip(geometry), {}, '3 clusters');


Gambar: Gambar Sematan Satelit dengan 3 cluster

Anda akan melihat bahwa cluster yang dihasilkan memiliki batas yang sangat jelas. Hal ini karena embedding secara inheren menyertakan konteks spasial - piksel dalam objek yang sama diharapkan memiliki vektor embedding yang relatif serupa. Selain itu, salah satu cluster mencakup area dengan air musiman di sekitar waduk utama. Hal ini disebabkan oleh konteks temporal yang diambil dalam vektor sematan yang memungkinkan kami mendeteksi piksel tersebut dengan pola temporal yang serupa.

Mari kita lihat apakah kita dapat menyempurnakan cluster lebih lanjut dengan mengelompokkan piksel ke dalam 5 cluster.

var cluster5 = getClusters(5);
Map.addLayer(cluster5.randomVisualizer().clip(geometry), {}, '5 clusters');


Gambar: Gambar Sematan Satelit dengan 5 cluster

Kita dapat melanjutkan dan menyempurnakan gambar ke dalam grup yang lebih khusus dengan meningkatkan jumlah cluster. Berikut tampilan gambar dengan 10 cluster.

var cluster10 = getClusters(10);
Map.addLayer(cluster10.randomVisualizer().clip(geometry), {}, '10 clusters');


Gambar: Gambar Sematan Satelit dengan 10 klaster

Ada banyak detail yang muncul dan kita dapat melihat berbagai jenis pangkasan yang dikelompokkan ke dalam berbagai cluster. Karena Sematan Satelit merekam fenologi tanaman bersama dengan variabel iklim, Sematan Satelit sangat cocok untuk pemetaan jenis tanaman. Dalam tutorial berikutnya (Klasifikasi Tanpa Pengawasan), kita akan melihat cara membuat peta jenis tanaman dengan data Sematan Satelit dengan sedikit atau tanpa label tingkat kolom.

Coba skrip lengkap untuk tutorial ini di Editor Kode Earth Engine.