使用带有 SageMaker 地理空间图像的 Amazon SageMaker Studio 经典笔记本创建地球观测作业 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用带有 SageMaker 地理空间图像的 Amazon SageMaker Studio 经典笔记本创建地球观测作业

要使用带有 SageMaker 地理空间图像的 SageMaker Studio 经典笔记本电脑,请执行以下操作:

  1. 启动程序中,选择笔记本和计算资源下的更改环境

  2. 接下来,将打开更改环境对话框。

  3. 选择图像下拉列表并选择 Geospatial 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_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 AI 还简化了数据集管理。我们可以简单地使用作业 ARN 共享 EOJ 结果,而不是在 S3 存储桶中爬取数千个文件。每个 EOJ 都成为数据目录中的资产,因为结果可以按作业 ARN 进行分组。下面的示例显示如何导出 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 存储库