Face ++ Compare API - PullRequest
       65

Face ++ Compare API

1 голос
/ 22 сентября 2019

Мне нужно сравнить 2 изображения лиц в java и их достоверность.Я пытаюсь научиться читать официальную документацию, предоставляемую face ++, но, на мой взгляд, она немного бедна.Мне нужно использовать API сравнения лиц здесь: https://console.faceplusplus.com/documents/5679308. Я не понимаю, как создать URL для отправки запроса.В конце страницы есть этот фрагмент кода:

curl -X POST "https://api-us.faceplusplus.com/facepp/v3/compare" \
-F "api_key=<api_key>" \
-F "api_secret=<api_secret>" \
-F "face_token1=c2fc0ad7c8da3af5a34b9c70ff764da0" \
-F "face_token2=ad248a809408b6320485ab4de13fe6a9"

Теперь единственный код, который я вижу в их документации, это:

https://console.faceplusplus.com/documents/7078069

Но это не работает, или, по крайней мере, это не для «сравнения лиц».

Мне нужно создать и получить запрос на API сравнения лиц (первая ссылка в начале).Я не могу найти ни одного примера Java о том, как это сделать.Я делаю это в Java

1 Ответ

2 голосов
/ 22 сентября 2019

Используя тот же пример кода , который указан в документации, все, что вам нужно сделать, это изменить основной метод следующим образом:

public static void main(String[] args) throws Exception{

    // Create a new file object for the first file and get bytes from file
    File file = new File("C:\\Users\\ihene\\Desktop\\my-photo.jpg");
    byte[] buff1 = getBytesFromFile(file);

    // Create a new file object for the second file and get bytes from file
    File file2 = new File("C:\\Users\\ihene\\Desktop\\esan-caleb.jpg");
    byte[] buff2 = getBytesFromFile(file2);

    // Data needed to use the Face++ Compare API
    String url = "https://api-us.faceplusplus.com/facepp/v3/compare";
    HashMap<String, String> map = new HashMap<>();
    HashMap<String, byte[]> byteMap = new HashMap<>();
    map.put("api_key", "dam4ZdTkSsZOUAiR4oQpP3DRnjEz1fcD");
    map.put("api_secret", "0MOCfpum1Lec06EMOzuJPOEa_EhM4Ttg");

    byteMap.put("image_file1", buff1);
    byteMap.put("image_file2", buff2);

    try {
        // Connecting and retrieving the JSON results
        byte[] bacd = post(url, map, byteMap);
        String jsonStr = new String(bacd);

        // Parse the JSON and get the confidence value
        JSONObject obj = new JSONObject(jsonStr);
        double confidence = obj.getDouble("confidence");
        System.out.println(confidence);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Просто замените PATH_TO_FILE_1, PATH_TO_FILE_2, YOUR_API_KEY и YOUR_API_SECRET с соответствующими значениями.Это должно работать.

Я протестировал API, используя два изображения с лицом, принадлежащим одному человеку, и два других изображения с разными лицами.Вот вывод, который я получил для первого:

{"faces1": [{"face_rectangle": {"width": 156, "top": 210, "left": 142, "height": 156}, "face_token": "1ee9de6d362b0c8c1bf240a70fbf3eac"}], "faces2": [{"face_rectangle": {"width": 156, "top": 210, "left": 142, "height": 156}, "face_token": "0a7c539f3603aa744ee18c65acc224a8"}], "time_used": 531, "thresholds": {"1e-3": 62.327, "1e-5": 73.975, "1e-4": 69.101}, "confidence": 97.389, "image_id2": "Fc64vrBtETVmP2cS+BoW/Q==", "image_id1": "Fc64vrBtETVmP2cS+BoW/Q==", "request_id": "1569184566,0cc04f1a-1495-4316-928c-1efe7d6836dc"}

Обратите внимание, что здесь доверие 97,389 документации говорится, что «более высокая достоверность указывает на более высокую вероятность того, что два лица принадлежат одному человеку»Итак, это соответствует тому, что мы ожидаем.Для последних изображений с различными лицами, вот вывод:

{"faces1": [{"face_rectangle": {"width": 156, "top": 210, "left": 142, "height": 156}, "face_token": "c7d8561f0235a99d9b060750c7a9c3c7"}], "faces2": [{"face_rectangle": {"width": 75, "top": 44, "left": 53, "height": 75}, "face_token": "ad87092cb593128c015c2e2221b962f2"}], "time_used": 533, "thresholds": {"1e-3": 62.327, "1e-5": 73.975, "1e-4": 69.101}, "confidence": 53.993, "image_id2": "MiZOf00hrq7OmAxc3+n7sg==", "image_id1": "Fc64vrBtETVmP2cS+BoW/Q==", "request_id": "1569185082,0bfd0a0f-a376-4dac-92bd-924c34ef76ed"}

Здесь, достоверность составляет 53,933 .

...