Перейти до основного вмісту
Основна функція 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 відразу поверне результат, що містить інформацію про поле task_id, яке представляє ID поточного завдання. Коли завдання завершено, результат генерації Face Swap буде надіслано на вказаний клієнтом callback_url у форматі POST JSON, в якому також міститься поле task_id, таким чином результати завдання можна пов’язати за ID. Далі ми розглянемо приклад, щоб зрозуміти, як це працює. По-перше, Webhook зворотний виклик - це служба, яка може приймати HTTP запити, розробники повинні замінити на URL свого HTTP сервера. Тут для зручності демонстрації використовується публічний зразок сайту Webhook https://webhook.site/, відкривши цей сайт, ви отримаєте Webhook URL, як показано на малюнку: Скопіюйте цей URL, і ви зможете використовувати його як Webhook, приклад тут - https://webhook.site/3b76eba5-4573-432a-b607-3000b87afc06. Далі ми можемо налаштувати поле callback_url на вказаний Webhook URL, одночасно заповнивши відповідні параметри, як показано на малюнку:

Натиснувши «Запустити», можна помітити, що відразу отримаємо результат, як показано нижче:
{
  "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": "не вдалося отримати"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Висновок

За допомогою цього документа ви дізналися, як використовувати Face Swap API для заміни обличчя на цільовому зображенні на обличчя на вихідному зображенні. Сподіваємося, що цей документ допоможе вам краще інтегрувати та використовувати цей API. Якщо у вас є будь-які питання, будь ласка, звертайтеся до нашої технічної підтримки.