SageMaker 지리 공간 이미지와 함께 Amazon SageMaker Studio Classic 노트북을 사용하여 지구 관측 작업 만들기 - Amazon SageMaker

SageMaker 지리 공간 이미지와 함께 Amazon SageMaker Studio Classic 노트북을 사용하여 지구 관측 작업 만들기

SageMaker Studio Classic 노트북을 SageMaker 지리 공간 이미지와 함께 사용하는 방법:

  1. 런처노트북 및 컴퓨팅 리소스에서 환경 변경을 선택합니다.

  2. 다음으로 환경 변경 대화 상자가 열립니다.

  3. 이미지 드롭다운을 선택하고 지리 공간 1.0을 선택합니다. 인스턴스 유형ml.geospatial.interactive이어야 합니다. 다른 설정의 기본값을 변경하지 마세요.

  4. 선택을 선택하세요.

  5. 노트북 생성을 선택합니다.

아래 제공된 코드를 사용하여 SageMaker 지리 공간 이미지와 함께 Amazon SageMaker Studio Classic 노트북을 사용하여 EOJ를 시작할 수 있습니다.

import boto3 import sagemaker import sagemaker_geospatial_map session = boto3.Session() execution_role = sagemaker.get_execution_role() sg_client = session.client(service_name="sagemaker-geospatial")

다음은 미국 서부(오레곤) 리전에 EOJ를 생성하는 방법을 보여주는 예시입니다.

#Query and Access Data search_rdc_args = { "Arn": "arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8", # sentinel-2 L2A COG "RasterDataCollectionQuery": { "AreaOfInterest": { "AreaOfInterestGeometry": { "PolygonGeometry": { "Coordinates": [ [ [-114.529, 36.142], [-114.373, 36.142], [-114.373, 36.411], [-114.529, 36.411], [-114.529, 36.142], ] ] } } }, "TimeRangeFilter": { "StartTime": "2021-01-01T00:00:00Z", "EndTime": "2022-07-10T23:59:59Z", }, "PropertyFilters": { "Properties": [{"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 1}}}], "LogicalOperator": "AND", }, "BandFilter": ["visual"], }, } tci_urls = [] data_manifests = [] while search_rdc_args.get("NextToken", True): search_result = sg_client.search_raster_data_collection(**search_rdc_args) if search_result.get("NextToken"): data_manifests.append(search_result) for item in search_result["Items"]: tci_url = item["Assets"]["visual"]["Href"] print(tci_url) tci_urls.append(tci_url) search_rdc_args["NextToken"] = search_result.get("NextToken") # Perform land cover segmentation on images returned from the sentinel dataset. eoj_input_config = { "RasterDataCollectionQuery": { "RasterDataCollectionArn": "arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8", "AreaOfInterest": { "AreaOfInterestGeometry": { "PolygonGeometry": { "Coordinates": [ [ [-114.529, 36.142], [-114.373, 36.142], [-114.373, 36.411], [-114.529, 36.411], [-114.529, 36.142], ] ] } } }, "TimeRangeFilter": { "StartTime": "2021-01-01T00:00:00Z", "EndTime": "2022-07-10T23:59:59Z", }, "PropertyFilters": { "Properties": [{"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 1}}}], "LogicalOperator": "AND", }, } } eoj_config = {"LandCoverSegmentationConfig": {}} response = sg_client.start_earth_observation_job( Name="lake-mead-landcover", InputConfig=eoj_input_config, JobConfig=eoj_config, ExecutionRoleArn=execution_role, )

EOJ가 생성되면 Arn가 반환됩니다. Arn를 사용하여 작업을 식별하고 추가 작업을 수행할 수 있습니다. sg_client.get_earth_observation_job(Arn = response['Arn'])를 실행하여 작업의 상태를 가져오면 됩니다.

다음 예에서는 EOJ가 완료될 때까지 EOJ의 상태를 쿼리하는 방법을 보여줍니다.

eoj_arn = response["Arn"] job_details = sg_client.get_earth_observation_job(Arn=eoj_arn) {k: v for k, v in job_details.items() if k in ["Arn", "Status", "DurationInSeconds"]} # List all jobs in the account sg_client.list_earth_observation_jobs()["EarthObservationJobSummaries"]

EOJ가 완료되면 노트북에서 직접 EOJ 출력을 시각화할 수 있습니다. 다음 예시에서는 대화형 맵을 렌더링하는 방법을 보여줍니다.

map = sagemaker_geospatial_map.create_map({ 'is_raster': True }) map.set_sagemaker_geospatial_client(sg_client) # render the map map.render()

다음 예제는 맵을 관심 영역 중심에 배치하는 방법과 EOJ의 입력과 출력을 맵 내에서 별도의 레이어로 렌더링하는 방법을 보여줍니다.

# visualize the area of interest config = {"label": "Lake Mead AOI"} aoi_layer = map.visualize_eoj_aoi(Arn=eoj_arn, config=config) # Visualize input. time_range_filter = { "start_date": "2022-07-01T00:00:00Z", "end_date": "2022-07-10T23:59:59Z", } config = {"label": "Input"} input_layer = map.visualize_eoj_input( Arn=eoj_arn, config=config, time_range_filter=time_range_filter ) # Visualize output, EOJ needs to be in completed status. time_range_filter = { "start_date": "2022-07-01T00:00:00Z", "end_date": "2022-07-10T23:59:59Z", } config = {"preset": "singleBand", "band_name": "mask"} output_layer = map.visualize_eoj_output( Arn=eoj_arn, config=config, time_range_filter=time_range_filter )

export_earth_observation_job 함수를 사용하여 EOJ 결과를 Amazon S3 버킷으로 내보낼 수 있습니다. 내보내기 기능을 사용하면 팀 간에 결과를 편리하게 공유할 수 있습니다. 또한 SageMaker는 데이터세트 관리를 단순화합니다. S3 버킷에서 수천 개의 파일을 크롤링하는 대신 작업 ARN을 사용하여 EOJ 결과를 간단히 공유할 수 있습니다. 결과를 작업 ARN별로 그룹화할 수 있으므로 각 EOJ는 데이터 카탈로그의 자산이 됩니다. 다음 예시에서는 EOJ의 결과를 내보내는 방법을 보여줍니다.

sagemaker_session = sagemaker.Session() s3_bucket_name = sagemaker_session.default_bucket() # Replace with your own bucket if needed s3_bucket = session.resource("s3").Bucket(s3_bucket_name) prefix = "eoj_lakemead" # Replace with the S3 prefix desired export_bucket_and_key = f"s3://{s3_bucket_name}/{prefix}/" eoj_output_config = {"S3Data": {"S3Uri": export_bucket_and_key}} export_response = sg_client.export_earth_observation_job( Arn=eoj_arn, ExecutionRoleArn=execution_role, OutputConfig=eoj_output_config, ExportSourceImages=False, )

다음 스니펫을 사용하여 내보내기 작업의 상태를 모니터링할 수 있습니다.

# Monitor the export job status export_job_details = sg_client.get_earth_observation_job(Arn=export_response["Arn"]) {k: v for k, v in export_job_details.items() if k in ["Arn", "Status", "DurationInSeconds"]}

EOJ를 삭제한 후에는 보관 수수료가 청구되지 않습니다.

EOJ 실행 방법을 보여주는 예제는 이 블로그 게시물을 참조하세요.

SageMaker 지리 공간 기능에 대한 더 많은 예제 노트북은 이 GitHub 리포지토리를 참조하세요.