Обнаружение лиц на изображении

Обнаружение лиц сейчас находится на стадии Preview.

Чтобы обнаружить лица на фото, воспользуйтесь возможностью Обнаружение лиц.

Для этого в методе batchAnalyze в свойстве type укажите FACE_DETECTION.

Примеры

Перед началом

Чтобы воспользоваться примерами в этом разделе:

  1. На странице биллинга убедитесь, что платежный аккаунт находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.
  2. Убедитесь, что у вас установлена утилита cURL, используемая в примерах.
  3. Получите идентификатор любого каталога, на который у вашего аккаунта есть роль editor или выше.
  4. Получите IAM-токен для своего аккаунта на Яндексе.

Чтобы выполнять эти операции от имени сервисного аккаунта:

  1. Назначьте сервисному аккаунту роль editor или выше на каталог, в котором он был создан.
  2. Не указывайте в запросе идентификатор каталога — сервис использует каталог, в котором был создан сервисный аккаунт.
  3. Выберите способ аутентификации: получите IAM-токен или API-ключ.

Найдите лица на изображении

  1. Подготовьте файл изображения, соответствующий требованиям:

    • Поддерживаемые форматы файлов: JPEG, PNG, PDF.

      MIME-тип файла указывается указывается в свойстве mime_type. По умолчанию image.

    • Максимальный размер файла: 1 МБ.

    • Размер изображения не должен превышать 20 мегапикселей (длина x ширина).

    Примечание

    Нужно изображение? Скачайте пример.

  2. Кодируйте файл в формат Base64:

    $ base64 -i input.jpg > output.txt
    
    C:> Base64.exe -e input.jpg > output.txt
    
    [Convert]::ToBase64String([IO.File]::ReadAllBytes("./input.jpg")) > output.txt
    
    # Импортируйте библиотеку для кодирования в Base64
    import base64
    
    # Создайте функцию, которая кодирует файл и возвращает результат.
    def encode_file(file):
      file_content = file.read()
      return base64.b64encode(file_content)
    
    // Считайте содержимое файла в память.
    var fs = require('fs');
    var file = fs.readFileSync('/path/to/file');
    
    // Получите содержимое файла в формате Base64.
    var encoded = Buffer.from(file).toString('base64');
    
    // Импортируйте библиотеку для кодирования в Base64.
    import org.apache.commons.codec.binary.Base64;
    
    // Получите содержимое файла в формате Base64.
    byte[] fileData = Base64.encodeBase64(yourFile.getBytes());
    
    import (
        "bufio"
        "encoding/base64"
        "io/ioutil"
        "os"
    )
    
    // Откройте файл
    f, _ := os.Open("/path/to/file")
    
    // Прочитайте содержимое файла.
    reader := bufio.NewReader(f)
    content, _ := ioutil.ReadAll(reader)
    
    // Получите содержимое файла в формате Base64.
    base64.StdEncoding.EncodeToString(content)
    
  3. Создайте файл с телом запроса, например body.json. В свойстве content укажите изображение, кодированное в Base64:

    body.json:

    {
        "folderId": "b1gvmob95yysaplct532",
        "analyze_specs": [{
            "content": "iVBORw0KGgo...",
            "features": [{
                "type": "FACE_DETECTION"
            }]
        }]
    }
    
  4. Отправьте запрос с помощью метода batchAnalyze и сохраните ответ в файл, например output.json:

    $ export IAM_TOKEN=CggaATEVAgA...
    $ curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer ${IAM_TOKEN}" \
        -d '@body.json' \
        https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
    

Готовая функция для отправки запросов в bash

  1. Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

  2. Скопируйте в терминал функцию:

    vision_face_detection() {
        curl -H "Authorization: Bearer `yc iam create-token`" \
        "https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze" \
        -d @<(cat << EOF
    {
        "folderId": "`yc config get folder-id`",
        "analyze_specs": [{
            "content": "`base64 -i $1`",
            "features": [{
                "type": "FACE_DETECTION"
            }]
        }]
    }
    EOF
    )
    }
    

    Пояснения:

    • yc iam create-token — получить IAM-токен.
    • -d @<(cat << EOF ... EOF) — сформировать тело запроса.
    • yc config get folder-id — получить ID каталога, выбранного по умолчанию в CLI.
    • base64 -i $1 — кодировать в Base64 изображение, переданное в аргументах функции.
  3. Теперь вы можете вызывать эту функцию, передав путь к изображению в аргументах:

    vision_face_detection path/to/image.jpg