Перейти к основному содержанию
Основная функция Face Swap API заключается в том, чтобы заменить лицо на целевом изображении лицом на исходном изображении, вводя одно исходное и одно целевое изображение. В этом документе подробно описывается интеграция Face Swap API, чтобы помочь вам легко интегрировать и в полной мере использовать мощные функции этого API. С помощью Face Swap API вы можете легко заменить лицо на целевом изображении лицом на исходном изображении.

Процесс подачи заявки

Чтобы использовать Face Swap API, сначала необходимо перейти на страницу заявки Face Swap API и подать соответствующую заявку. После перехода на страницу нажмите кнопку «Acquire», как показано на изображении: Страница заявки Если вы еще не вошли в систему или не зарегистрированы, вы будете автоматически перенаправлены на страницу входа, где вам будет предложено зарегистрироваться и войти в систему. После входа или регистрации вы будете автоматически возвращены на текущую страницу. При первой подаче заявки предоставляется бесплатный лимит, который позволяет бесплатно использовать этот API.

Примеры запросов

Мы используем два изображения в качестве примера, чтобы продемонстрировать, как использовать этот API. Предположим, что исходное изображение выглядит следующим образом:

Целевое изображение:

Далее мы покажем, как заменить лицо на целевом изображении лицом на исходном изображении.

Установка заголовков запроса и тела запроса

Request Headers включает:
  • accept: указывает на прием ответа в формате JSON, здесь указывается application/json.
  • authorization: ключ для вызова API, который можно выбрать из выпадающего списка после подачи заявки.
Request Body включает:
  • source_image_url: ссылка на загруженное исходное изображение.
  • target_image_url: ссылка на загруженное целевое изображение.
  • timeout: необязательный, время ожидания обработки (в секундах), по истечении которого будет возвращен ответ.
Настройка выглядит следующим образом:

Пример кода

Можно заметить, что на правой стороне страницы автоматически сгенерирован код на различных языках, как показано на изображении:

Некоторые примеры кода:

CURL

curl -X POST 'https://api.acedata.cloud/face/swap' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "source_image_url": "https://cdn.acedata.cloud/n1lmd8.png",
  "target_image_url": "https://cdn.acedata.cloud/3np95r.png"
}'

Python

import requests

url = "https://api.acedata.cloud/face/swap"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "source_image_url": "https://cdn.acedata.cloud/n1lmd8.png",
    "target_image_url": "https://cdn.acedata.cloud/3np95r.png"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)

Пример ответа

После успешного запроса API вернет информацию о результате замены лиц. Например:
{
  "image_url": "https://platform.cdn.acedata.cloud/face/4b13bdeb-1b19-4ea5-bddf-c2da14ba72e3.png",
  "image_width": 2008,
  "image_height": 1942,
  "image_size": 4006213,
  "task_id": "4b13bdeb-1b19-4ea5-bddf-c2da14ba72e3"
}
Можно увидеть, что в результате есть поле image_url, которое содержит ссылку на изображение с замененным лицом, а также другая информация, как показано на изображении:
  • image_url: ссылка на сгенерированное изображение.
  • image_width: ширина сгенерированного изображения.
  • image_height: высота сгенерированного изображения.
  • image_size: размер сгенерированного изображения.
  • task_id: ID текущей задачи генерации.
Результат сгенерированного изображения:

Явно видно, что это изображение успешно заменило лицо на целевом изображении лицом на исходном изображении.

Асинхронный обратный вызов

Поскольку время генерации Face Swap относительно долгое, примерно 1-2 минуты, если API долго не отвечает, HTTP-запрос будет поддерживать соединение, что приведет к дополнительным затратам системных ресурсов. Поэтому этот API также поддерживает асинхронные обратные вызовы. Общий процесс таков: когда клиент инициирует запрос, дополнительно указывается поле callback_url. После того как клиент инициирует запрос API, API немедленно возвращает результат, содержащий поле task_id, представляющее текущий ID задачи. Когда задача завершена, результат генерации Face Swap будет отправлен на указанный клиентом callback_url в формате POST JSON, который также включает поле task_id, что позволяет связать результаты задачи по ID. Давайте рассмотрим, как это работает на примере. Во-первых, обратный вызов Webhook — это служба, которая может принимать HTTP-запросы, разработчик должен заменить ее на URL своего HTTP-сервера. Для удобства демонстрации мы используем публичный сайт примера Webhook https://webhook.site/, открыв который, вы получите URL Webhook, как показано на изображении: Скопируйте этот URL, и вы сможете использовать его в качестве Webhook. Пример здесь: https://webhook.site/3b76eba5-4573-432a-b607-3000b87afc06. Далее мы можем установить поле callback_url на указанный URL Webhook и заполнить соответствующие параметры, как показано на изображении:

Нажмите «Запустить», и вы сразу получите результат, как показано ниже:
{
  "task_id": "9cba9d36-3b14-43c9-85b6-86f6dfc3b096"
}
Через некоторое время мы можем наблюдать результат генерации Face Swap на https://webhook.site/3b76eba5-4573-432a-b607-3000b87afc06, как показано на изображении: Содержимое следующее:
{
  "success": true,
  "task_id": "9cba9d36-3b14-43c9-85b6-86f6dfc3b096",
  "image_url": "https://platform.cdn.acedata.cloud/face/9cba9d36-3b14-43c9-85b6-86f6dfc3b096.png",
  "image_width": 2008,
  "image_height": 1942,
  "image_size": 4006481
}
Можно увидеть, что в результате есть поле task_id, остальные поля аналогичны вышеупомянутым, и с помощью этого поля можно связать задачи.

Обработка ошибок

При вызове API, если возникает ошибка, API вернет соответствующий код ошибки и информацию. Например:
  • 400 token_mismatched:Неверный запрос, возможно, из-за отсутствующих или недействительных параметров.
  • 400 api_not_implemented:Неверный запрос, возможно, из-за отсутствующих или недействительных параметров.
  • 401 invalid_token:Неавторизован, недействительный или отсутствующий токен авторизации.
  • 429 too_many_requests:Слишком много запросов, вы превысили лимит частоты.
  • 500 api_error:Внутренняя ошибка сервера, что-то пошло не так на сервере.

Пример ошибки ответа

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Заключение

С помощью этого документа вы узнали, как использовать Face Swap API для замены лиц на целевом изображении лицом из исходного изображения. Надеемся, что этот документ поможет вам лучше интегрировать и использовать данный API. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться в нашу техническую поддержку.