Earth Engine มี ee.Model
เป็นเครื่องมือเชื่อมต่อกับโมเดลที่โฮสต์ใน Vertex AI
ตัวเชื่อมต่อนี้จะส่งข้อมูลรูปภาพหรือตารางเป็นคําขอการคาดการณ์ออนไลน์ไปยังโมเดลที่ผ่านการฝึกอบรมและติดตั้งใช้งานในปลายทาง Vertex AI จากนั้นระบบจะแสดงผลลัพธ์ของโมเดลเป็นรูปภาพหรือตาราง Earth Engine
ee.Model.predictImage
ใช้ model.predictImage()
เพื่อทำนาย ee.Image
โดยใช้โมเดลที่โฮสต์ ee.Image
ใช้ในการสร้างไทล์ (แพตช์รูปภาพ) ของวงดนตรี ซึ่งจะส่งไปยังโมเดลที่โฮสต์ ประเภทผลลัพธ์ของ predictImage()
คือ
ee.Image
ซึ่งสามารถเพิ่มลงในแผนที่ ส่งออก หรือใช้ในการคำนวณอื่นๆ ได้
ตัวเลือกอินพุต
เมื่อทำการอนุมานโดยใช้ ee.Image
จะมีพารามิเตอร์จำนวนหนึ่งที่ใช้ในคอนเน็กเตอร์ ee.Model
ตัวควบคุมเหล่านี้มีไว้สำหรับย่านและพร็อพเพอร์ตี้อินพุต การแบ่งภาพอินพุตเป็นแพทช์ การแบ่งภาพเอาต์พุตเป็นแพทช์ และย่านภาพเอาต์พุต
ย่านความถี่และพร็อพเพอร์ตี้
หากต้องการระบุย่านและพร็อพเพอร์ตี้อินพุต ให้ใช้พารามิเตอร์ต่อไปนี้
inputProperties
inputProperties
คือรายการชื่อพร็อพเพอร์ตี้ที่จะส่งต่อไปยังอินสแตนซ์การคาดการณ์ทุกรายการ ระบบรองรับพร็อพเพอร์ตี้ตัวเลข สตริง และบูลีน
inputTypeOverride
inputTypeOverride
คือพจนานุกรมของชื่อที่พักและ/หรือชื่อย่านที่มีข้อมูลประเภทและมิติข้อมูลเฉพาะ ซึ่งอาจจำเป็นเนื่องจากอัลกอริทึมของ Earth Engine หลายรายการสร้างเอาต์พุตที่มีประเภทแบบไดนามิกซึ่งไม่สามารถอนุมานได้จนกว่าจะถึงรันไทม์
ตัวอย่างเช่น หากคํานวณ "slope" โดยการแมปee.Terrain.slope
ฟังก์ชันในคอลเล็กชัน คุณจะต้องระบุประเภทเอาต์พุตของ "slope"
ในอินพุตการอนุมาน ดังนี้
inputTypeOverride = {
"slope": {
"type": "PixelType",
"precision": "float",
"dimensions": 0,
"min": -100.0,
"max": 100.0
}
}
เคล็ดลับ: หากพบข้อความแสดงข้อผิดพลาดว่า "แปลงย่านความถี่หรือพร็อพเพอร์ตี้เป็นเทนเซอร์ไม่ได้" วิธีแก้ปัญหาที่เป็นไปได้คือใช้การลบล้างประเภทเพื่อบังคับให้อินพุตเป็นประเภทหนึ่งๆ
inputShapes
inputShapes
คือพจนานุกรมของชื่อวงและรูปร่างพิกเซลอาร์เรย์ หากต้องการส่งพิกเซลที่มีค่าอาร์เรย์โมเดลซึ่งมีความยาวมากกว่า 1 ให้ตั้งค่าอาร์กิวเมนต์ inputShapes
อาร์กิวเมนต์นี้คล้ายกับ
inputTypeOverride
แต่ใช้กับรูปร่างของแถบอินพุตสำหรับการคาดการณ์รูปภาพโดยเฉพาะ เช่น หากต้องการเข้ารหัส 3 ย่านความถี่ (1) "ndvi_series" เป็นอนุกรมเวลา 1 มิติที่มีค่า 12 ค่า (2) "temp" เป็นค่าสเกลาร์ และ (3) "patch" เป็นอาร์เรย์พิกเซล 2 มิติ ให้ใช้คำสั่งต่อไปนี้
inputShapes = {
"ndvi_series": [12], # 12 ndvi samples
"temp": [], # scalar
"patch": [2, 2], # 2px * 2px patch
}
outputBands
outputBands
คือพจนานุกรมของชื่อย่านความถี่เอาต์พุตไปยังออบเจ็กต์ที่มี ee.PixelType
และมิติข้อมูลของย่านความถี่ ที่นี่มิติข้อมูลควรเหมือนกับความยาวของอาร์เรย์รูปร่างเทนเซอร์ กล่าวคือ ข้อมูลสเกลาร์ที่มีรูปร่าง () ควรมีขนาด 0, ข้อมูล 1 มิติที่มีรูปร่าง (N) ควรมีขนาด 1, ข้อมูล 2 มิติที่มีรูปร่าง (N, M) ควรมีขนาด 2 ตัวอย่างเช่น แถบเอาต์พุตชื่อ "B1" ที่มีพิกเซลที่มีค่าอาร์เรย์ที่มีรูปร่างจะระบุด้วยข้อมูลต่อไปนี้
outputBands = {
'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}
ขนาดชิ้นส่วนแผนที่
คุณควบคุมวิธีแบ่งรูปภาพออกเป็นส่วนๆ โดยใช้พารามิเตอร์ต่อไปนี้
inputTileSize
inputOverlapSize
outputTileSize
ป้อนขนาดชิ้นส่วนแผนที่
หากต้องการตั้งค่าขนาดไทล์อินพุต ให้ใช้ inputTileSize
และ inputOverlapSize
ตั้งค่าพารามิเตอร์เหล่านี้โดยระบุคู่ความกว้างและความสูงของไทล์เป็นพิกเซล (เช่น [32, 32]) ขนาดแพทช์ทั้งหมดจะกำหนดโดยการบวกความสูงและความกว้างของ inputTileSize
และ outputTileSize
เช่น โมเดล ConvNet แบบสมบูรณ์อาจต้องการอินพุตที่มีรูปร่าง (256 x 256 x ช่อง) หากกังวลเกี่ยวกับผลของขอบระหว่างผลลัพธ์การอนุมาน เราอาจทิ้งinputOverlapSize[0]
พิกเซลจากด้านซ้ายและขวา และinputOverlapSize[1]
พิกเซลจากด้านบนและด้านล่างของผลลัพธ์การอนุมานแต่ละรายการ ซึ่งจะส่งผลให้มีการเรียกใช้การคาดการณ์มากขึ้นเพื่อให้ครอบคลุมพื้นที่การคาดการณ์อย่างเต็มรูปแบบ
ตัวอย่างเช่น หากโมเดลของเราคาดหวัง (256 x 256 x 3) และเราต้องการทิ้งพิกเซลขอบ 32 พิกเซล เราจะระบุข้อมูลต่อไปนี้
ee.Model({
"endpoint": endpoint,
"inputTileSize": [192, 192],
"inputOverlapSize": [64, 64],
# rest omitted.
}
หมายเหตุ: inputOverlapSize
คือค่า x และ y ที่ทับซ้อนกันทั้งหมด หากคุณต้องการมีบัฟเฟอร์ขนาด N พิกเซลรอบๆ รูปภาพทั้งรูป การซ้อนทับจะเท่ากับ [2N, 2N]
ขนาดชิ้นส่วนแผนที่เอาต์พุต
หากต้องการกำหนดขนาดไทล์เอาต์พุต ให้ตั้งค่าอาร์กิวเมนต์ outputTileSize
หากไม่ได้ตั้งค่า outputTileSize
ขนาดไทล์เริ่มต้นจะเหมือนกับ inputTileSize
สำหรับบางรุ่น ขนาดเอาต์พุตอาจแตกต่างจากขนาดอินพุต เช่น โมเดลการจัดประเภทอาจยอมรับอินพุตที่มีรูปร่าง (256, 256, Channels) แต่แสดงผลเทนเซอร์ที่มีรูปร่าง (1, 1, 1) ในกรณีนี้ คุณต้องตั้งค่า outputTileSize
เป็น [1, 1]
ปัญหานี้พบได้บ่อยในโมเดลที่แสดงผลลัพธ์ของความน่าจะเป็น (ที่ความละเอียดลดลง) ของลักษณะบางอย่างของชิ้นส่วน
การฉายภาพ
โมเดล ConvNet เกือบทั้งหมดจะต้องการอินพุตของการฉายภาพแบบคงที่ เนื่องจากโมเดล ConvNet ส่วนใหญ่ได้รับการฝึกในขนาดคงที่ ในกรณีนี้ ให้ตั้งค่าพารามิเตอร์ fixInputProj
เป็น true ในการเรียกใช้ ee.Model.fromVertexAi()
และระบุการฉายข้อมูลในพารามิเตอร์ proj
การฉายภาพของอินพุตและการฉายแบบคงที่ของโมเดลจะส่งผลต่อค่าเอาต์พุต ดูคู่มือการเปลี่ยนโปรเจ็กชัน EE