百度人脸识别

百度人脸识别

最近在做一个人脸识别系统,就发现百度的接口使用很方便就做下笔记。
官方文档地址:AI开放平台文档中心

目标

实现两张人脸图片的相似度比较。

准备工作

首先是要有百度账号,然后进入百度云,找到控制台,找到全部产品。
百度人脸识别_第1张图片

右下角人脸识别,进去后创建一个应用,注意生成的 app id , api key ,secret_key, 等下要用
百度人脸识别_第2张图片

然后相关技术文档和SDK在指定位置。

开始使用

我们使用人脸识别里面的“人脸对比”接口。其他的如“人脸检测”、人脸搜索,自行查看。

网上下载了两个图片:
百度人脸识别_第3张图片
百度人脸识别_第4张图片
使用最简单的官方提供的sdk,加入项目。
代码如下


package com.honeywen.mymvc.test;

import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.google.common.collect.Lists;
import org.apache.commons.io.FileUtils;
import org.json.JSONObject;

import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * 人脸对比
 */
public class BaiduFaceTest {

// 这里填写你自己应用的三项
    public static final String APP_ID = "xxxxxx";
    public static final String API_KEY = "yyyyyyy";
    public static final String SECRET_KEY = "zzzzzzz";



    public static void main(String[] args) throws IOException {
        AipFace client = new AipFace(APP_ID, API_KEY, SECRET_KEY);

        String image1 = "/Users/jack/Pictures/ab0.jpg";
        String image2 = "/Users/jack/Pictures/ab1.jpg";


        byte[] b1 = FileUtils.readFileToByteArray(new File(image1));
        byte[] b2 = FileUtils.readFileToByteArray(new File(image2));


        String s1 = Base64Util.encode(b1);
        String s2 = Base64Util.encode(b2);



        MatchRequest req1 = new MatchRequest(s1, "BASE64");
        MatchRequest req2 = new MatchRequest(s2, "BASE64");

        List list = Lists.newArrayList();
        list.add(req1);
        list.add(req2);

        JSONObject rs = client.match(list);
        System.out.println(rs.toString(2));

    }

}

程序结果就是:


  "result": {
    "score": 87.47579193,
    "face_list": [
      {"face_token": "c7cb5d8aa943b567dfaa1723fabac920"},
      {"face_token": "6583f906ee36104a88e1ae2d1a8b7aeb"}
    ]
  },
  "log_id": 510184658479,
  "error_msg": "SUCCESS",
  "cached": 0,
  "error_code": 0,
  "timestamp": 1530003967
}

得分87多,根据官方文档

Q:人脸识别、认证我应该取多少分算是同一人?
A:推荐可判断为同一人的相似度分值为80,大概对应的误识率为万分之一,您也可以根据业务需求选择更合适的阈值。

基本确认两个图片是一个人。

你可能感兴趣的:(java,AI)