Тестовые запросы

Перед тем как приступить к программированию и использованию распознавания лиц в своем приложении, убедитесь, что компоненты Сервера FindFace работают надлежащим образом. Для этого выполните по порядку приведенные ниже тестовые запросы. Для того чтобы структурировать текст ответов на запросы, используйте обработчик JSON jq.

В этом разделе:

Структурирование ответов на запросы

Используйте обработчик jq, чтобы структурировать данные в формате JSON в ответах на запросы. Обработчик jq устанавливается автоматически из консольного инсталлятора.

Совет

Если это не так, установите jq следующим образом:

sudo apt install jq

Примечание

Поскольку обработчик jq аппроксимирует целые числа, большие 2^53 (например, для ”id“:12107867323949968228 в результате получится ”id“:12107867323949967000 и т. д.), вместо него может быть целесообразным использовать json_pp.

Получение списка галерей

Данный запрос возвращает имя единственной на данный момент галереи (galleryname). Соответствующий метод HTTP API для анализа и распознавания лиц: /galleries GET.

Запрос

curl -s http://localhost:18411/v2/galleries | jq

Ответ

{
  "galleries": [
    {
      "name": "galleryname",
      "faces": 0
    }
  ]
}

Обнаружение лица на фотографии

Первый запрос обнаруживает лицо на тестовых изображениях, размещенных в сети Интернет, и возвращает координаты рамок вокруг лиц и их ориентацию. Соответствующий метод HTTP API для анализа и распознавания лиц: /detect POST.

Запрос №1

curl -s -H 'Content-Type: text/x-url' -d https://static.findface.pro/sample.jpg -X POST http://localhost:18411/v2/detect | jq

Ответ

{
  "faces": [
    {
      "bbox": {
        "left": 595,
        "top": 127,
        "right": 812,
        "bottom": 344
      },
      "features": {
        "score": 0.9999999
      }
    }
  ],
  "orientation": 1
}

Если facen=on, возвращенный результат будет сохранен в memcached. В следующем запросе изображение то же самое, но на этот раз facen=on, а также запрашиваются такие параметры, как пол, возраст и эмоции.

Совет

Для извлечения результата распознавания из memcached примените метод /detect GET.

Запрос №2

curl -s -H 'Content-Type: text/x-url' -d https://static.findface.pro/sample.jpg -X POST 'http://localhost:18411/v2/detect?facen=on&gender=on&age=on&emotions=on' | jq

Ответ

{
  "faces": [
    {
      "id": "bhse5elubdg0ajgm2nkg",
      "bbox": {
        "left": 595,
        "top": 127,
        "right": 812,
        "bottom": 344
      },
       "features": {
        "gender": {
          "gender": "FEMALE",
          "score": -2.6415923
        },
        "age": 26.04833,
        "score": 0.9999999,
        "emotions": [
          {
            "emotion": "neutral",
            "score": 0.99958
          },
          {
            "emotion": "sad",
            "score": 0.0004020398
          },
          {
            "emotion": "happy",
            "score": 8.603504e-06
          },
          {
            "emotion": "surprise",
            "score": 8.076798e-06
          },
          {
            "emotion": "disgust",
            "score": 6.653509e-07
          },
          {
            "emotion": "angry",
            "score": 6.14346e-07
          },
          {
            "emotion": "fear",
            "score": 7.33713e-10
          }
        ]
      }
    }
  ],
  "orientation": 1
}

В следующем запросе детектируется лицо с другого изображения (с целью последующего наполнения базы данных). Результат будет записан в memcached (facen=on).

Запрос №3

curl -s -H 'Content-Type: text/x-url' -d https://static.findface.pro/sample2.jpg -X POST 'http://localhost:18411/v2/detect?facen=on
{
  "faces": [
    {
      "id": "bhse45dubdg0ajgm2nk0",
      "bbox": {
        "left": 515,
        "top": 121,
        "right": 821,
        "bottom": 427
      },
      "features": {
        "score": 0.9999982
      }
    }
  ],
  "orientation": 1
}

Извлечение результата детекции из memcached

Данный запрос извлекает из memcached результат детекции, полученный в одном из предыдущих запросов, по его id. Соответствующий метод HTTP API для анализа и распознавания лиц: /detect GET.

Примечание

bhse5elubdg0ajgm2nkg – id лица в memcached, полученный в ответе детектора. При выполнении тестовых запросов вам потребуется заменить его на актуальное полученное значение.

Важно

Прежде чем продолжить, откройте файл конфигурации findface-sf-api и убедитесь, что параметр allow-return-facen имеет значение on.

sudo vi /etc/findface-sf-api.ini

allow-return-facen: on

Запрос №1

curl -s 'http://localhost:18411/v2/detect/bhse5elubdg0ajgm2nkg'

Ответ

{
  "id": "bhse5elubdg0ajgm2nkg",
  "bbox": {
    "left": 595,
    "top": 127,
    "right": 812,
    "bottom": 344
  },
  "features": {
    "score": 0.9999999
  }
}

Для того чтобы получать вместе с результатом детекции вектор признаков лица (facen), откройте файл конфигурации /etc/findface-sf-api.ini и установите allow-return-facen: true. Перезапустите findface-sf-api и добавьте параметр строки return_facen = on к предыдущей команде:

Запрос №2

curl -s 'http://localhost:18411/v2/detect/bhse5elubdg0ajgm2nkg?return_facen=on' | jq

Ответ

{
  "id": "bhse5elubdg0ajgm2nkg",
  "bbox": {
    "left": 595,
    "top": 127,
    "right": 812,
    "bottom": 344
  },
  "features": {
    "score": 0.9999999
  },
  "facen": "1ji...Vr3TEQg8"
}

Сравнение лиц

Следующие запросы выполняют сравнение 2 лиц и возвращают результат их проверки на идентичность. Соответствующий метод HTTP API для анализа и распознавания лиц: /verify POST.

Первый запрос сравнивает 2 лица, представляющие собой результаты детекции (метод /detect POST), хранящиеся в memcached.

Запрос №1

curl -s 'http://localhost:18411/v2/verify?face1=detection:bd3hv4tt8f66ph0eag1g&face2=detection:bd3hv8dt8f66ph0eag2g' | jq

Ответ

{
  "confidence": 0.92764723
}

Второй запрос сравнивает результат детекции в memcached и лицо в галерее.

Запрос

curl -s 'http://localhost:18411/v2/verify?face1=detection:bd3hv4tt8f66ph0eag1g&face2=face:galleryname/2' | jq

Ответ

{
  "confidence": 0.999996
}