开发者社区> taro_秋刀鱼> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云视觉智能开放平台--视觉搜索(图像搜索)使用教程

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

概述

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

Step By Step

1、服务开通,参考链接:阿里云视觉智能开放平台使用简明教程

2、目前提供图像搜索相关的7个API能力;

3、操作流程
_

4、Code Sample

  • 4.1 pom.xml
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.1</version>
        </dependency>
  • 4.2 Java Code
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;

public class DemoSearch {

    static IAcsClient client = null;

    public static void main(String[] args) {

        // ccess Key ID、Access Key Secret 获取参考:https://yq.aliyun.com/articles/693979
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-shanghai",             //默认
                "LTAI9r2Z********",         //您的Access Key ID
                "W4SPz7p4McBhhc****************");    //您的Access Key Secret

        client = new DefaultAcsClient(profile);

        String dbName = "searchdemo";
//        createImageDb(client,dbName);
//        deleteImageDb(client, dbName);

//        deleteImage(client, dbName, "1");
//        deleteImage(client, dbName, "2");
//        deleteImage(client, dbName, "3");

//        listImageDbs(client);

        String imageUrl1 = "https://taroshanghai.oss-cn-shanghai.aliyuncs.com/searchpictest/changcheng.jpg";
        String imageUrl2 = "https://taroshanghai.oss-cn-shanghai.aliyuncs.com/searchpictest/erfeiertieta.jpg";
        String imageUrl3 = "https://taroshanghai.oss-cn-shanghai.aliyuncs.com/searchpictest/jingtian2.jpeg";

//        addImage(client,dbName,"1","图搜图片1",imageUrl1);
//        addImage(client,dbName,"2","图搜图片2",imageUrl2);
//        addImage(client,dbName,"3","图搜图片3",imageUrl3);
//        searchImage(client,imageUrl1,2,dbName);

        listImages(client,dbName);
    }


    /**
     * 创建图片数据库
     * @param client client
     * @param name 数据库名称
     */
    public static void createImageDb(IAcsClient client, String name)
    {
        CommonRequest commonRequest = new CommonRequest();
        commonRequest.setSysAction("CreateImageDb");
        commonRequest.putBodyParameter("Name",name);
        commonRequest.setSysMethod(MethodType.POST);
        commonRequest.setSysDomain("imgsearch.cn-shanghai.aliyuncs.com");
        commonRequest.setSysVersion("2020-03-20");

        CommonResponse response = null;
        try {
            response = client.getCommonResponse(commonRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println("创建图片数据库:");
        System.out.println(response.getData());
    }


    /**
     * 查看数据库的列表
     * @param client
     */
    public static void listImageDbs(IAcsClient client)
    {
        CommonRequest commonRequest = new CommonRequest();
        commonRequest.setSysVersion("2020-03-20");
        commonRequest.setSysAction("ListImageDbs");
        commonRequest.setSysMethod(MethodType.POST);
        commonRequest.setSysDomain("imgsearch.cn-shanghai.aliyuncs.com");

        CommonResponse response = null;
        try {
            response = client.getCommonResponse(commonRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println("查看数据库的列表:");
        System.out.println(response.getData());
    }

    /**
     * 为指定数据库添加图片数据
     * @param client
     * @param dbName 数据库名称
     * @param entityId 实体ID,可以作为数据分组的ID
     * @param extraData 自定义数据
     * @param imageUrl 图片地址,必须是同Region的OSS图片地址
     */
    public static void addImage(IAcsClient client, String dbName, String entityId, String extraData, String imageUrl)
    {
        CommonRequest commonRequest = new CommonRequest();
        commonRequest.setSysVersion("2020-03-20");
        commonRequest.setSysAction("AddImage");
        commonRequest.setSysMethod(MethodType.POST);
        commonRequest.setSysDomain("imgsearch.cn-shanghai.aliyuncs.com");
        commonRequest.putBodyParameter("DbName", dbName);
        commonRequest.putBodyParameter("EntityId", entityId);
        commonRequest.putBodyParameter("ExtraData", extraData);
        commonRequest.putBodyParameter("ImageUrl", imageUrl);

        CommonResponse response = null;
        try {
            response = client.getCommonResponse(commonRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println("为指定数据库添加图片数据:");
        System.out.println(response.getData());
    }

    /**
     * 数据库中搜索相似的图片
     * @param client
     * @param imageUrl 图片地址,必须是同Region的OSS的图片地址
     * @param limit 获取结果数量上限,取值范围1~1000
     * @param dbName 数据库名称
     */
    public static void searchImage(IAcsClient client, String imageUrl, Integer limit, String dbName)
    {
        CommonRequest commonRequest = new CommonRequest();
        commonRequest.setSysVersion("2020-03-20");
        commonRequest.setSysAction("SearchImage");
        commonRequest.setSysMethod(MethodType.POST);
        commonRequest.setSysDomain("imgsearch.cn-shanghai.aliyuncs.com");
        commonRequest.putBodyParameter("Limit", limit);
        commonRequest.putBodyParameter("ImageUrl", imageUrl);
        commonRequest.putBodyParameter("DbName", dbName);

        CommonResponse response = null;
        try {
            response = client.getCommonResponse(commonRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println("搜索图片:");
        System.out.println(response.getData());
    }

    /**
     * 删除指定数据库
     * @param client
     * @param dbName 数据库名称
     */
    public static void deleteImageDb(IAcsClient client, String dbName)
    {
        CommonRequest commonRequest = new CommonRequest();
        commonRequest.setSysVersion("2020-03-20");
        commonRequest.setSysAction("DeleteImageDb");
        commonRequest.setSysMethod(MethodType.POST);
        commonRequest.setSysDomain("imgsearch.cn-shanghai.aliyuncs.com");
        commonRequest.putBodyParameter("Name", dbName);

        CommonResponse response = null;
        try {
            response = client.getCommonResponse(commonRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println("删除指定数据库:");
        System.out.println(response.getData());
    }


    /**
     * 删除指定数据库中的图片
     * @param client
     * @param dbName 数据库名称
     * @param entityId 待删除数据的实体ID
     */
    public static void deleteImage(IAcsClient client, String dbName, String entityId)
    {
        CommonRequest commonRequest = new CommonRequest();
        commonRequest.setSysVersion("2020-03-20");
        commonRequest.setSysAction("DeleteImage");
        commonRequest.setSysMethod(MethodType.POST);
        commonRequest.setSysDomain("imgsearch.cn-shanghai.aliyuncs.com");
        commonRequest.putBodyParameter("DbName", dbName);
        commonRequest.putBodyParameter("EntityId", entityId);

        CommonResponse response = null;
        try {
            response = client.getCommonResponse(commonRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println("删除指定数据库中的图片:");
        System.out.println(response.getData());
    }


    /**
     * 查看指定数据库中的图片数据列表
     * @param client
     * @param dbName 数据库名称
     * 更多参数的支持可以参考API说明:https://help.aliyun.com/document_detail/159128.html?spm=a2c4g.11186623.6.715.2c697c1edNt7uW 通过方法重载实现
     */
    public static void listImages(IAcsClient client, String dbName)
    {
        CommonRequest commonRequest = new CommonRequest();
        commonRequest.setSysVersion("2020-03-20");
        commonRequest.setSysAction("ListImages");
        commonRequest.setSysMethod(MethodType.POST);
        commonRequest.setSysDomain("imgsearch.cn-shanghai.aliyuncs.com");
        commonRequest.putBodyParameter("DbName", dbName);

        CommonResponse response = null;
        try {
            response = client.getCommonResponse(commonRequest);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println("查看指定数据库中的图片数据列表:");
        System.out.println(response.getData());
    }
}

参考链接

视觉搜索介绍
阿里云人脸识别 1:N 使用简明示例
阿里云常见参数获取位置

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云国际Elasticsearch搜索
如需注册阿里云国际,可以上123clouds.com,只需要一个邮箱就可以了,简便快捷。
0 0
阿里云自然语言处理--词向量(高级版-搜索领域)Quick Start
自然语言处理(Natural Language Processing,简称NLP),是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,旨在帮助用户高效的处理文本,已经广泛应用在电商、文娱、司法、公安、金融、医疗、电力等行业客户的多项业务中,取得了良好的效果。词向量是一种简单有效的将最小语义单元 —— 词转化为数值表示的方法。通过词向量得到的数值表示的形式是高维稠密向量。这种数值表示的特点是语义相近的词(如“红色”和“蓝色”)在向量空间中的位置接近。这种数值表示可以支撑语义相似度计算等具体应用。本文将使用Java CommonSDK演示词向量(高级版-搜索领域)服务的快速调用以供参考。
0 0
阿里云智能编码插件,Cosy文档搜索上新了
阿里云智能编码插件,Cosy文档搜索上新啦!阿里云智能编码插件,更Cosy的开发体验。Cosy集合了代码补全和代码搜索两大开发辅助功能,不仅能通过深度学习模型和程序分析技术,精准智能地帮助我们减少 击剑 击键次数,还能基于海量代码片段和社区问答数据,让我们可以哪里不会搜哪里,沉浸在IDE内快乐开发。
0 0
阿里云人脸搜索最佳实践
人脸人体识别技术是基于阿里云深度学习算法,结合图像或视频的人脸检测、分析、比对以及人体检测等技术,为您提供人脸人体的检测定位、人脸属性识别和人脸比对等能力。阿里云视觉智能开放平台提供1:N人脸查找的功能,在向人脸库添加Face的时候,算法会根据添加的人脸计算一组特征记录到后端,但是并不会保存原始图片,这样在查询人脸的时候,就无法返回原始图片。很多用户使用过程中都有这样的使用场景:希望查询人脸的时候,将对应的相似人脸的原始图片也返回。这里结合阿里云oss服务,通过用户侧自己在oss保存图片的方式,实现查询人脸后不仅返回相似人脸样本信息,也返回原始图片的效果。
0 0
阿里云开放搜索发布开源兼容版,支持Elasticsearch做搜索召回引擎
9月15日,阿里云开放搜索正式上线开源兼容版,搜索召回环节同时支持阿里云自研Ha3引擎与阿里云Elasticsearch引擎,并提供多行业的搜索算法能力,助力企业高效实现搜索效果深度优化。
0 0
阿里云新品发布会周刊第117期 丨 阿里云开放搜索开源兼容版重磅发布
新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多新品发布会!
0 0
阿里云镜像站搜索功能
搜索地址:https://developer.aliyun.com/packageSearch?spm=a1z389.11499242.0.0.65452413yD7ULl&utm_content=g_1000285210
0 0
【同行计划】阿里云搜索&推荐技术社群合伙人招募
2020同行计划,期待对技术有着极高热情,乐于分享的专业人士加入我们
0 0
同行计划——阿里云搜索&推荐技术社群合伙人招募
为了与更多技术人一起走得更远,我们发起2020同行计划。
0 0
+关注
taro_秋刀鱼
博客园主页:https://home.cnblogs.com/u/taro/
文章
问答
文章排行榜
最热
最新
相关电子书
更多
阿里云视觉计算开发者系列手册-目标检测入门必读指南
立即下载
阿里云视觉计算开发者系列手册-目标检测入门必读指南
立即下载
阿里云云原生 Serverless 案例集
立即下载