图像搜索可以通过批量操作功能批量导入阿里云OSS中的图片,或批量删除已经入库的图片,适用于较大规模的离线图片数据操作,稳定性高、速度快、操作方便。本文为您介绍如何批量新增和删除图片。

批量操作流程

  1. 开通OSS服务
  2. 将图片导入到OSS中
  3. 新建increment.meta文件
  4. 图像搜索服务授权
  5. 新建批量任务

开通OSS服务

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

将图片导入到OSS中

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

新建increment.meta文件

在OSS服务中存放图片的路径下,新建increment.meta文件,该文件用来存储批量操作任务相关内容。
说明
  1. increment.meta文件中涉及的图片必须和increment.meta文件在同一Bucket下,否则批量操作会失败。
  2. increment.meta文件名称是固定的,图像搜索将根据此文件名称读取批量操作相关内容,不要擅自修改文件名称,否则会操作失败。
  3. 图像搜索批量操作支持同一Bucket,不同路径(path)图片的批量操作,例如:Bucket为imagesearch,increment.meta文件在此Bucket的根目录下,path为girlCloth,图片在此path目录下,图片名称为girl_cloth8.jpg,则meta文件中PicName应写为“PicName":"girlCloth/girl_cloth8.jpg",注意:必须写成"girlCloth/girl_cloth8.jpg",在girlCloth前面和girl_cloth8.jpg后面都不能加正斜线(/)。如果有多级目录按照此逻辑依次类推。
  4. 在OSS中的图片名称后缀必须填写,例如图片名称为girl_cloth10.jpg,不能写为"PicName":"girl_cloth10",必须写为"PicName":"girl_cloth10.jpg",否则会处理失败。
文件参考示例如下:
{"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": "ADD","ProductId": "1006","PicName": "girlCloth/girl_cloth10.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 图片唯一标识符,最多支持512个字符。
PicName String 图片名称。OSS的Bucket中图片名称。最多支持512个字符。
重要
  1. 每行最多只允许填写1个图片名称。若同一个ProductId,对应多个PicName则需要填写多行。
  2. 图片名称必须填写后缀,例如:girl_cloth.jpg,不能写为girl_cloth,必须写为girl_cloth.jpg,否则会处理失败。
  3. 如果图片具有相同的商品ID+图片名称,则以最后一次添加为准。即如果图片具有相同的商品ID+图片名称,则不管图片本身是否相同,后一张图片都会覆盖前一张图片。
  4. 新增图片具体要求如下
    • 图片大小要求不超过4 MB。
    • 图片格式:PNG、JPG、JPEG、BMP、GIF、WEBP、TIFF、PPM。
    • 传输等待时间不超过5秒。
    • 服务类型为商品图片搜索、通用图片搜索、家具家居图片搜索、工业五金图片搜索时,图片长和宽像素要求大于等于100且小于等于4096px。
    • 图片中不能包含旋转信息。
CategoryId Integer 更多说明,请参见类目参考
  • 对于商品搜索,如果设置类目,则以设置的为准,并且设置的类目必须在类目参考的范围之内,否则会入库失败。
  • 如果不设置类目,将由系统进行类目预测,预测的类目结果可在Response中获取。
  • 对于通用搜索、版权图片搜索、工业五金、家具家居图片搜索,不论是否设置类目,系统会将类目设置为88888888。
CustomContent String 用户自定义内容。最多支持4096个字符。
说明 图片的CustomContent会在搜索结果中自动关联出来。通过CustomContent字段,您可以填写图片的URL地址,图片额外附加信息等,以便与您的业务关联。
IntAttr Integer 整数类型属性。用于查询时设置过滤。
说明 整型类型属性与图片查询时的过滤条件组合使用,以起到过滤查询的功能。请参考条件过滤
StrAttr String 字符串类型属性。最多支持128字符。用于查询时设置过滤。
说明 字符串类型属性与图片查询时的过滤条件组合使用,以起到过滤查询的功能。请参考条件过滤
Crop Boolean 是否进行主体识别。默认为true。
  • true:系统自动进行主体识别,以识别的主体进行搜索。
  • false:不进行主体识别,以整张图进行搜索。
Region String 图片的主体区域。格式为x1,x2,y1,y2,其中x1和y1是左上角的点,x2和y2是右下角的点。
说明

若设置了该参数,则Crop参数不生效,以该设置为准。

图像搜索服务授权

图像搜索服务通过OSS来实现数据批量操作,首次使用需完成账号一键授权。如已完成授权,可跳过此步骤。

  1. 登录图像搜索控制台
  2. 选择目标服务类型和目标实例。
  3. 单击批量操作页签。
    批量操作
  4. 单击新建批量任务,在对话框单击确认一键授权
    一键授权
  5. 云资源访问授权页面单击同意授权
    同意授权

新建批量任务

  1. 登录图像搜索控制台
  2. 选择目标服务类型和目标实例。
  3. 单击批量操作页签。
    批量操作
  4. 单击新建批量任务
    新建批量任务
  5. 设置批量任务参数。
    • 所属区域

      实例所在区域。

    • Bucket名称
      OSS上创建的相应的Bucket名称。
      重要 请确保开通的OSS服务与已购买的图像搜索服务在同一个地域。
    • 数据路径
      需要上传的图片和increment.meta文件的存储路径。批量操作-数据路径
    • meta文件

      需要处理图片的列表文件,支持检测是否存在,文件名为increment.meta

    • 完成后信息回调
      输入回调地址,仅支持HTTP或者HTTPS开头。
      {
        "finishTime": "2021-05-19 17:50:00",
        "instanceId": "imagesearch-cn-xxxx",
        "instanceName": "instanceName",
        "message": "success",
        "processResultUrl": "https://image-search-task-info.oss-cn-shanghai.aliyuncs.com/yyyyyyyyyy",
        "status": "NORMAL",
        "taskId": 111
      }
      字段名 描述
      finishTime 完成时间,精确到秒。
      instanceName 图像搜索实例名称。
      instanceId 图像搜索实例ID。
      status 任务执行结果,NORMAL为正常,FAIL为执行失败。
      taskId 任务ID。
      message 信息描述;success为成功。
      processResultUrl 错误结果下载。

后续步骤

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