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.