全部产品
云市场

图像上传

更新时间:2020-06-28 13:21:13

本文介绍如何将图像上传到图像搜索服务。

图片上传方式

图像搜索有两种方式可以实现图片上传,一种是通过图像搜索产品API,另一种方式是通过OSSImport这个工具来实现图片上传。

  • 如果您希望上传少量的图片,建议您使用API方式。详情请参考新增图片。如果您选用此方式,请忽略以下内容。
  • 如果您是企业级的用户,或者您希望批量上传图片,建议您使用OSSImport工具进行图片上传。具体步骤请参考操作步骤

工具简介

OSSImport是阿里云OSS提供的一款将数据迁移至OSS存储空间(Bucket)的工具。您可以将OSSImport部署在本地服务器或云上ECS实例内,轻松将您本地或其它云存储的数据迁移到OSS。

使用OSSImport上传图片具有以下优势:

  • 保持图片快速更新到图像搜索引擎。
  • 同一个OSS存储空间可供不同环境使用,像开发项目,线上项目等。
  • 根据业务需要,更好地组织和管理多种图片的来源。
  • 更好地管理复杂环境的项目,比如,开发项目,UAT项目等。
  • 优化使用网络带宽:一次上传,多次使用。
  • 使用这个工具,您可以将图像搜索管理产业化。

图片上传操作步骤

前提条件

  • 单张上传的图片小于2MB。
  • 图片的高度和宽度在200px到1024px之间,更高的分辨率对于提高搜索的准确率没有作用。

操作步骤

  1. 下载OSSImport工具。

    OSSImport有单机模式和分布式模式两种部署方式。

    • 单机模式:当您需要迁移的数据小于30TB时,推荐部署单机模式。您可以将OSSImport部署在任意一台可以访问您待迁移的数据,且可以访问OSS的机器上。点击这里下载
    • 分布式模式:当您需要迁移的数据大于30TB时,推荐使用分布式模式。您可以将OSSImport部署在任意多台可以访问您待迁移数据,且可以访问OSS的机器上。点击这里下载。

    当您待迁移的数据过大时,为了节约时间,您可以将OSSImport部署到与您OSS相同地域的ECS实例上,并通过专线将源数据存放的服务器挂载到阿里云VPC网络中。多台ECS实例将数据通过内网迁移至OSS,会极大的提升数据迁移效率。

  2. 开通对象存储OSS。

    如果您尚未开通OSS,请参考OSS官方开通文档进行开通。

  3. 创建相应的存储空间(bucket),请参考OSS创建存储空间。请确保开通的OSS服务以及创建的bucket与已购买的图像搜索服务在同一个地域。

  4. 导入数据。

    完成存储空间(bucket)创建后,需要将增量的数据导入到您的 bucket 中,为此我们约定如下:

  • 图像搜索服务不限定路径(Path),您可以自定义路径,在 提交增量 步骤中传入即可。
  • 在您定义的路径下需要创建 increment.meta 文件,以存储增量任务相关内容,具体内容格式为:
    • 每行对应一个商品(商品图片搜索)或者一张图片(通用图片搜索)。
    • 每个商品/图片由Json格式表示,具体字段含义如下表:
字段名 类型 是否必须 含义 说明
OperationType String 操作类型 ADD表示新增商品/图片。

DELETE表示删除商品/图片。
ProductId String 商品/图片唯一标识符 对于商品图片搜索为商品 ID。

对于通用图片搜索为图片名称。
CategoryId Integer 类目信息 图片类目:类目参考

说明

1. 对于商品搜索:若设置类目,则以设置的为准;若不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取 。

2. 对于布料、商标、通用搜索:不论是否设置类目,系统会将类目设置为88888888。
CustomContent String 用户自定义内容 用户自定义的内容,最多支持 4096个字符。

说明: 查询时会返回该字段。例如可添加图片的描述等文本。
IntAttr Integer 整数类型属性 可用于查询时过滤,查询时会返回该字段。

说明: 例如不同的站点的图片/不同用户的图片,可以设置不同的IntAttr,查询时通过过滤来达到隔离的目的。详情请见:条件过滤
StrAttr String 字符串类型属性 最多支持 128个字符。可用于查询时过滤,查询时会返回该字段。详情请见:条件过滤
PicName String 图片列表 此处为需要上传的图片名称,系统会处理对应的图片。

说明:最多只允许填写3个图片名称。
Crop Boolean 主体识别 是否需要进行主体识别,默认为true。

说明

1.为true时,由系统进行主体识别,以识别的主体进行搜索,主体识别结果可在Response中获取。

2. 为false时,则不进行主体识别,以整张图进行搜索。

3. 对于布料图片搜索,此参数会被忽略,系统会以整张图进行搜索。
Region String 主体区域 图片的主体区域,格式为 x1,x2,y1,y2, 其中 x1,y1 是左上角的点,x2,y2是右下角的点。

说明

1.若用户设置了Region,则不论Crop参数为何值,都将以用户输入Region进行搜索。

2. 对于布料图片搜索,此参数会被忽略,系统会以整张图进行搜索。
  • increment.meta参考示例:

    1. {"OperationType":"ADD","ProductId":"1000", "CategoryId":0, "IntAttr":0, "StrAttr":"value1", "CustomContent":"k1:v1,k2:v2,k3:v3", "Region":"20,40,60,80", "PicName":"girl_cloth1.jpg"}
    2. {"OperationType":"ADD","ProductId":"1001", "CategoryId":1,"CustomContent":"k1:v1,k2:v2,k3:v3", "PicName":"girl_cloth3.jpg"}
    3. {"OperationType":"ADD","ProductId":"1002", "CategoryId":0, "CustomContent":"k1:v1,k2:v2,k3:v3", "Crop": false, "PicName":"girl_cloth4.jpg"}
    4. {"OperationType":"ADD","ProductId":"1003", "CustomContent":"k1:v1,k2:v2,k3:v3", "PicName":"girl_cloth6.jpg"}
    5. {"OperationType":"DELETE","ProductId":"1004", "PicName":"fengyi.jpg"}
    6. {"OperationType":"DELETE","ProductId":"1005"}
  • increment.meta 文件中涉及的图片存放在 increment.meta 文件所在的同一路径下


5. 创建角色。

a) 登录RAM控制台,选择RAM角色管理 > 新建RAM角色

1

b) 选择角色的可信实体类型为阿里云服务

2

c) 填写角色名称,并配置授信服务为图像搜索

3


6. 创建权限策略。

创建完角色之后,角色是没有任何权限的,需要创建一个权限策略来为服务账号来授予相应的权限。 以用户的 bucket 为 imagesearch-increment,文件存储路径为 /increment 为例,权限策略如下:

  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": [
  7. "oss:GetObject"
  8. ],
  9. "Resource": [
  10. "acs:oss:*:*:imagesearch-increment/increment/*"
  11. ]
  12. }
  13. ]
  14. }


7. 将权限策略指派给相应的角色。

a) 在RAM控制台上,选择权限策略管理 > 新建权限策略

4

b) 填写策略名称,选择脚本配置,编辑策略内容,并单击确认

您可以将步骤6创建的权限策略复制到策略内容编辑区域。

5

c) 返回RAM控制台首页,选择RAM角色管理 。在RAM角色名称列,找到创建的角色,并单击添加权限

6

d) 选择自定义权限策略,找到创建的权限策略,单击策略名称,并单击确定

您也可以通过输入关键字来搜索权限策略名称。

7


8. 返回RAM角色管理页面,单击上述新建的角色名称,获取ARN字段,示例如下:

8


9. 连通OSS拉取图片。

a) 开通Image Search,创建实例。

b) 在实例列表页或者实例详情页单击更多>增量按钮,填入相应信息后,单击提交按钮,将触发后台服务从OSS上拉取数据,进行更新。

13

  • ARN:在RAM角色管理页面获取的ARN字段。
  • Bucket 名称:OSS 上创建的相应的 bucket 名称。

    请确保开通的OSS服务与已购买的图像搜索服务在同一个地域。

  • 数据路径:增量数据存储的路径。路径以/符号开头, 如:/imagesearch。

    任务运行完之后,您可以点击实例ID查看增量任务运行的状态:

    10

    如果运行失败,点击查看增量历史获得详细信息。更多信息,请参考常见问题——增量任务提交失败的原因都有哪些?

    11


10. 开始测试任务。

图片上传成功之后,您可以单击实例ID,然后单击测试服务进行图片搜索测试。

12