Amazon Web Services 한국 블로그

Amazon SageMaker 기반 지리 공간 데이터 기계 학습 기능 미리 보기 출시

매일 지도 앱을 사용하여 좋아하는 레스토랑을 찾거나 지리공간 데이터를 사용하여 가장 빠른 경로를 여행할 수 있습니다. 지리공간 데이터에는 건물 위치(점), 도로(선) 또는 토지 경계(다각형)와 같은 2차원 평면 도형을 사용하는 벡터 데이터와 위성 및 항공 이미지와 같은 래스터 데이터라는 두 가지 유형이 있습니다.

작년에 개발자들이 애플리케이션에 위치 기능을 쉽게 추가할 수 있는 Amazon Location Service를 도입했습니다. Amazon Location Service를 사용하면 지도를 시각화하고, 관심 지점을 검색하고, 배송 경로를 최적화하고, 자산을 추적하고, 지오펜싱을 사용하여 정의된 지리적 경계에서 출입 이벤트를 감지할 수 있습니다.

하지만 기계 학습(ML)을 사용하여 지리공간 데이터로부터 예측을 하려면 많은 어려움이 따릅니다. 대학원에서 지리 정보 시스템(GIS)을 공부할 때 저는 좁은 영역만을 다루는 작은 데이터 세트에 국한되어 있었고, 그 당시에는 제한된 저장 공간과 노트북의 컴퓨팅 성능만 사용할 수 있는 어려움을 겪어야 했습니다.

이러한 어려움은 다음과 같습니다. 1) 고품질 지리공간 데이터 세트를 획득하고 액세스하는 것은 여러 데이터 소스 및 공급업체와 협력해야 하기 때문에 복잡하며, 2) 훈련 및 추론을 위한 대규모 지리공간 데이터를 준비하는 데 시간과 비용이 많이 소요될 수 있으며, 3) 지리공간 데이터를 시각화하고 ML 운영 인프라와 통합하기 위한 특수 도구가 필요합니다.

오늘 지리공간 데이터를 사용하여 ML 모델을 쉽게 구축, 훈련 및 배포할 수 있게 해주는 Amazon SageMaker새로운 지리공간 기능의 평가판 릴리스를 발표하게 되어 매우 기쁩니다. 이 기능 모음은 사전 훈련된 심층 신경망(DNN) 모델과 지리공간 연산자를 제공하여 대규모 지리공간 데이터 세트에 쉽게 액세스하고 준비할 수 있도록 합니다. 생성된 모든 예측을 시각화하고 맵에서 탐색할 수 있습니다.

또한 새로운 지리공간 이미지를 사용하여 NumPy, GDAL, GeoPandasRasterio와 같은 오픈 소스 라이브러리와 SageMaker 전용 라이브러리를 사용하여 지리공간 노트북 내부의 데이터를 변환하고 시각화할 수 있습니다.

ML을 위한 완전 통합 개발 환경(IDE)인 SageMaker Studio 콘솔에서 클릭 몇 번만으로 토지 피복 세분화와 같은 지구 관측 작업을 실행하거나 노트북을 시작할 수 있습니다. 다양한 지리공간 데이터를 가져올 수 있습니다. 예를 들어 Amazon S3에서 자체 Planet Labs 위성 데이터를 가져오거나, Amazon Location Service인 Open Data on AWS에서 US Geological Survey LANDSATSentinel-2 이미지를 가져오거나, GPS 디바이스, 커넥티드 카에서 생성된 위치 데이터 또는 사물 인터넷 (IoT) 센서, 소매점 유동인구 트래픽, 지리 마케팅, 인구 조사 데이터와 같은 자체 데이터를 가져올 수 있습니다.

Amazon SageMaker 지리공간 기능은 모든 산업 전반의 사용 사례를 지원합니다. 예를 들어 보험 회사는 위성 이미지를 사용하여 자연 재해가 지역 경제에 미치는 피해를 분석할 수 있고, 농업 회사는 작물의 상태를 추적하고 수확량을 예측하며 농산물에 대한 지역 수요를 예측할 수 있습니다. 소매업체는 위치 및 지도 데이터를 경쟁 인텔리전스와 결합하여 전 세계 신규 매장 위치를 최적화할 수 있습니다. 이는 사용 사례 예시 중 일부에 불과합니다. 여러분 자신의 아이디어를 현실로 만들 수 있습니다!

Amazon SageMaker 지리공간 기능 소개
평가판에서 미국 서부(오레곤) 리전에서 초기 상태의 SageMaker Studio를 사용할 수 있습니다. Studio에서 새 사용자를 생성할 때 기본 Jupyter Lab 3 버전으로 설정해야 합니다. SageMaker Studio를 설정하는 방법에 대해 자세히 알아보려면 AWS 설명서의 빠른 설정을 사용한 Amazon SageMaker 도메인에 온보딩을 참조하세요.

이제 홈페이지로 이동한 다음 SageMaker Studio의 새 런처 탭에서 아래로 스크롤하여 지리공간 섹션을 찾을 수 있습니다.

다음은 Amazon SageMaker 지리공간 기능에 대한 세 가지 주요 개요입니다.

  • 지구 관측 작업 – 위성 이미지 데이터를 수집, 변환 및 시각화하여 예측하고 유용한 인사이트를 얻을 수 있습니다.
  • 벡터 보강 작업 – 지리적 좌표를 CSV 파일에서 읽을 수 있는 주소로 변환하는 등의 작업을 통해 데이터를 강화합니다.
  • 지도 시각화 – CSV, JSON 또는 GeoJSON 파일에서 업로드된 위성 이미지 또는 지도 데이터를 시각화합니다.

각 구성 요소에 대해 자세히 알아보겠습니다!

지구 관측 작업 시작하기
지구 관측 작업을 시작하려면 첫 페이지에서 Create Earth Observation job(지구 관측 작업 생성)을 선택합니다.

사용 사례에 따라 지리공간 작업 또는 ML 모델 중 하나를 선택할 수 있습니다.

  • 스펙트럼 지수 – 관심 있는 기능이 풍부한 스펙트럼 밴드의 조합을 얻을 수 있습니다.
  • 클라우드 마스킹 – 구름과 구름이 없는 픽셀을 식별하여 선명하고 정확한 위성 이미지를 얻을 수 있습니다.
  • 토지 피복 세분화 – 위성 이미지에서 식생 및 물과 같은 토지 피복 유형을 식별합니다.

SageMaker는 사전 훈련된 ML 모델과 함께 데이터 변환을 위한 내장 연산을 포함하는 지리공간 기능의 조합을 제공합니다. 이러한 모델을 사용하여 시간 경과에 따른 환경 변화와 인간 활동의 영향을 이해하고, 구름과 구름이 없는 픽셀을 식별하고, 의미론적 분할을 수행할 수 있습니다.

작업 이름을 정의하고 사용할 모델을 선택한 후 오른쪽 하단에 있는 다음 버튼을 클릭하여 두 번째 구성 단계로 이동합니다.

다음으로 관심 영역(AOI), 사용할 위성 이미지 데이터 세트, 작업에 맞는 필터를 정의할 수 있습니다. 왼쪽 화면에는 지구 관측 작업 선택을 시각화할 관심 영역 맵이 표시되고 오른쪽 화면에는 AOI에 대한 위성 이미지 및 필터 옵션이 포함되어 있습니다.

위성 이미지 모음(USGS LANDSAT 또는 Sentinel-2 이미지), 지구 관측 작업의 날짜 범위 및 필터 섹션의 이미지 속성에 대한 필터를 선택할 수 있습니다.

AOI를 한국 제주도한라산 지역으로 정의하기 위해 GeoJSON 형식을 업로드했습니다. 모든 작업 속성과 옵션을 선택하고 생성을 선택합니다.

지구 관측 작업이 성공적으로 생성되면 작업 세부 정보 보기 버튼을 눌러 작업 세부 정보를 볼 수 있는 플래시바가 표시됩니다.

작업이 완료되면 작업 출력을 시각화할 수 있습니다.

이 이미지는 입력된 위성 이미지에서 토지 사용을 감지하기 위한 렌더링 프로세스의 작업 출력입니다. 왼쪽 창에서 데이터 레이어의 입력 이미지, 출력 이미지 또는 AOI를 볼 수 있습니다.

천연자원 관리를 위한 토지 피복의 자동 매핑 결과를 보여줍니다. 예를 들어 노란색 영역은 바다, 초록색은 구름, 진한 주황색은 숲, 주황색은 육지입니다.

또한 지리공간 SDK와 함께 지리공간 이미지를 사용하여 SageMaker 노트북에서 동일한 작업을 실행할 수 있습니다.

파일새로 만들기에서 노트북을 선택하고 노트북 설치 환경에서 이미지 드롭다운 메뉴를 선택한 다음 Geospatial 1.0을 선택합니다. 다른 설정은 기본값으로 설정합니다.

Python 샘플 코드를 살펴봅시다! 먼저 SageMaker 지리공간 라이브러리를 설정합니다.

import boto3
import botocore
import sagemaker
import sagemaker_geospatial_map

region = boto3.Session().region_name
session = botocore.session.get_session()
execution_role = sagemaker.get_execution_role()

sg_client= session.create_client(
    service_name='sagemaker-geospatial',
    region_name=region
)

지구 관측 작업을 시작하여 제주도 지역의 토지 피복 유형을 식별합니다.

# 센티넬 데이터 세트에서 반환된 이미지에 대해 토지 피복 세분화를 수행합니다.
eoj_input_config = {
    "RasterDataCollectionQuery": {
        "RasterDataCollectionArn": <ArnDataCollection,
        "AreaOfInterest": {
            "AreaOfInterestGeometry": {
                "PolygonGeometry": {
                    "Coordinates": [
                        [[126.647226, 33.47014], [126.406116, 33.47014], [126.406116, 33.307529], [126.647226, 33.307529], [126.647226, 33.47014]]
                    ]
                }
            }
        },
        "TimeRangeFilter": {
            "StartTime": "2022-11-01T00:00:00Z",
            "EndTime": "2022-11-22T23:59:59Z"
        },
        "PropertyFilters": {
            "Properties": [
                {
                    "Property": {
                        "EoCloudCover": {
                            "LowerBound": 0,
                            "UpperBound": 20
                        }
                    }
                }
            ],
            "LogicalOperator": "AND"
        }
    }
}
eoj_config = {"LandCoverSegmentationConfig": {}}

response = sg_client.start_earth_observation_job(
    Name =  "jeju-island-landcover", 
    InputConfig = eoj_input_config,
    JobConfig = eoj_config, 
    ExecutionRoleArn = execution_role
)
# EOJ 상태 모니터링
sg_client.get_earth_observation_job(Arn = response['Arn'])

EOJ가 생성되면 Arn이 반환됩니다. Arn을 사용하여 작업을 식별하고 추가 작업을 수행합니다. 작업을 완료한 후 시각화 도구에서 지구 관측 입력 및 출력을 시각화합니다.

# EOJ 입력/출력 레이어를 추가하기 위한 맵 인스턴스를 생성합니다.
map = sagemaker_geospatial_map.create_map({
    'is_raster': True
})
map.set_sagemaker_geospatial_client(sg_client)
# render the map
map.render()

# 입력을 시각화하면 EOJ가 완료되지 않았음을 알 수 있습니다.
time_range_filter={
    "start_date": "2022-11-01T00:00:00Z",
    "end_date": "2022-11-22T23:59:59Z"
}
arn_to_visualize = response['Arn']
config = {
    'label': 'Jeju island'
}
input_layer=map.visualize_eoj_input(Arn=arn_to_visualize, config=config , time_range_filter=time_range_filter)

# 출력을 시각화하면, EOJ는 완료 상태여야 합니다.
time_range_filter={
    "start_date": "2022-11-01T00:00:00Z",
    "snd_date": "2022-11-22T23:59:59Z"
}

config = {
   'preset': 'singleBand',
   'band_name': 'mask'
}
output_layer = map.visualize_eoj_output(Arn=arn_to_visualize, config=config, time_range_filter=time_range_filter)

AWS Command Line Interface(AWS CLI)를 사용하여 StartEarthObservationJob API를 실행할 수도 있습니다.

노트북에서 지구 관측 작업을 생성하면 추가 지리공간 기능을 사용할 수 있습니다. Amazon SageMaker에서 지원하는 다른 일부 지리공간 작업의 목록은 다음과 같습니다.

  • 밴드 스태킹 – 여러 스펙트럼 속성을 결합하여 단일 이미지를 생성합니다.
  • 구름 제거 – 위성 이미지에서 구름의 일부가 포함된 픽셀을 제거합니다.
  • 지오모자이크 – 여러 이미지를 결합하여 충실도를 높입니다.
  • 리샘플링 – 이미지를 다른 해상도로 스케일링합니다.
  • 시간 통계 – 동일한 영역에 있는 여러 GeoTIFF에 대한 시간 경과에 따른 통계를 계산합니다.
  • 영역 통계 – 사용자 정의 영역에 대한 통계를 계산합니다.

자세히 알아보려면 AWS 설명서의 Amazon SageMaker 지리공간 노트북 SDKAmazon SageMaker 지리공간 기능 서비스 API와 GitHub 리포지토리의 지리공간 샘플 코드를 참조하세요.

벡터 강화 작업 및 맵 시각화 수행
벡터 강화 작업(VEJ)은 역 지오코딩 또는 맵 매칭과 같은 벡터 데이터에 대한 작업을 수행합니다.

  • 역 지오코딩 – 지도 좌표를 Amazon Location Service에서 제공하는 사람이 읽을 수 있는 주소로 변환합니다.
  • 지도 매칭 – GPS 좌표를 도로 세그먼트에 조정합니다.

VEJ를 실행하려면 Amazon SageMaker Studio 노트북을 사용해야 하지만, 생성한 모든 작업을 볼 수 있습니다.

StartVectorEnrichmentJob API를 사용하면 제공된 두 가지 작업 유형에 대한 VEJ를 생성할 수 있습니다.

{
  "Name":"vej-reverse", 
  "InputConfig":{
       "DocumentType":"csv", //
       "DataSourceConfig":{
       "S3Data":{
            "S3Uri":"s3://channy-geospatial/sample/vej.csv",
        } 
   }
  }, 
  "JobConfig": {
      "MapMatchingConfig": { 
          "YAttributeName":"string", // Latitude 
          "XAttributeName":"string", // Longitude 
          "TimestampAttributeName":"string", 
          "IdAttributeName":"string"
       }
   },
   "ExecutionRoleArn":"string" 
}

VEJ 작업 출력을 S3 버킷으로 내보낸 후 노트북에서 VEJ의 출력을 시각화하거나 맵 시각화 기능을 사용할 수 있습니다. 맵 시각화 기능을 사용하면 맵에 지리공간 데이터를 쉽게 표시할 수 있습니다.

이 샘플 시각화에는 시애틀 시의회 선거구공립학교 위치가 GeoJSON 형식으로 포함되어 있습니다. 데이터 추가를 선택하여 데이터 파일을 업로드하거나 S3 버킷을 선택합니다.

{
  "type": "FeatureCollection",
  "crs": { "type": "name", "properties": { 
            "name":   "urn:ogc:def:crs:OGC:1.3:CRS84" } },
                                                                                
  "features": [
            { "type": "Feature", "id": 1, "properties": { "PROPERTY_L": "Jane Addams", "Status": "MS" }, "geometry": { "type": "Point", "coordinates": [ -122.293009024934037, 47.709944862769468 ] } },
            { "type": "Feature", "id": 2, "properties": { "PROPERTY_L": "Rainier View", "Status": "ELEM" }, "geometry": { "type": "Point", "coordinates": [ -122.263172064204767, 47.498863322205558 ] } },
            { "type": "Feature", "id": 3, "properties": { "PROPERTY_L": "Emerson", "Status": "ELEM" }, "geometry": { "type": "Point", "coordinates": [ -122.258636146463658, 47.514820466363943 ] } }
            ]
}

이제 끝났습니다! 각 구성 요소에 대한 자세한 내용은 Amazon SageMaker 지리공간 개발자 안내서를 참조하세요.

미리보기 사용해 보기
Amazon SageMaker 지리공간 기능의미리 보기를 이제 미국 서부(오레곤) 리전에서 사용할 수 있습니다. 평가판 기간 동안 더 많은 피드백을 듣고 싶습니다. 사용해 보시고 Amazon SageMaker용 AWS re:Post 또는 일반 AWS Support 문의로 피드백을 보내주세요.

Channy