本文档介绍如何批量新增和删除图片。

背景信息

图像搜索与阿里云OSS服务打通,可以通过批量操作功能将OSS中的图片批量导入到图像搜索中,同时也可以通过批量操作功能批量删除已经入库的图片数据信息。批量操作适用于较大规模的离线图片数据操作。其特点为:稳定性高、速度快、操作方便等。如果涉及到大规模图片新增或者删除,建议采用批量操作方式进行。

批量操作流程

  1. 开通OSS服务。
  2. 将图片导入到OSS中。
  3. 新建increment.meta文件。
  4. 授予图像搜索服务访问OSS的权限。
  5. 在图像搜索上创建批量任务。

开通OSS服务

如果您尚未开通OSS服务,请参见开通OSS服务进行开通。开通服务后,您还需要创建存储空间Bucket,具体请参见创建存储空间
说明
  • 开通的OSS为独立计费,具体计费方式请参见计费概述
  • 请确保开通的OSS服务与已购买的图像搜索服务在同一地域,否则将无法使用批量操作功能。

将图片导入到OSS中

导入图片

具体操作请参见上传文件
说明 图片存放路径可以自定义,只需要在创建批量任务时设置图片路径即可。

新建increment.meta文件

在OSS服务中存放图片的路径下,新建increment.meta文件,该文件用来存储批量任务相关内容。
说明 increment.meta文件中涉及的图片必须和increment.meta文件在同一路径下,否则批量操作会失败。
文件参考示例如下:
{"OperationType": "ADD","ProductId": "1000","PicName": "girl_cloth1.jpg","CategoryId": 0,"IntAttr": 0,"StrAttr": "value1","CustomContent": "k1:v1,k2:v2,k3:v3","Region": "20,40,60,80"}
{"OperationType": "ADD","ProductId": "1000","PicName": "girl_cloth2.jpg","CategoryId": 0,"IntAttr": 0,"StrAttr": "value2","CustomContent": "k1:v1,k2:v2,k3:v3","Region": "20,40,60,80"}
{"OperationType": "ADD","ProductId": "1001","PicName": "girl_cloth3.jpg","CategoryId": 1,"CustomContent": "k1:v1,k2:v2,k3:v3"}
{"OperationType": "ADD","ProductId": "1002","PicName": "girl_cloth4.jpg","CategoryId": 0,"CustomContent": "k1:v1,k2:v2,k3:v3","Crop": false}
{"OperationType": "ADD","ProductId": "1003","PicName": "girl_cloth7.jpg","CustomContent": "https://www.aliyun.com/imagesearch/girl_cloth7.jpg"}
{"OperationType": "ADD","ProductId": "1003","PicName": "girl_cloth6.jpg","CustomContent": "k1:v1,k2:v2,k3:v3"}
{"OperationType": "DELETE","ProductId": "1004","PicName": "fengyi.jpg"}
{"OperationType": "DELETE","ProductId": "1005"}
每个图片由JSON格式表示,具体字段含义如下表所示:
参数 类型 是否必选 说明
OperationType String 操作类型。
  • ADD:新增图片。
  • DELETE:删除图片。
ProductId String 图片唯一标识符。
PicName String 图片名称。OSS的Bucket中图片名称。
说明 每行最多只允许填写1个图片名称。若同一个ProductId,对应多个PicName则需要填写多行。
CategoryId Integer 类目参考
  • 对于商品搜索,如果设置类目,则以设置的为准,并且设置的类目必须在类目参考的范围之内,否则会入库失败;如果不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取。
  • 对于布料、商标、通用搜索,不论是否设置类目,系统会将类目设置为88888888。
CustomContent String 用户自定义内容。最多支持4096个字符。
IntAttr Integer 整数类型属性。用于查询时设置过滤。
StrAttr String 字符串类型属性。最多支持128字符。用于查询时设置过滤。
Crop Boolean 是否进行主体识别。默认为ture。
  • true:系统自动进行主体识别,以识别的主体进行搜索。
  • false:不进行主体识别,以整张图进行搜索。
说明 服务类型为布料图片搜索时,此参数不生效,默认以整张图进行搜索。
Region String 图片的主体区域。格式为x1,x2,y1,y2,其中x1和y1是左上角的点,x2和y2是右下角的点。
说明
  • 若设置了该参数,则Crop参数不生效,以该设置为准。
  • 服务类型为布料图片搜索时,此参数不生效,默认以整张图进行搜索。

授予图像搜索服务访问OSS的权限

图像搜索服务通过OSS来实现数据批量操作,需要您通过STS(Security Token Service)为图像搜索服务账号授权。

  1. 创建RAM角色。
    1. 登录RAM控制台
    2. 单击RAM角色管理 > 创建RAM角色
      批量操作-创建RAM角色
    3. 角色类型选择阿里云服务
      批量操作-阿里云服务
    4. 配置角色信息。
      • 角色类型:选择为普通服务角色
      • 角色名称:自定义设置。本文示例设置为imagesearch-test。
      • 选择受信服务:选择为图像搜索
      批量操作-创建RAM角色
  2. 创建权限策略。
    1. 单击权限管理 > 权限策略管理
    2. 单击创建权限策略
      批量操作-新建权限策略
    3. 编辑权限策略内容。
      • 设置策略名称。
      • 选择配置模式脚本配置。策略内容如下:
        {
          "Version": "1",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "oss:GetObject"
              ],
              "Resource": [
                "acs:oss:*:*:${bucket}/${path}/*"
              ]
            }
          ]
        }
        • ${bucket}:表示您在OSS上创建的Bucket。例如imagesearch-increment。
        • ${path}:表示您的增量文件存储的路径。例如/increment。
      批量操作-新建策略
  3. 进行授权。
    1. 在RAM控制台单击RAM角色管理
    2. 单击创建的RAM角色。
      授权操作
    3. 单击添加权限
      添加权限
    4. 单击自定义策略并选择已创建的权限策略。
      批量操作-授权操作
    5. 在详情页可以看到已经添加的自定义权限策略。
      查看自定义权限策略

新建批量任务

  1. 登录图像搜索控制台
  2. 选择目标服务类型和目标实例。
  3. 单击批量操作页签。
    批量操作
  4. 单击新建批量任务
    新建批量任务
  5. 设置批量任务参数。
    • 资源名称(Arn)
      查看方式如下所示。批量操作-资源名称
    • Bucket名称
      OSS上创建的相应的Bucket名称。
      说明 请确保开通的OSS服务与已购买的图像搜索服务在同一个地域。
    • 数据路径
      需要上传的图片和increment.meta文件的存储路径。
      说明 路径以/开头,例如/imagesearch
      批量操作-数据路径

后续步骤

在实例详情页,查看所有批量任务的信息。批量任务状态为成功后,用户可以查看相应的提示信息:查看批量任务结果
  • 如果提示信息为“部分照片处理失败,已为您分离,点击下载”,则表明该增量任务中有部分图片处理失败,用户可以下载相应文件查看处理失败的原因。
  • 如果提示信息为成功,则表明该任务中所有的图片均已处理成功。