Earth Engine menyediakan ee.Model
sebagai konektor ke model yang dihosting di Vertex AI.
Konektor ini mengirim 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 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 di 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
di atas koleksi, Anda harus menentukan jenis output "kemiringan"
di input inferensi seperti ini:
inputTypeOverride = {
"slope": {
"type": "PixelType",
"precision": "float",
"dimensions": 0,
"min": -100.0,
"max": 100.0
}
}
TIP: 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 model dengan panjang lebih dari 1, tetapkan
argumen inputShapes
. untuk ditetapkan. Argumen ini mirip dengan
inputTypeOverride
, tetapi khusus untuk memasukkan bentuk band 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 mengontrol cara gambar disusun ubin menggunakan parameter berikut:
inputTileSize
inputOverlapSize
outputTileSize
Ukuran Kartu Input
Untuk menetapkan ukuran kartu input, gunakan inputTileSize
dan inputOverlapSize
.
Tetapkan parameter ini dengan memberikan sepasang lebar dan tinggi kartu dalam
piksel (misalnya [32, 32]). Total ukuran patch ditentukan dengan
menambahkan tinggi dan lebar inputTileSize
dan outputTileSize
.
Misalnya, model sepenuhnya convolutional mungkin mengharapkan input dengan bentuk (256 x 256
x Saluran). Jika khawatir dengan 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 sepenuhnya mencakup area
prediksi.
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 sebesar N piksel di sekitar seluruh gambar, tumpang-tindih akan menjadi [2N, 2N]
Ukuran Kartu Output
Untuk menetapkan ukuran kartu output, tetapkan argumen outputTileSize
. Jika
outputTileSize
tidak ditetapkan, ukuran kartu default akan identik dengan
inputTileSize
.
Untuk beberapa model, ukuran output mungkin berbeda dengan ukuran
input. Misalnya, model klasifikasi dapat menerima input berbentuk (256, 256, Saluran), tetapi menampilkan tensor dengan bentuk (1, 1, 1). Dalam hal ini,
outputTileSize
harus ditetapkan ke [1, 1]
. Hal ini cukup umum dengan model
yang menampilkan output probabilitas (pada resolusi yang dikurangi) dari beberapa karakteristik
kartu.
Proyeksi
Hampir semua model convolutional akan mengharapkan input proyeksi tetap. Hal ini
karena sebagian besar model convolutional 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 Reproject EE.