Prediksi Gambar

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.