跳转至

图像超分辨率

可将图片智能放大2或4倍,从而获取清晰度更高、细节丰富的图像。

适用场景

可应用于等多种场景,解决原始图片分辨率不足的问题。

配额说明

  • 图像超分辨率API需要创建一个基于Amazon SageMaker的GPU类型实例。如果您AWS账户中对应实例限制不足,则会导致该功能部署异常。您可以在AWS管理控制台上方工具栏点击支持中心,创建支持工单,要求提高Amazon SageMaker服务的实例限额。具体步骤请参阅请求提高配额
  • 方案中默认的AWS Lambda内存约为4GB(4096 MB),如果您AWS账户中AWS Lambda函数限制低于4096 MB,则会导致该部署异常。您可以在AWS管理控制台上方工具栏点击支持中心,创建支持工单,要求提高AWS Lambda服务的内存限额。具体步骤请参阅请求提高配额

API参数说明

  • HTTP 方法: POST

  • Body 请求参数

名称 类型 是否必选 说明
url     String 与 img 参数二选一 图像的 URL 地址。支持 HTTP/HTTPS 和 S3 协议。要求图像格式为 jpg/jpeg/png/bmp ,图像大小建议不超过1920 * 1080,在开启人像增强的情况下,图像大小建议不超过1280 * 720。AWS Lambda版本方案由于性能限制,图像大小建议不超过400 * 400
img String 与 url 参数二选一 进行 Base64 编码的图像数据
scale Integer 图像放大倍数,支持放大倍数为2或4,默认值为2
face Bool 当设置为True时,额外开启人脸增强,默认值为False。(仅支持GPU版本部署方式)
  • 请求 Body 示例
{
"url": "图像的URL地址",
"scale" : 2
}
{
"img": "Base64编码的图像数据",
"scale" : 4
}
  • 返回参数
名称 类型 说明
result String 按比例放大后 Base64 编码的图像数据
  • 返回示例
{
  "result": "按比例放大后的Base64编码的图像数据"
}

开始使用

API资源浏览器

前提条件

通过AWS CloudFormation部署解决方案时,您需要:

  • 设置参数API Exploreryes
  • 设置参数API Gateway AuthorizationNONE

否则,在API资源浏览器中只能看到该API的参考定义,而不能进行在线测试等操作。

操作步骤

  1. 访问AWS CloudFormation控制台
  2. 从堆栈列表中选择方案的根堆栈,而不是嵌套堆栈。列表中嵌套堆栈的名称旁边会显示嵌套(NESTED)。

  3. 打开输出(Outputs)标签页,找到APIExplorer对应的URL。

  4. 点击URL访问API资源浏览器。页面将显示在部署解决方案时选中的API。

  5. 点击API右侧的向下箭头,展开显示API标准模型的请求方法。

  6. 点击右侧的测试(Try it out)按钮,并在Request body中输入正确的Body请求数据进行测试,并查看测试结果。
  7. 确认格式正确后,点击下方的Execute
  8. Responses body中查看返回的JSON结果。您还可以通过右侧复制或下载按钮保存处理结果。
  9. Response headers中查看响应头的相关信息。
  10. (可选)点击Execute右侧Clear按钮,即可清空Request bodyResponses测试结果。

Postman(AWS_IAM认证)

  1. 访问AWS CloudFormation控制台。
  2. 从堆栈列表中选择方案的根堆栈。
  3. 打开输出标签页,找到以 ImageSuperResolution 为前缀的URL。
  4. 在Postman中新建标签页,并把URL粘贴到地址栏,选择POST作为HTTP调用方法。

  5. 打开Authorization配置,在下拉列表里选择Amazon Web Service Signature,并填写对应账户的AccessKey、SecretKey和Amazon Web Service Region(例如,cn-north-1或cn-northwest-1)。

  6. 打开Body配置项,选中raw和JSON数据类型。

  7. 在Body中输入测试数据,单击Send按钮即可看到相应返回结果。

{
  "url": "图像的URL地址"
}

cURL

  • Windows
curl --location --request POST "https://[API_ID].execute-api.[AWS_REGION].amazonaws.com/[STAGE]/image_super_resolution" ^
--header "Content-Type: application/json" ^
--data-raw "{\"url\": \"图像的URL地址\"}"
  • Linux/MacOS
curl --location --request POST 'https://[API_ID].execute-api.[AWS_REGION].amazonaws.com/[STAGE]/image_super_resolution' \
--header 'Content-Type: application/json' \
--data-raw '{
  "url":"图像的URL地址"
}'

Python(AWS_IAM认证)

import requests
import json
from aws_requests_auth.boto_utils import BotoAWSRequestsAuth

auth = BotoAWSRequestsAuth(aws_host='[API_ID].execute-api.[AWS_REGION].amazonaws.com',
                           aws_region='[AWS_REGION]',
                           aws_service='execute-api')

url = 'https://[API_ID].execute-api.[AWS_REGION].amazonaws.com/[STAGE]/image_super_resolution'
payload = {
    'url': '图像的URL地址'
}
response = requests.request("POST", url, data=json.dumps(payload), auth=auth)
print(json.loads(response.text))

Python(NONE认证)

import requests
import json

url = "https://[API_ID].execute-api.[AWS_REGION].amazonaws.com/[STAGE]/image_super_resolution"

payload = json.dumps({
  "url": "图像的URL地址"
})
headers = {
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

Java

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n  \"url\":\"图像的URL地址\"\n}");
Request request = new Request.Builder()
  .url("https://xxxxxxxxxxx.execute-api.xxxxxxxxx.amazonaws.com/[STAGE]/image_super_resolution")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();

成本预估

您需要承担运行解决方案时使用亚马逊云科技各个服务的成本费用。截至这次发布的版本,影响解决方案的成本因素主要包括:

  • Amazon API Gateway调用次数
  • Amazon API Gateway数据输出量
  • Amazon CloudWatch Logs存储量
  • Amazon Elastic Container Registry存储量
  • Amazon SageMaker终端节点实例类型
  • Amazon SageMaker终端节点数据输入量
  • Amazon SageMaker终端节点数据输出量

示例

以美国东部(俄亥俄州)区域(us-east-2)为例,处理一张图按1秒计算,处理1百万图片。其中Amazon SageMaker终端节点实例开启时会一直计费。

使用本方案的成本费用如下表所示:

服务 用量 费用
Amazon API Gateway 调用百万次 $3.5
Amazon API Gateway 数据输出以每次4MB计算,$0.09/GB $360
Amazon CloudWatch Logs 每次10KB,$0.50/GB $0.05
Amazon Elastic Container Registry 0.5GB存储,每月每GB$0.1 $0.05
Amazon SageMaker 终端节点实例需要运行278小时,ml.g4dn.xlarge $0.736/小时 $204.61
Amazon SageMaker 终端节点数据输入以每次1MB计算,$0.016/GB $16
Amazon SageMaker 终端节点数据输出以每次4MB计算,$0.016/GB $64
合计 $648.21

卸载部署

您可以通过AWS CloudFormation卸载 图像超分辨率 功能,具体步骤请见部署解决方案:更新AWS CloudFormation堆栈(添加或删除AI功能),并在参数部分确认 ImageSuperResolution 参数设置为no

卸载时间:20 分钟