Earth Engine menyediakan ee.Model sebagai konektor ke model yang dihosting di
Vertex AI.
Konektor ini mengirimkan data gambar atau tabel sebagai permintaan prediksi online ke
model terlatih yang di-deploy di endpoint Vertex AI. Output model kemudian ditampilkan sebagai gambar atau tabel Earth Engine.
ee.Model.predictImage
Gunakan model.predictImage() untuk membuat prediksi pada ee.Image menggunakan model yang dihosting. ee.Image digunakan untuk membuat ubin (patch gambar) band yang kemudian dikirim ke model yang dihosting. Jenis nilai yang ditampilkan dari predictImage() adalah
ee.Image yang dapat ditambahkan ke peta, diekspor, atau digunakan dalam komputasi
lain.
Opsi Input
Saat melakukan inferensi menggunakan ee.Image, ada sejumlah parameter yang digunakan dalam konektor ee.Model. Kontrol ini ditujukan untuk band dan properti input, tiling patch gambar input, ukuran patch gambar output, dan band gambar output.
Band dan Properti
Untuk menentukan band dan properti input, gunakan parameter berikut:
inputProperties
inputProperties adalah daftar nama properti yang akan diteruskan ke setiap instance prediksi. Properti numerik, string, dan boolean didukung.
inputTypeOverride
inputTypeOverride adalah kamus nama properti dan atau band dengan informasi jenis dan dimensi tertentu yang diberikan. Hal ini mungkin diperlukan karena banyak algoritma Earth Engine membuat output dengan jenis dinamis yang tidak dapat disimpulkan hingga runtime.
Misalnya, jika Anda menghitung "kemiringan" dengan memetakan fungsi ee.Terrain.slope
pada koleksi, Anda harus menentukan jenis output "kemiringan"
dalam input inferensi kami seperti ini:
inputTypeOverride = {
"slope": {
"type": "PixelType",
"precision": "float",
"dimensions": 0,
"min": -100.0,
"max": 100.0
}
}
TIPS: Jika Anda menemukan pesan error bahwa band atau properti "tidak dapat dikonversi menjadi tensor", solusi yang mungkin adalah menggunakan penggantian jenis untuk memaksa input ke jenis tertentu.
inputShapes
inputShapes adalah kamus nama band dan bentuk piksel array. Untuk mengirim piksel bernilai array dengan panjang lebih dari 1 ke model, tetapkan argumen inputShapes. Argumen ini mirip dengan
inputTypeOverride, tetapi khusus untuk bentuk band input untuk prediksi
gambar. Misalnya, untuk mengenkode tiga band, (1) "ndvi_series" sebagai
deret waktu 1D dengan 12 nilai, (2) "temp" sebagai skalar,
dan (3) "patch" sebagai array piksel 2D, gunakan kode berikut:
inputShapes = {
"ndvi_series": [12], # 12 ndvi samples
"temp": [], # scalar
"patch": [2, 2], # 2px * 2px patch
}
outputBands
outputBands adalah kamus nama band output ke objek yang berisi
ee.PixelType dan dimensi band. Di sini, dimensi harus sama dengan panjang array bentuk tensor. Dengan kata lain, data skalar dengan
bentuk () harus memiliki dimensi 0, data 1D dengan bentuk (N) harus memiliki dimensi
1, data 2D dengan bentuk (N, M) harus memiliki dimensi 2. Misalnya,
band output bernama "B1" dengan piksel bernilai array dengan bentuk ditentukan dengan
hal berikut:
outputBands = {
'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}
Ukuran Kartu
Anda dapat mengontrol cara gambar disusun menjadi ubin menggunakan parameter berikut:
inputTileSizeinputOverlapSizeoutputTileSize
Ukuran Ubin Input
Untuk menetapkan ukuran ubin input, gunakan inputTileSize dan inputOverlapSize.
Tetapkan parameter ini dengan memberikan sepasang lebar dan tinggi ubin dalam piksel (misalnya [32, 32]). Ukuran total patch ditentukan dengan
menambahkan tinggi dan lebar inputTileSize dan outputTileSize.
Misalnya, model konvolusional penuh mungkin mengharapkan input dengan bentuk (256 x 256 x Saluran). Jika kita khawatir tentang efek tepi antara hasil inferensi, kita dapat menghapus inputOverlapSize[0] piksel dari kiri dan kanan, serta inputOverlapSize[1] dari atas dan bawah setiap hasil inferensi. Hal ini akan menghasilkan lebih banyak panggilan prediksi untuk mencakup area prediksi sepenuhnya.
Misalnya, jika model kita mengharapkan (256 x 256 x 3) dan kita ingin menghapus 32 piksel batas, kita akan menentukan hal berikut:
ee.Model({
"endpoint": endpoint,
"inputTileSize": [192, 192],
"inputOverlapSize": [64, 64],
# rest omitted.
}
CATATAN: inputOverlapSize adalah total tumpang-tindih x dan y. Jika Anda ingin memiliki
buffer N piksel di seluruh gambar, tumpang tindihnya akan menjadi [2N, 2N]
Ukuran Ubin Output
Untuk menetapkan ukuran ubin output, tetapkan argumen outputTileSize. Jika
outputTileSize tidak ditetapkan, ukuran ubin default akan sama dengan
inputTileSize.
Untuk beberapa model, ukuran output mungkin berbeda dengan ukuran input. Misalnya, model klasifikasi dapat menerima input berbentuk (256, 256, Channels), tetapi menampilkan tensor dengan bentuk (1, 1, 1). Dalam hal ini,
outputTileSize harus ditetapkan ke [1, 1]. Hal ini cukup umum terjadi pada model yang menampilkan output probabilitas (pada resolusi yang dikurangi) dari beberapa karakteristik ubin.
Proyeksi
Hampir semua model konvolusional akan mengharapkan input proyeksi tetap. Hal ini karena sebagian besar model konvolusional dilatih pada skala tetap. Dalam hal ini,
tetapkan parameter fixInputProj ke true dalam panggilan Anda ke
ee.Model.fromVertexAi() dan tentukan proyeksi data dalam parameter
proj.
Proyeksi Gambar input dan proyeksi tetap model akan memengaruhi nilai output. Lihat panduan Proyeksi Ulang EE.