Dự đoán hình ảnh

Earth Engine cung cấp ee.Model dưới dạng trình kết nối đến các mô hình được lưu trữ trên Vertex AI. Trình kết nối này gửi dữ liệu hình ảnh hoặc bảng dưới dạng yêu cầu dự đoán trực tuyến đến một mô hình đã được huấn luyện được triển khai trên một điểm cuối Vertex AI. Sau đó, đầu ra của mô hình sẽ được trả về dưới dạng hình ảnh hoặc bảng Earth Engine.

ee.Model.predictImage

Sử dụng model.predictImage() để đưa ra dự đoán về ee.Image bằng mô hình được lưu trữ. ee.Image được dùng để tạo thẻ thông tin (miếng vá hình ảnh) của các dải tần, sau đó được gửi đến mô hình được lưu trữ. Loại dữ liệu trả về của predictImage()ee.Image. Bạn có thể thêm ee.Image vào bản đồ, xuất hoặc sử dụng trong các phép tính khác.

Tuỳ chọn nhập

Khi thực hiện suy luận bằng ee.Image, có một số tham số được sử dụng trong trình kết nối ee.Model. Các chế độ điều khiển này dành cho các dải và thuộc tính đầu vào, tính năng xếp kề bản vá hình ảnh đầu vào, kích thước bản vá hình ảnh đầu ra và dải hình ảnh đầu ra.

Băng tần và thuộc tính

Để chỉ định các dải và thuộc tính đầu vào, hãy sử dụng các tham số sau:

inputProperties

inputProperties là danh sách tên thuộc tính để chuyển tiếp đến mọi thực thể dự đoán. Hệ thống hỗ trợ các thuộc tính số, chuỗi và boolean.

inputTypeOverride

inputTypeOverride là từ điển về tên tài sản và/hoặc tên dải tần có cung cấp thông tin về loại và phương diện cụ thể. Điều này có thể cần thiết vì nhiều thuật toán Earth Engine tạo ra đầu ra có các kiểu động không thể suy luận được cho đến thời gian chạy.

Ví dụ: nếu đang tính toán "độ dốc" bằng cách liên kết hàm ee.Terrain.slope trên một tập hợp, bạn sẽ cần chỉ định loại đầu ra là "độ dốc" trong dữ liệu đầu vào suy luận như sau:

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

MẸO: Nếu bạn gặp thông báo lỗi cho biết một dải hoặc thuộc tính "không thể chuyển đổi thành tensor", thì giải pháp có thể là sử dụng cơ chế ghi đè loại để buộc dữ liệu đầu vào thành một loại nhất định.

inputShapes

inputShapes là một từ điển gồm tên dải và hình dạng pixel mảng. Để gửi pixel có giá trị mảng mô hình có độ dài lớn hơn 1, hãy đặt đối số inputShapes. Đối số này tương tự như inputTypeOverride nhưng dành riêng cho các hình dạng dải đầu vào để dự đoán hình ảnh. Ví dụ: để mã hoá 3 dải, (1) "ndvi_series" dưới dạng một chuỗi thời gian 1D có 12 giá trị, (2) "temp" dưới dạng một đại lượng vô hướng và (3) "patch" dưới dạng một mảng pixel 2D, hãy sử dụng mã sau:

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

outputBands

outputBands là một từ điển chứa tên dải tần đầu ra cho một đối tượng chứa ee.PixelType và các phương diện của dải tần. Ở đây, các kích thước phải giống với độ dài của mảng hình dạng tensor. Nói cách khác, dữ liệu vô hướng có hình dạng () phải có kích thước 0, dữ liệu 1 chiều có hình dạng (N) phải có kích thước 1, dữ liệu 2 chiều có hình dạng (N, M) phải có kích thước 2. Ví dụ: một dải đầu ra có tên "B1" với các pixel có giá trị mảng có hình dạng được chỉ định bằng cách sau:

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

Kích thước ô

Bạn có thể kiểm soát cách sắp xếp hình ảnh bằng các tham số sau:

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

Nhập kích thước thẻ thông tin

Để đặt kích thước ô đầu vào, hãy sử dụng inputTileSizeinputOverlapSize. Đặt các tham số này bằng cách cung cấp một cặp chiều rộng và chiều cao của thẻ thông tin tính bằng pixel (ví dụ: [32, 32]). Tổng kích thước bản vá được xác định bằng cách thêm chiều cao và chiều rộng của inputTileSizeoutputTileSize.

Ví dụ: một mô hình tích chập đầy đủ có thể dự kiến đầu vào có hình dạng (256 x 256 x Kênh). Nếu lo ngại về hiệu ứng cạnh giữa các kết quả suy luận, chúng ta có thể loại bỏ các pixel inputOverlapSize[0] ở bên trái và bên phải, cũng như inputOverlapSize[1] ở trên cùng và dưới cùng của mỗi kết quả suy luận. Điều này sẽ dẫn đến nhiều lệnh gọi dự đoán hơn để bao phủ toàn bộ khu vực dự đoán.

Ví dụ: nếu mô hình của chúng ta dự kiến (256 x 256 x 3) và chúng ta muốn loại bỏ 32 pixel đường viền, thì chúng ta sẽ chỉ định như sau:

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

LƯU Ý: inputOverlapSize là tổng mức độ chồng chéo x và y. Nếu bạn dự định có một vùng đệm N pixel xung quanh toàn bộ hình ảnh, thì phần chồng chéo sẽ là [2N, 2N]

Kích thước ô đầu ra

Để đặt kích thước ô đầu ra, hãy đặt đối số outputTileSize. Nếu bạn không đặt outputTileSize, kích thước ô mặc định sẽ giống với inputTileSize.

Đối với một số mô hình, kích thước đầu ra có thể khác với kích thước đầu vào. Ví dụ: mô hình phân loại có thể chấp nhận dữ liệu đầu vào có hình dạng (256, 256, Kênh), nhưng trả về tensor có hình dạng (1, 1, 1). Trong trường hợp này, bạn cần đặt outputTileSize thành [1, 1]. Điều này khá phổ biến với các mô hình trả về kết quả xác suất (ở độ phân giải giảm) của một số đặc điểm thẻ thông tin.

Dự đoán

Hầu hết các mô hình tích chập đều sẽ dự kiến đầu vào là một phép chiếu cố định. Lý do là vì hầu hết các mô hình tích chập đều được huấn luyện trên một tỷ lệ cố định. Trong trường hợp này, hãy đặt tham số fixInputProj thành true trong lệnh gọi đến ee.Model.fromVertexAi() và chỉ định phép chiếu của dữ liệu trong tham số proj.

Hình chiếu của Hình ảnh đầu vào và hình chiếu cố định của mô hình sẽ ảnh hưởng đến các giá trị đầu ra. Xem hướng dẫn về Tái chiếu EE.