Prediksi Gambar

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:

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

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.