以公共用户(没有开通OSS的用户)为例,本文提供了一个简易的新手入门指导供您参考。您可以通过初始化、注册数据库、添加图片及检索图片的全流程体验人脸检索服务提供的诸多功能。

在PAI-EAS上部署人脸检索模型后,您可以通过如下具体流程体验该服务提供的功能:
  1. 确认服务已部署,调用数据库管理层的init函数,并上传阿里云账号的uid,从而获得uid_key
  2. 调用数据库管理层的add函数,添加一个新的数据库。
  3. 调用数据库管理层的get函数,查看并确认数据库已经成功注册。
  4. 调用数据库层的set函数,注册一张图片到指定数据库。
  5. 调用数据库层的get函数,确认图片已经注册到指定数据库。
  6. 调用数据库search函数,上传一张和已注册图片相似的图片,搜索相关近似图片并验证返回结果。
下文使用Python代码演示如何搭建一个数据库,并进行人脸的注册和检索:
  1. 使用如下代码进行初始化,详细的接口信息请参见初始化(init)
    import requests, json
    datas = json.dumps({   
                "function_name": "init",
                "function_params": {
                    "uid" : 用户阿里云唯一的账号ID,
                },
            })
    head = {"Authorization": "XXXX"} #服务部署成功后返回的Token密钥。
    hosts = "xxxxxx/test"  # 服务的地址。
    r = requests.post(hosts, data=datas, headers=head)
    系统返回如下类似结果。
    r.context = {
        "request_id": "dd892f04-ba88-4b13-b8f4-11feba06****", 
        "success": true, 
        "uid_key": "xxxxxxxxxxx"
    }
  2. 添加数据库,详细的接口信息请参见增加数据库(add)
    通过获得的uid_key,执行如下Python代码,从而添加数据库。
    import requests, json
    datas = json.dumps({   
               "function_name": "add",
               "function_params": {
                    "db_name":"oss_hz",
                    "uid": 用户阿里云唯一的账号ID,
                    "uid_key": 初始化返回的uid_key
                 }
            })
    head = {"Authorization": "XXXX"} #服务部署成功后返回的Token密钥。
    hosts = "xxxxxx/test"  # 服务的地址。
    r = requests.post(hosts, data=datas, headers=head)
    系统返回如下类似结果。
    r.context = {
        "request_id": "0909edf7-901a-48c0-8fe3-45eb7a9f****", 
        "success": true, 
        "add": {
            "name": "oss_hz_1", 
            "record_num": 0, 
            "groupid_num": 0, 
            "database_save_path": "oss://evx****/9c33187f2ec9bf04e72****/oss_hz/RDB.pkl"
        }
    }
  3. 查询数据库,详细的接口信息请参见查询数据库(get)
    调用get函数查询数据库是否注册成功,可以获得已添加的数据库信息。
    import requests, json
    datas = json.dumps({   
                "function_name": "get",
                "function_params": {
                    "db_dict": True
                 },
            })
    head = {"Authorization": "XXXX"} #服务部署成功后返回的Token密钥。
    hosts = "xxxxxx/test"  # 服务的地址。
    r = requests.post(hosts, data=datas, headers=head)
    系统返回如下类似结果。
    r.context = {
        'oss_hz': {
            'name': 'oss_hz', 
            'record_num': 0, 
            'groupid_num': 0, 
            'database_save_path': 'oss://evx****/9c33187f2ec9bf04e72****/oss_hz/RDB.pkl'}
    }
  4. 添加数据,详细的接口信息请参见注册数据(set)
    此处以注册一张图片为例,关于批量图片的注册方式请参见图像列表注册
    import requests, json
    datas  = json.dumps( {   
        "db_name": "oss_hz",
        "function_name": "set",
        "function_params": {
            "image_path" : "oss://xxxxxx/test/bengio2.jpeg", #注册图片地址。
            "group_id" : '6000'   # 注册图片ID。
            },
        })
    head = {"Authorization": "XXXX"} #服务部署成功后返回的Token密钥。
    hosts = "xxxxxx/test"  # 服务的地址。
    r = requests.post(hosts, data=datas, headers=head)
    系统返回如下类似结果。
    r.context = {
        "request_id": "93c70c2b-4fd8-431b-99a0-2c3da83c****", 
        "success": true, 
        "info": {"add": true}
    }
  5. 查询数据,详细的接口信息请参见查询数据(get)
    对于已添加的数据,您可以通过指定group_id查询数据信息,代码示例如下。
    import requests, json
    datas  = json.dumps( {   
                "db_name": "oss_hz",
                "function_name": "get",
                "function_params": {
                    "group_id" : '6000',
                },
            })
    head = {"Authorization": "XXXX"} #服务部署成功后返回的Token密钥。
    hosts = "xxxxxx/test"  # 服务的地址。
    r = requests.post(hosts, data=datas, headers=head)
    系统返回如下类似结果。
    r.context = {
        "request_id": "cbecac86-33f7-4908-be8b-9444fb4a****", 
        "success": true, 
        "info": {
            "oss_path_name": ["oss://xxxxxx/test/bengio2.jpeg"],
            "group_id": ["100"],
            "intra_id": [0.0],
        }
    }
  6. 检索数据,详细的接口信息请参见检索数据(search)
    对于已存在的数据库,且已经注册了部分图片,您可以通过检索接口上传一张图片,以检索图片库内特征距离相近的图片,获得检索到的图片信息。代码示例如下。
    import requests, json
    datas = json.dumps( {   
        "db_name": "oss_hz",
        "function_name": "search",
        "function_params": {
            "image_path" : "oss://xxxx/test/bengio1.jpeg",
            "topk":1,
            "return_file_path":True,
             },
        })
    head = {"Authorization": "XXXX"} #服务部署成功后返回的Token密钥。
    hosts = "xxxxxx/test"  # 服务的地址。
    r = requests.post(hosts, data=datas, headers=head)
    系统返回如下类似结果。
    r.context = {
        "request_id": "a1c45ad7-36f0-49c5-b579-f9e630dd****", 
        "success": true, 
        "distance": [0.21094533801078796], 
        "group_id": ["100"], 
        "intra_id": [0.0], 
        "oss_path_name": [["oss://xxxxxx/test/bengio2.jpeg"]]
    }