如何利用图像搜索,在36万数据中快速的add?

38ab50a2440d0711ff2a124cf948914b.png如何利用图像搜索,在36万数据中快速的add?

展开
收起
我是三好学生 2023-06-28 09:05:16 75 分享 版权
阿里云 AI 助理回答

要在图像搜索服务中快速向包含36万数据的实例中添加图片,您可以根据数据规模和实时性需求选择合适的方式。以下是详细的步骤和建议:


1. 确认实例规格与QPS限制

在使用图像搜索服务时,首先需要了解您的实例规格以及新增图片的QPS(每秒查询数)限制: - 如果您的实例规格为10W图片容量,默认的实时新增QPS为1。 - 其他规格的实例,默认的实时新增QPS为5

对于36万数据量的场景,如果采用实时新增方式,可能需要较长时间完成。因此,建议优先考虑离线新增方式。


2. 使用离线新增(推荐)

离线新增适用于大规模数据操作(百万级),并且是免费服务,QPS远高于实时新增。以下是具体操作步骤:

前提条件

  • 确保您的OSS Bucket与图像搜索实例位于同一区域。例如,如果您的图像搜索实例在杭州区域,则OSS Bucket也必须在杭州区域。

操作步骤

  1. 准备图片数据

    • 将图片上传至阿里云对象存储(OSS)Bucket中。
    • 确保图片名称符合要求,最多支持256个字符。
  2. 创建increment.meta文件

    • 该文件用于描述图片的操作类型(新增或删除)及相关信息。
    • 文件格式为JSON,每个图片对应一个JSON对象。例如:
      {"OperationType": "ADD", "ProductId": "1000", "PicName": "shoes1.jpg"}
      {"OperationType": "ADD", "ProductId": "1001", "PicName": "shoes2.jpg"}
      
    • 参数说明:
      • OperationType:操作类型,取值为ADD(新增)或DELETE(删除)。
      • ProductId:商品ID,最多支持256个字符。
      • PicName:图片名称,OSS中的图片文件名,最多支持256个字符。
  3. 提交批量任务

    • 在图像搜索控制台中,选择批量操作功能。
    • 上传increment.meta文件,并指定对应的OSS Bucket。
    • 提交任务后,系统会自动将图片从OSS导入到图像搜索实例中。
  4. 监控任务进度

    • 在控制台中查看批量任务的执行状态,确保所有图片成功入库。

3. 使用SDK进行实时新增(可选)

如果您的数据量较小或需要实时新增,可以使用官方提供的SDK进行操作。以下是基于不同语言的SDK示例:

通用配置

  • Endpoint:根据实例所在区域设置内网或外网访问地址。例如,实例在杭州区域时,内网地址为imagesearch-vpc.cn-hangzhou.aliyuncs.com
  • InstanceName:填写图像搜索实例名称(非实例ID)。
  • ProductId + PicName:唯一确定一张图片。如果多次添加相同组合的图片,以最后一次为准,前面的图片会被覆盖。

代码示例

以下为不同语言的SDK调用示例:

PHP SDK
use AlibabaCloud\SDK\ImageSearch\V20210501\ImageSearch;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;

$config = new Config([
    "accessKeyId" => "<your-access-key-id>",
    "accessKeySecret" => "<your-access-key-secret>",
    "regionId" => "cn-hangzhou",
    "endpoint" => "imagesearch-vpc.cn-hangzhou.aliyuncs.com"
]);
$client = new ImageSearch($config);

$request = new AddImageAdvanceRequest();
$request->instanceName = "your-instance-name";
$request->productId = "testProduct";
$request->picName = "testPic.jpg";
$request->picContentObject = new Stream(fopen("<filePath>", 'r+'));

try {
    $response = $client->addImageAdvance($request);
    var_dump($response->toMap());
} catch (TeaUnableRetryError $e) {
    var_dump($e->getLastException(), $e->getLastRequest());
}
Node.js SDK
const fs = require('fs');
const imagesearch = require("@alicloud/imagesearch-20210501");

const client = new imagesearch({
    accessKeyId: "<your-access-key-id>",
    accessKeySecret: "<your-access-key-secret>",
    regionId: "cn-hangzhou",
    protocol: "http"
});

async function demo() {
    const picContent = fs.createReadStream("D:/123.jpg");
    const request = new imagesearch.AddImageAdvanceRequest({
        instanceName: "your-instance-name",
        productId: "testProduct",
        picName: "testPic.jpg",
        picContentObject: picContent
    });

    try {
        const response = await client.addImageAdvance(request);
        console.log(response);
    } catch (err) {
        console.error(err);
    }
}
demo();
Java SDK
import com.aliyun.imagesearch20210501.Client;
import com.aliyun.imagesearch20210501.models.AddImageAdvanceRequest;

public class Main {
    public static void main(String[] args) throws Exception {
        Client client = new Client(new Config()
            .setAccessKeyId("<your-access-key-id>")
            .setAccessKeySecret("<your-access-key-secret>")
            .setRegionId("cn-hangzhou")
            .setEndpoint("imagesearch-vpc.cn-hangzhou.aliyuncs.com"));

        AddImageAdvanceRequest request = new AddImageAdvanceRequest();
        request.setInstanceName("your-instance-name");
        request.setProductId("testProduct");
        request.setPicName("testPic.jpg");
        request.setPicContentObject(new File("D:/123.jpg"));

        try {
            var response = client.addImageAdvance(request);
            System.out.println(response.getBody());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4. 注意事项

  • 图片格式与大小:支持PNG、JPG、JPEG、BMP、GIF、WEBP、TIFF、PPM格式,单张图片大小不超过4MB。
  • 主体识别:如果需要对图片进行主体识别,可以在请求中设置Crop参数为true
  • 类目预测:如果不指定图片类目,系统会自动进行类目预测,并在响应中返回预测结果。

通过以上方法,您可以高效地将36万数据快速添加到图像搜索实例中。如果仍有疑问,可以通过钉钉群(35035130)获取技术支持。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

基于阿里云深度学习技术,进行视觉内容搜索,在指定图像库中搜索出相同或相似的视觉信息,适用于内容比对、内容精确查找、相似素材搜索等场景。

还有其他疑问?
咨询AI助理