前言
AI earth是阿里达摩院出的遥感云计算平台,我简单体验下来感觉像是GEE的python版本+遥感深度学习计算平台,整体体验还是挺不错的,尤其是多分类的结果还是挺惊艳的。
平台提供工具箱和notebook两种模式,工具箱整个交互简单易用,这里主要说一下基于notebook的工具箱app调用处理,更多玩法可以参考官方api文档。
权限配置
- 获取AccessKey并授权
第一种 创建RAM用户的AccessKey
- 登录RAM控制台。
- 在左侧导航栏,选择****身份管理** > *用户***。
- 在用户页面,单击目标RAM用户名称。
- 在用户AccessKey区域,单击创建AccessKey。
- 根据界面提示完成安全验证。
- 在 权限管理-授权 页面,选择需要授权的子账号,并选择 AliyunRsimganalysFullAccess 系统权限,即可允许对应子账号使用AI Earth云平台功能。如需购买[AI Earth增值服务](javascript:void(0)),请同时授予子账号 AliyunBSSFullAccess 权限。
notebook提交任务
-
登录后进入平台,点击处理分析选择进入开发者模式,打开运行环境。
-
这里可以点击项目数据上传自己的数据,也可以选择公开数据集,自己上传的数据是有单独的STAC ID的,公开数据也是有全局唯一的STAC ID的,copy要处理数据的STAC ID,后面代码需要用。
具体数据STAC ID查询与导入方式参考https://engine-aiearth.aliyun.com/docs/page/guide?d=c2989d#heading-9
初始化环境
这里把上面获取的accessKey复制粘贴过来。
import time
from Tea.exceptions import TeaException
from alibabacloud_tea_openapi import models
from alibabacloud_aiearth_engine20220609.models import *
from alibabacloud_aiearth_engine20220609.client import Client
config = models.Config(
# 您的AccessKey ID,
access_key_id='*请替换*',
# 您的AccessKey Secret,
access_key_secret='*请替换*',
# 地域ID
region_id='cn-hangzhou',
# 访问的域名
endpoint='aiearth-engine.cn-hangzhou.aliyuncs.com'
)
client = Client(config)
提交AI解译任务
try:
createAIJobRequest = CreateAIJobRequest()
createAIJobRequest.job_name = 'test' # 这里换成自己的项目名称
createAIJobRequest.app = 'land_cover_classification' # 换成自己要调用工具箱的名称,这里以多分类任务为例,不同工具箱对应的名称参考附录
createAIJobRequest.area_threshold = 0
createAIJobRequest.confidence = 10
createAIJobRequestInputs = CreateAIJobRequestInputs()
createAIJobRequestInputs.idx = 1
createAIJobRequestInputsSrc = CreateAIJobRequestInputsSrc()
createAIJobRequestInputsSrc.data_id = '*请替换*' # data_id即为你数据的STAC ID
createAIJobRequestInputs.src = createAIJobRequestInputsSrc
createAIJobRequest.inputs = [createAIJobRequestInputs]
aijob: CreateAIJobResponse = client.create_aijob(createAIJobRequest)
print(aijob.body)
jobId = aijob.body.jobs[0].job_id
except TeaException as e:
# 打印整体的错误输出
print(e)
# 打印错误码
print(e.code)
# 打印错误信息,错误信息中包含
print(e.message)
# 打印服务端返回的具体错误内容
print(e.data)
输出结果为:
{'App': 'land_cover_classification', 'Jobs': [{'JobId': 88609, 'Name': 'api-test', 'Success': True}], 'RequestId': 'EBA6E96A-F55C-52B8-A32B-89257E0C5884'}
可以看到任务ID为88609,状态Success为True等信息。
查询AI解译任务
# 获取任务状态
try:
getJobsRequest = GetJobsRequest()
getJobsRequest.job_ids = [jobId] # 这里换成你自己任务的ID
jobs: GetJobsResponse = client.get_jobs(getJobsRequest)
print(jobs.body)
except TeaException as e:
# 打印整体的错误输出
print(e)
# 打印错误码
print(e.code)
# 打印错误信息,错误信息中包含
print(e.message)
# 打印服务端返回的具体错误内容
print(e.data)
返回结果如下,可以看到任务的一些详细信息。
{'List': [{'App': 'land_cover_classification', 'JobId': 88608, 'JobName': 'api-test', 'JobType': 1, 'OutDataId': 36859, 'OutDataType': 1, 'OutDateType': 1, 'Progress': '100.00%', 'Status': 1, 'SubmitDate': 1684475561515}, 'RequestId': '82593D93-FC8C-5120-B913-A33B70C2C3CA'}
任务处理完成后重新进入平台,点击我的数据—>处理结果数据中,可以看到自己任务状态,点击可以在线卷帘对比查看,也可以下载离线查看。
附录
官方给出的API调用app名称与推荐置信度
app名称 | app说明 | 置信度参考值(低) | 置信度参考值(中) | 置信度参考值(高) |
---|---|---|---|---|
building_extraction | 建筑物提取 | 11.76 | 25 | 40 |
greenhouse_extraction | 大棚提取 | 10 | 25 | 40 |
land_cover_classification | 地物分类 | 10 | 25 | 40 |
pv_plant | 光伏电厂识别 | 10 | 25 | 40 |
barrage | 拦河坝识别 | 10 | 25 | 40 |
construction_change | 通用变化检测 | 10 | 25 | 40 |
multiclass | 变化多分类 | 10 | 25 | 40 |
farmland_extraction_remote_sensing | 地块提取 | 10 | 25 | 40 |
building_change | 建筑物变化检测 | 10 | 25 | 40 |
farmland_change | 农田变化检测 | 10 | 25 | 40 |
remove_cloud_haze | 去云雾处理 | 10 | 25 | 40 |