Resim Tahminleri

Earth Engine, Vertex AI'da barındırılan modellere bağlantı sağlayan ee.Model'i sunar. Bu bağlayıcı, görüntü veya tablo verilerini online tahmin istekleri olarak Vertex AI uç noktasında dağıtılan eğitilmiş bir modele gönderir. Model çıkışları daha sonra Earth Engine resimleri veya tabloları olarak döndürülür.

ee.Model.predictImage

Barındırılan bir modeli kullanarak ee.Image hakkında tahminde bulunmak için model.predictImage()'ü kullanın. ee.Image, bantların ardışık görüntülerini (resim yaması) oluşturmak için kullanılır. Bu görüntüler daha sonra barındırılan modele gönderilir. predictImage() işlevinin döndürdüğü tür, haritaya eklenebilen, dışa aktarılabilen veya başka hesaplamalarda kullanılabilen bir ee.Image öğesidir.

Giriş Seçenekleri

ee.Image üzerinde çıkarım yaparken ee.Model bağlayıcısında kullanılan çeşitli parametreler vardır. Bu kontroller, giriş bantları ve özellikleri, giriş görüntü yaması döşeme, çıkış görüntü yaması boyutu ve çıkış görüntü bantları içindir.

Bantlar ve Özellikler

Giriş bantlarını ve özelliklerini belirtmek için aşağıdaki parametreleri kullanın:

inputProperties

inputProperties, her tahmin örneğine yönlendirilecek mülk adlarının listesidir. Sayı, dize ve boole özellikleri desteklenir.

inputTypeOverride

inputTypeOverride, belirli tür ve boyut bilgilerinin sağlandığı mülk ve/veya bant adlarının sözlüğüdür. Birçok Earth Engine algoritması, çalışma zamanından önce tahmin edilemeyecek dinamik türlerde çıkışlar oluşturduğundan bu gerekli olabilir.

Örneğin, ee.Terrain.slope işlevini bir koleksiyonla eşleyerek "eğim"i hesaplıyorsanız çıkarım girişlerimizde "eğim"in çıkış türünü şu şekilde belirtmeniz gerekir:

inputTypeOverride = {
  "slope": {
    "type": "PixelType",
    "precision": "float",
    "dimensions": 0,
    "min": -100.0,
    "max": 100.0
  }
}

İPUCU: Bir bandın veya mülkün "tensöre dönüştürülemediği" hata mesajıyla karşılaşırsanız girişi belirli bir türe zorlamak için tür geçersiz kılma seçeneğini kullanabilirsiniz.

inputShapes

inputShapes, bant adları ve dizi piksel şeklinin yer aldığı bir sözlüktür. Modelinize 1'den uzun dizi değerli pikseller göndermek için inputShapes bağımsız değişkenini ayarlayın. Bu bağımsız değişken, inputTypeOverride ile benzer ancak resim tahminleri için giriş bant şekillerine özeldir. Örneğin, üç bandı kodlamak için (1) 12 değere sahip 1 boyutlu zaman serisi olarak "ndvi_series", skaler olarak "temp" ve 2 boyutlu piksel dizisi olarak "patch" değerlerini şu şekilde kullanın:

inputShapes = {
  "ndvi_series": [12],  # 12 ndvi samples
  "temp": [], # scalar
  "patch": [2, 2], # 2px * 2px patch
}

outputBands

outputBands, ee.PixelType ve bandın boyutlarını içeren bir nesnenin çıkış bant adlarının sözlüğüdür. Burada boyutlar, tensör şekli dizisinin uzunluğuyla aynı olmalıdır. Diğer bir deyişle, () şeklindeki skaler verilerin boyutu 0, (N) şeklindeki 1 boyutlu verilerin boyutu 1, (N, M) şeklindeki 2 boyutlu verilerin boyutu 2 olmalıdır. Örneğin, şekil içeren dizi değerli piksellere sahip "B1" adlı bir çıkış bandı aşağıdaki şekilde belirtilir:

outputBands = {
  'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}

Karo Boyutları

Aşağıdaki parametreleri kullanarak resmin nasıl döşeneceğini kontrol edersiniz:

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

Karo boyutlarını girme

Giriş karo boyutlarını ayarlamak için inputTileSize ve inputOverlapSize tuşlarını kullanın. Bu parametreleri, piksel cinsinden bir çift karo genişliği ve yüksekliği sağlayarak ayarlayın (örneğin [32, 32]). Toplam yamanın boyutu, inputTileSize ve outputTileSize yüksekliklerinin ve genişliklerinin eklenmesi ile belirlenir.

Örneğin, tam bağlantılı bir model (256 x 256 x Kanallar) biçiminde girişler bekleyebilir. Tahmin sonuçları arasındaki kenar efektlerinden endişeleniyorsanız her tahmin sonucunun sol ve sağ tarafından inputOverlapSize[0], üst ve alt tarafından ise inputOverlapSize[1] pikseli atlayabiliriz. Bu, tahmin alanını tamamen kapsayacak şekilde daha fazla tahmin çağrısı yapılmasına neden olur.

Örneğin, modelimiz (256 x 256 x 3) boyutunda bir giriş bekliyorsa ve 32 kenar pikseli atlamak istiyorsak aşağıdakileri belirtiriz:

ee.Model({
  "endpoint": endpoint,
  "inputTileSize": [192, 192],
  "inputOverlapSize": [64, 64],
  # rest omitted.
}

NOT: inputOverlapSize, toplam x ve y çakışmasıdır. Görüntünün tamamının etrafında N piksellik bir tampon oluşturmak istiyorsanız örtüşme [2N, 2N] olur.

Çıkış Karosu Boyutu

Çıkış karo boyutunu ayarlamak için outputTileSize bağımsız değişkenini ayarlayın. outputTileSize ayarlanmazsa varsayılan karo boyutu inputTileSize ile aynıdır.

Bazı modellerde çıkış boyutu, giriş boyutundan farklı olabilir. Örneğin, bir sınıflandırma modeli (256, 256, Kanallar) şeklinde girişleri kabul edebilir ancak (1, 1, 1) şeklinde tenzorlar döndürebilir. Bu durumda outputTileSize değerinin [1, 1] olarak ayarlanması gerekir. Bu durum, bazı karo özelliklerinin olasılık çıktısını (düşük çözünürlükte) döndüren modellerde oldukça yaygındır.

Projeksiyon

Neredeyse tüm konvolüsyon modelleri sabit bir projeksiyon girişi bekler. Bunun nedeni, çoğu konvolüsyon modelinin sabit bir ölçekte eğitilmesidir. Bu durumda, ee.Model.fromVertexAi() çağrınızda fixInputProj parametresini true olarak ayarlayın ve verilerin projeksiyonunu proj parametresinde belirtin.

Giriş görüntüsünün projeksiyonu ve modelin sabit projeksiyonu, çıkış değerlerini etkiler. EE yeniden projelendirme kılavuzunu inceleyin.