亚马逊AWS官方博客

预览:借助 Amazon SageMaker 使用地理空间数据构建、训练和部署机器学习模型

每天,您都使用地图应用程序来查找自己喜欢的餐厅或使用地理空间数据走最快的路线。有两种地理空间数据:使用二维几何图形,例如建筑物位置(点)、道路(线)或陆地边界(面)的矢量数据,以及卫星和航空图像等栅格数据。

去年,我们推出了 Amazon Location Service,可以让开发人员轻松地向其应用程序添加定位功能。借助 Amazon Location Service,您可以对地图进行可视化、搜索兴趣点、优化配送路线、追踪资产,并使用地理围栏来检测定义的地理边界内的出入事件。

但是,如果您想使用机器学习 (ML) 根据地理空间数据进行预测,会面临很多挑战。我读研究生学习地理信息系统 (GIS) 时,只能使用一个只覆盖狭窄区域的小型数据集,不得不面对有限的存储空间和当时笔记本电脑的计算能力。

这些挑战包括:1) 获取和访问高质量的地理空间数据集非常复杂,因为需要与多个数据来源和供应商合作;2) 为训练和推理准备海量地理空间数据可能既耗时又昂贵;3) 需要专门的工具来可视化地理空间数据并与机器学习运营基础架构集成

今天,我很高兴地宣布发布 Amazon SageMaker 新地理空间功能预览版,借助该版本可以使用地理空间数据轻松构建、训练和部署机器学习模型。该特征集合提供预先训练的深度神经网络 (DNN) 模型和地理空间运算符,可轻松访问和准备大型地理空间数据集。您可以在地图上可视化和浏览所有生成的预测数据。

此外,您可以使用新的地理空间图像使用开源库(例如 NumPyGDALGeoPandasRasterio)以及特定于 SageMaker 的库,转换和可视化地理空间笔记本中的数据。

只需在 SageMaker Studio 控制台(一个集成式开发环境(IDE))中点击几下,即可运行地球观测任务,例如地被分割或启动笔记本。您可以携带各种地理空间数据,例如,来自 Amazon S3 的 Planet Labs 卫星数据,或来自 Open Data on AWS、Amazon Location Service 的美国地理调查局 LANDSATSentinel-2 图像,也可以自带数据,例如由 GPS 设备、联网车辆或物联网 (IoT) 传感器生成的位置数据、零售商店人流量、地理营销和人口普查数据。

Amazon SageMaker 地理空间功能支持任何行业的使用案例。例如,保险公司可以使用卫星图像来分析自然灾害对当地经济造成的损害影响,农业公司可以跟踪农作物的健康状况,预测收成产量并预测区域对农产品的需求。零售商可以将位置和地图数据与竞争情报相结合,优化全球新门店的位置。这些只是一些使用案例。您可以将自己的想法变为现实!

Amazon SageMaker 地理空间功能简介
在预览中,您可以使用在美国西部(俄勒冈州)地区初始化的 SageMaker Studio。在 Studio 中创建新用户时,请确保将版本默认设置为 Jupyter Lab 3 。要了解有关设置 SageMaker Studio 的更多信息,请参阅 AWS 文档中的使用快速设置加入 Amazon SageMaker 域名

现在,您可以导航到主页,在 SageMaker Studio 的新 Launcher 选项卡中向下滚动,找到地理空间部分。

以下是 Amazon SageMaker 三项关键地理空间功能的概述:

  • Earth Observation jobs(地球观测任务)— 采集、转换和可视化卫星图像数据,做出预测并获得有用的见解。
  • Vector Enrichment jobs(矢量充实任务)— 通过操作丰富您的数据,例如将地理坐标转换为 CSV 文件中的可读地址。
  • Map Visualization(地图可视化)— 可视化从 CSV、JSON 或 GeoJSON 文件上传的卫星图像或地图数据。

让我们深入了解每一个组件!

地球观测工作入门
要开始使用地球观测任务,请在首页上选择创建地球观测作业

您可以根据自己的用例选择一个地理空间操作或机器学习模型。

  • Spectral Index(光谱指数)— 获得表示感兴趣特征丰度的光谱波段组合。
  • Cloud Masking(云遮蔽)— 识别有云和无云像素,获得清晰准确的卫星图像。
  • Land(土地)Cover Segmentation(覆被分割)— 识别卫星图像中的土地覆被类型,例如植被和水。

SageMaker 提供了一系列地理空间功能,包括用于数据转换的内置操作以及预训练的机器学习模型。您可以使用这些模型来了解环境变化和人类活动随时间推移产生的影响,识别云和无云像素,并进行语义分割。

定义作业名称,选择要使用的模型,然后单击右下角的下一步按钮进入第二个配置步骤。

接下来,您可以定义感兴趣区域 (AOI)、要使用的卫星图像数据集以及用于任务的筛选器。左侧屏幕显示感兴趣区域地图,您可以选择地球观测任务进行可视化,右侧屏幕包含卫星图像和 AOI 的过滤器选项。

您可以在筛选器部分选择卫星图像集(美国地质调查局 LANDSAT 或 Sentinel-2 图像)、地球观测任务的日期跨度以及图像属性的筛选器。

我上传了 GeoJSON 格式,将我的 AOI 定义为韩国济州岛汉拿山区域。我选择了所有的任务属性和选项,然后选择创建

成功创建地球观测任务后,会出现一个闪光条,按下查看任务详细信息按钮,我可以在其中查看任务详细信息。

作业完成后,我可以可视化任务输出

该图像是渲染过程中的任务输出,用于从输入的卫星图像中检测土地使用情况。您可以在左侧窗格中看到输入图像、输出图像或来自数据层的 AOI。

显示了用于自然资源管理的土地覆被的自动测绘结果。例如,黄色区域是大海,绿色是云,深橙色是森林,橙色是陆地。

您也可以使用带有地理空间 SDK 的地理空间图像,使用 SageMaker 笔记本执行同样的任务。

文件新建中,选择笔记本,然后在设置笔记本环境中选择图像下拉菜单,然后选择地理空间 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)
# 渲染地图
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 命令行界面(AWS CLI)执行 StartEarthObservationJob API。

在笔记本中创建地球观测工作时,您可以使用额外的地理空间功能。以下是 Amazon SageMaker 支持的其他一些地理空间操作列表:

  • Band Stacking(波段堆叠)— 组合多个光谱特性创建单个图像。
  • Cloud Removal(移除云)— 从卫星图像中移除包含部分云的像素。
  • Geomosaic(地球合并)— 合并多张图像提高保真度。
  • Resampling(再次取样) — 将图像缩放到不同的分辨率。
  • Temporal Statistics(时态统计)— 计算同一区域内多个 GeoTIFF 的时间统计数据。
  • Zonal Statistics(分区统计)— 计算用户定义区域的统计数据。

要了解更多信息,请参阅 AWS 文档中的 Amazon SageMaker 地理空间笔记本 SDKAmazon SageMaker 地理空间能力服务 API 以及 GitHub 存储库中的地理空间示例代码。

执行矢量充实任务和地图可视化
矢量充实任务 (VEJ) 对矢量数据执行操作,例如反向地理编码或地图匹配。

  • Reverse Geocoding(反向地理编码)— 将地图坐标转换为由 Amazon Location Service 提供支持的人类可读地址。
  • Map Matching(地图匹配)— 将 GPS 坐标与路段相匹配。

虽然您需要使用 Amazon SageMaker Studio 笔记本来执行 VEJ,但您可以查看创建的所有任务。

使用 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 的输出,或者在将 VEJ 任务输出导出到 S3 存储桶后使用地图可视化功能。使用地图可视化功能,可以轻松地在地图上显示地理空间数据。

此可视化示例包括 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 地理空间功能的预览版现已在美国西部(俄勒冈州)地区推出。

我们希望在预览使用期间听到更多反馈。尝试一下,请将反馈发送给 AWS re:Post for Amazon SageMaker 或通过常见的 AWS support 联系人发送。

Channy