本文介绍如何将图像上传到图像搜索服务。
背景信息
图像搜索提供两种方式上传图片,一种是通过图像搜索产品API或者SDK,另一种方式是通过OSSImport工具。
OSSImport介绍
OSSImport是阿里云OSS提供的一款将数据迁移至OSS存储空间(Bucket)的工具。您可以将OSSImport部署在本地服务器或云上ECS实例内,轻松将您本地或其它云存储的数据迁移到OSS。
使用OSSImport上传图片具有以下优势:
- 保持图片快速更新到图像搜索引擎。
- 同一个OSS存储空间可供不同环境使用,像开发项目,线上项目等。
- 根据业务需要,更好地组织和管理多种图片的来源。
- 更好地管理复杂环境的项目,例如开发项目,UAT项目等。
- 优化使用网络带宽:一次上传,多次使用。
- 使用这个工具,您可以将图像搜索管理产业化。
图片限制
- 单张图片大小不超过4 MB。
- 图片的长和宽分辨率要求大于100小于等于4096。
操作流程
步骤一:下载OSSImport工具
OSSImport有单机模式和分布式模式两种部署方式。
- 单机模式:当您需要迁移的数据小于30TB时,推荐部署单机模式。您可以将OSSImport部署在任意一台可以访问待迁移数据的机器上,且可以访问OSS的机器上。单击OSSImport下载。
- 分布式模式:当您需要迁移的数据大于30TB时,推荐使用分布式模式。您可以将OSSImport部署在任意多台可以访问您待迁移数据,且可以访问OSS的机器上。单击OSSImport下载。
说明 当您迁移的数据过大时,为了节约时间,您可以将OSSImport部署到与您OSS相同地域的ECS实例上,并通过专线将源数据存放的服务器挂载到阿里云VPC网络中。多台ECS实例将数据通过内网迁移至OSS,会极大的提升数据迁移效率。
步骤二:开通对象存储OSS
具体操作步骤请参见开通OSS服务进行开通。
步骤三:创建存储空间(bucket)
具体操作步骤请参见创建存储空间。
说明 请确保开通的OSS服务以及创建的Bucket与已购买的图像搜索服务在同一个地域。
步骤四:导入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 | 是 | 操作类型。
|
ProductId | String | 是 | 图片唯一标识符。 |
PicName | String | 是 | 图片名称。OSS的Bucket中图片名称。
说明 每行最多只允许填写1个图片名称。若同一个ProductId,对应多个PicName则需要填写多行。
|
CategoryId | Integer | 否 | 类目参考。
|
CustomContent | String | 是 | 用户自定义内容。最多支持4096个字符。 |
IntAttr | Integer | 否 | 整数类型属性。用于查询时设置过滤。 |
StrAttr | String | 否 | 字符串类型属性。最多支持128字符。用于查询时设置过滤。 |
Crop | Boolean | 否 | 是否进行主体识别。默认为true。
说明 服务类型为布料图片搜索时,此参数不生效,默认以整张图进行搜索。
|
Region | String | 否 | 图片的主体区域。格式为x1,x2,y1,y2 ,其中x1和y1是左上角的点,x2和y2是右下角的点。
说明
|
步骤五:授予图像搜索服务访问OSS的权限。
图像搜索服务通过OSS来实现数据批量操作,首次使用需完成账号一键授权。如已完成授权,可跳过此步骤。
步骤六:上传图片
执行结果
- 如果运行失败,单击查看增量历史获得详细信息。更多信息请参见增量任务提交失败的原因都有哪些?
- 图片上传成功之后,您可以单击实例ID,然后单击图片搜索进行测试。