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
outputBands
은 ee.PixelType
및 밴드의 크기를 포함하는 객체에 대한 출력 밴드 이름의 사전입니다. 여기서 크기는 텐서 형식 배열의 길이와 같아야 합니다. 즉, 모양이 ()인 스칼라 데이터는 크기가 0이어야 하고, 모양이 (N)인 1차원 데이터는 크기가 1이어야 하며, 모양이 (N, M)인 2차원 데이터는 크기가 2여야 합니다. 예를 들어 모양이 있는 배열 값 픽셀이 포함된 'B1'이라는 출력 밴드는 다음과 같이 지정됩니다.
outputBands = {
'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}
카드 크기
다음 매개변수를 사용하여 이미지가 타일링되는 방식을 제어할 수 있습니다.
inputTileSize
inputOverlapSize
outputTileSize
타일 크기 입력
입력 타일 크기를 설정하려면 inputTileSize
및 inputOverlapSize
를 사용합니다.
카드 너비와 높이 쌍을 픽셀 단위로 제공하여 이러한 매개변수를 설정합니다 (예: [32, 32]). 총 패치 크기는 inputTileSize
및 outputTileSize
높이와 너비를 더하여 결정됩니다.
예를 들어 완전 컨볼루션 모델은 (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 재프로젝션 가이드를 참고하세요.