이미지 예측

Earth Engine은 Vertex AI에 호스팅된 모델에 대한 커넥터로 ee.Model를 제공합니다. 이 커넥터는 이미지 또는 테이블 데이터를 온라인 예측 요청으로 Vertex AI 엔드포인트에 배포된 학습된 모델로 전송합니다. 그러면 모델 출력이 Earth Engine 이미지 또는 표로 반환됩니다.

ee.Model.predictImage

model.predictImage()를 사용하여 호스팅된 모델을 통해 ee.Image에 대해 예측합니다. ee.Image는 호스팅된 모델로 전송되는 밴드의 타일 (이미지 패치)을 만드는 데 사용됩니다. predictImage()의 반환 유형은 ee.Image이며, ee.Image는 맵에 추가하거나 내보내거나 다른 계산에 사용할 수 있습니다.

입력 옵션

ee.Image를 사용하여 추론을 실행할 때 ee.Model 커넥터에서 사용되는 여러 매개변수가 있습니다. 이러한 컨트롤은 입력 밴드 및 속성, 입력 이미지 패치 타일링, 출력 이미지 패치 크기, 출력 이미지 밴드용입니다.

밴드 및 속성

입력 밴드 및 속성을 지정하려면 다음 매개변수를 사용하세요.

inputProperties

inputProperties는 모든 예측 인스턴스에 전달할 속성 이름 목록입니다. 숫자, 문자열, 불리언 속성이 지원됩니다.

inputTypeOverride

inputTypeOverride는 특정 유형 및 크기 정보가 제공된 속성 또는 밴드 이름의 사전입니다. 이는 많은 Earth Engine 알고리즘이 런타임까지 추론할 수 없는 동적 유형의 출력을 생성하기 때문에 필요할 수 있습니다.

예를 들어 컬렉션에 ee.Terrain.slope 함수를 매핑하여 '기울기'를 계산하는 경우 추론 입력에서 다음과 같이 '기울기'의 출력 유형을 지정해야 합니다.

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

팁: 밴드 또는 속성을 '텐서로 변환할 수 없다'는 오류 메시지가 표시되면 유형 재정의를 사용하여 입력을 특정 유형으로 강제하는 것이 좋습니다.

inputShapes

inputShapes은 밴드 이름과 배열 픽셀 도형의 사전입니다. 길이가 1보다 큰 모델 배열 값 픽셀을 전송하려면 inputShapes 인수를 설정합니다. 이 인수는 inputTypeOverride와 유사하지만 이미지 예측을 위한 입력 밴드 도형에만 적용됩니다. 예를 들어 세 개의 밴드(1) 'ndvi_series'를 12개의 값이 있는 1D 시계열로, (2) 'temp'를 스칼라로, (3) 'patch'를 2D 픽셀 배열로 인코딩하려면 다음을 사용합니다.

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

outputBands

outputBandsee.PixelType 및 밴드의 크기를 포함하는 객체에 대한 출력 밴드 이름의 사전입니다. 여기서 크기는 텐서 형식 배열의 길이와 같아야 합니다. 즉, 모양이 ()인 스칼라 데이터는 크기가 0이어야 하고, 모양이 (N)인 1차원 데이터는 크기가 1이어야 하며, 모양이 (N, M)인 2차원 데이터는 크기가 2여야 합니다. 예를 들어 모양이 있는 배열 값 픽셀이 포함된 'B1'이라는 출력 밴드는 다음과 같이 지정됩니다.

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

카드 크기

다음 매개변수를 사용하여 이미지가 타일링되는 방식을 제어할 수 있습니다.

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

타일 크기 입력

입력 타일 크기를 설정하려면 inputTileSizeinputOverlapSize를 사용합니다. 카드 너비와 높이 쌍을 픽셀 단위로 제공하여 이러한 매개변수를 설정합니다 (예: [32, 32]). 총 패치 크기는 inputTileSizeoutputTileSize 높이와 너비를 더하여 결정됩니다.

예를 들어 완전 컨볼루션 모델은 (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, 채널) 형식의 입력을 허용하지만 (1, 1, 1) 형식의 텐서를 반환할 수 있습니다. 이 경우 outputTileSize[1, 1]로 설정해야 합니다. 이는 일부 카드 특성의 확률 출력을 (감소된 해상도로) 반환하는 모델에서 흔히 발생합니다.

투영

거의 모든 컨볼루션 모델은 고정 투영의 입력을 예상합니다. 이는 대부분의 컨볼루션 모델이 고정된 크기로 학습되기 때문입니다. 이 경우 ee.Model.fromVertexAi() 호출에서 fixInputProj 매개변수를 true로 설정하고 proj 매개변수에서 데이터의 투영을 지정합니다.

입력 이미지의 투영과 모델의 고정 투영은 출력 값에 영향을 미칩니다. EE 재프로젝션 가이드를 참고하세요.