Обзор API Yes Ai для нейросети ACC - замена одежды на фотографии

Проект Yes Ai начал предоставлять доступ к API нейросети ACC для замены одежды на фотографии. Нейронная сеть ACC (Artificial Intelligence Change Clothes) умеет идентифицировать элементы одежды на фигуре и заменять их элементами из другого изображения. Чтобы нейронная сеть выполнила смену одежды, ей необходимы два снимка: один отображает человека, чей наряд нужно изменить, а другой демонстрирует новую одежду, которую нужно наложить.

Использование нейросети ACC для замены одежды на фотографии - API Yes Ai
Использование нейросети ACC для замены одежды на фотографии - API Yes Ai

Мы советуем поэкспериментировать с этой возможностью через @yes_ai_bot в Telegram, прежде чем применять API.

Кому может быть полезна нейронная сеть по замене одежды:

  • всем стилистам для примерки одежды
  • предпринимателям кто торгует одеждой на маркетплейсах (OZON, Wildberries и др)
  • специалистам кто создает карточки товаров на маркетплейсах (OZON, Wildberries и др)
  • простым людям используя как онлайн примерочную

Для взаимодействия с Yes Ai API необходим токен авторизации, процесс ее получения описан здесь. Чтобы узнать текущие цены на все услуги, отправьте команду /prices в @yes_ai_bot, как указано в разделе «Замена одежды ACC».

Инструкция по отправке заявки для замены одежды на фотографии через API

POST https://api.yesai.su/v2/stablediffusion/changeclothes
headers: { Content-Type: application/json, Authorization: Bearer }

Образец запроса на инициирование процесса замены одежды с использованием фотографии.

curl -X POST https://api.yesai.su/v2/stablediffusion/changeclothes
-H "Authorization: Bearer <token>"
-H "Content-Type: application/json"
-d '{
"type": 55,"photo_url": "https://yesai.su/tests/person1.jpeg","image_url": "https://yesai.su/tests/clothes1.jpeg"
}'

Параметры:

type = 55(обязательно, выберите из следующих: 55 для замены верхней одежды, 56 для замены нижней одежды, 57 для полной замены одежды)
photo_url = '' (обязательно укажите URL изображения персонажа)
image_url = '' (обязательно укажите URL изображения одежды)

Вот как будет выглядеть успешный ответ на отправку задачи:

['success' => true, 'message' => 'OK', 'results' => ['generation_data' => [ ... ]]], 200

Разбор примера ответа эндпойнта для подачи заданий на замену одежды

{
"success": true, // данные успешно получены
"message": "OK",
"results": {
"generation_data": {
"id": 24, // номер родительского задания, по которому можно получить результаты генераций
"user_id": 31234567, // id пользователя в системе Yes Ai, который подал задание
"tariff_id": 30, // id тарифного плана пользователя, который подал задание
"type": 55, // метод замены одежды, где 55 - замена одежды выше пояса
"styles": [], // для этого типа заданий стили не применяются
"settings": {
"dress_type": "upper_body" // текстовое описание метода замены одежды
},
"child_ids": [], // список id дочерних заданий
"parent_id": 0,
"photo_url": "https://yesai.su/tests/person1.jpeg", // прямая ссылка на фотографию человека, на котором нужно заменить одежду
"image_url": "https://yesai.su/tests/clothes1.jpeg", // прямая ссылка на фотографию одежды, которую нужно использовать для замены
"result_url": "",
"result_type": "",
"result_data": [],
"comment_ru": "",
"comment_en": "",
"accounting": [ ],
"language": "",
"prompt": "",
"status": 0, // код статуса выполнения задания
"status_description": "in queue", // текстовое описание статуса задания
"start_at": 0,
"finish_at": 0,
"created_at": 1716155819, // unixtime - время подачи задания
"updated_at": 1716155819 // unixtime - время последнего обновления статуса задания
}
}
}

Возможные коды статусов:

"status": 0 ("status_description":"in queue") - задание в данный момент находится в очереди (требуется подождать)
"status": 1 ("status_description":"in progress") - задание сейчас активно обрабатывается (еще нужен период ожидания)
"status": 2 ("status_description":"completed") - задание выполнено успешно (можно приступить к обработке результатов, дочерние задания будут появляться в массиве по мере их выполнения. Частота новых дочерних задач добавляется к последовательности в диапазоне от 10 до 30 секунд)
"status": 3 ("status_description":"rejected with error") - задание отклонено из-за ошибки (советуем ознакомиться с объяснением отклонения в разделах comment_ru" и "comment_en") )
"status": 4 ("status_description":"rejected due to timeout") - задание отклонено, поскольку превышен лимит времени (необходимо повторно отправить задание)

Список возможных ошибок:

['success' => false, 'message' => 'TYPE_IS_EMPTY'], 400
['success' => false, 'message' => 'TYPE_NOT_VALID'], 400
['success' => false, 'message' => 'PHOTO_URL_IS_EMPTY'], 400
['success' => false, 'message' => 'PHOTO_URL_NOT_VALID'], 400
['success' => false, 'message' => 'IMAGE_URL_IS_EMPTY'], 400
['success' => false, 'message' => 'IMAGE_URL_NOT_VALID'], 400
['success' => false, 'message' => 'PHOTO_FILE_SIZE_NOT_VALID'], 400
['success' => false, 'message' => 'IMAGE_FILE_SIZE_NOT_VALID'], 400
['success' => false, 'message' => 'PHOTO_MIME_TYPE_NOT_VALID'], 400
['success' => false, 'message' => 'IMAGE_MIME_TYPE_NOT_VALID'], 400
['success' => false, 'message' => 'UNAUTHORIZED'], 401
['success' => false, 'message' => 'PHOTO_NOT_FOUND'], 404
['success' => false, 'message' => 'IMAGE_NOT_FOUND'], 404
['success' => false, 'message' => 'USER_HAS_BEEN_BANNED'], 409
['success' => false, 'message' => 'USER_HAS_BEEN_DELETED'], 409
['success' => false, 'message' => 'NOT_ENOUGH_RPOINTS'], 409
['success' => false, 'message' => 'TASK_LIMIT_EXCEEDED'], 409
['success' => false, 'message' => 'TOO_MANY_REQUESTS'], 429
['success' => false, 'message' => 'INTERNAL_SERVER_ERROR'], 500

Получение результатов заданий замены одежды на человеке в нейросети ACC

Чтобы заменить одежду на человеке с помощью нейронной сети ACC, система создаст три отдельных варианта изображения, каждый из которых демонстрирует различные попытки изменения одежды человека. После отправки задачи вам будет присвоен отличительный «идентификатор» родительского задания, который позволит вам отслеживать ход выполнения и получать ссылки для скачивания результатов.

Появление дочерних задач происходит с интервалом от 10 до 20 секунд — с такой частотой рекомендуется выполнять проверку эндпойнта после запуска новой задачи.

GET https://api.yesai.su/v2/stablediffusion/generations/{id}/batch
headers: { Content-Type: application/json, Authorization: Bearer }

Пример запроса для получения списка всех генераций по ID родительского задания

curl -X GET https://api.yesai.su/v2/stablediffusion/generations/{id}/batch
-H "Authorization: Bearer <token>"
-H "Content-Type: application/json"

Параметры:
{id} = 12345 (обязательно, id родительского задания)

Список возможных ошибок:

['success' => false, 'message' => 'ID_IS_EMPTY'], 400
['success' => false, 'message' => 'ID_NOT_VALID'], 400
['success' => false, 'message' => 'UNAUTHORIZED'], 401
['success' => false, 'message' => 'ID_NOT_FOUND'], 404
['success' => false, 'message' => 'USER_HAS_BEEN_BANNED'], 409
['success' => false, 'message' => 'USER_HAS_BEEN_DELETED'], 409
['success' => false, 'message' => 'TOO_MANY_REQUESTS'], 429
['success' => false, 'message' => 'INTERNAL_SERVER_ERROR'], 500

Вот как будет выглядеть успешный ответ на отправку задачи:

['success' => true, 'message' => 'OK', 'results' => ['generations_data' => [ ... ]]], 200

Разбор примера ответа эндпойнта для получения результатов генераций в формате JSON

{
"success": true, // данные успешно получены
"message": "OK",
"results": {
"generations_data": {
"info": {
"count": 3, // количество генераций, которые выполнены в момент проверки для родительского задания {id}
"max_id": 26, // последний {id} в этой пачке заданий
"limit_offset": 0,
"limit_count": 20,
"sort_field": "id",
"sort_order": 1,
"id_offset": 2147483647
},
"data": [
{
"id": 24, // уникальный ID задания в системе Yes Ai, он же является {id} родительского задания
"user_id": 31234567, // ID пользователя, который подал задание
"tariff_id": 30, // тарифный план пользователя (0 - Demo, 5 - Micro, 10 - Start, 20 - Standard, 30 - VIP)
"type": 55, // тип задания, 55 - замена одежды выше пояса
"styles": [], // список стилей, которые были использованы для генерации, для ACC не используется
"settings": {
"dress_type": "upper_body" // текстовый идентификатор метода замены одежды, upper_body - замена одежды выше пояса
},
"child_ids": [25, 26], // список дочерних заданий для родительского задания {id}
"parent_id": 0,
"photo_url": "https://yesai.su/tests/person1.jpeg",
"image_url": "https://yesai.su/tests/clothes1.jpeg",
"result_url": "https://yesai.su/files/stablediffusion/generations/31234567_1716155856135763.png", // ссылка для скачивания первой генерации в пачке заданий
"result_type": "image", // тип результата выполнения задания, image - изображение
"result_data": {
"image_width": 1024, // ширина изображения в пикселях
"image_height": 1024, // высота изображения в пикселях
"image_mime_type": "image/png" // тип изображения
},
"comment_ru": "", // комментарий к заданию на русском языке, он заполняется только в том случае, если задание не удалось выполнить
"comment_en": "", // комментарий к заданию на английском языке, он заполняется только в том случае, если задание не удалось выполнить
"accounting": {
"total_cost": 4.25, // итоговая стоимость выполнения задания в условных единицах
"spent_points": 0, // количество ⭐баллов, которые были сняты с баланса за выполнение задания. Для ACC поле всегда будет равно 0, т.к. оплата производится в 🔅монетах
"spent_rpoints": 4.25, // количество 🔅монет, которые были сняты с баланса за выполнение задания
"spent_repost_points": 0, // количество бонусных баллов за репосты, которое было снято за выполнение задания. Для ACC поле всегда будет равно 0, т.к. оплата производится в 🔅монетах
"spent_balance": 0, // количество денег с основного баланса, которое было снято за выполнение задания. Для ACC поле всегда будет равно 0, т.к. оплата производится в 🔅монетах
"spent_rbalance": 0, // количество денег с бонусного баланса, которое было снято за выполнение задания. Для ACC поле всегда будет равно 0, т.к. оплата производится в 🔅монетах
"remaining_points": 2314, // остаток средств на балансе ⭐баллов после выполнения задания
"remaining_rpoints": 828.6427624, // остаток средств на балансе 🔅монет после выполнения задания
"remaining_repost_points": 0, // остаток баллов на балансе репостов после выполнения задания
"remaining_balance": 1, // остаток средств на основном балансе после выполнения задания
"remaining_rbalance": 5054.625 // остаток средств на бонусном балансе после выполнения задания
},
"language": "",
"prompt": "",
"status": 2, // статус задания, где 2 - успешное завершение
"status_description": "completed", // текстовое пояснение к статусу задания, где completed означает успешное завершение
"start_at": 1716155820, // unixtime, время начала выполнения задания
"finish_at": 1716155857, // unixtime, время завершения выполнения задания
"created_at": 1716155819, // unixtime, время подачи задания клиентом
"updated_at": 1716155919 // unixtime, время последнего обновления статуса задания
},
{
"id": 25, // уникальный {id} дочернего задания в системе Yes Ai
"user_id": 31234567,
"tariff_id": 30,
"type": 55,
"styles": [],
"settings": { "dress_type": "upper_body" },
"child_ids": [],
"parent_id": 0,
"photo_url": "https://yesai.su/tests/person1.jpeg",
"image_url": "https://yesai.su/tests/clothes1.jpeg",
"result_url": "https://yesai.su/files/stablediffusion/generations/31234567_1716155888768671.png", // ссылка для скачивания второй генерации в пачке заданий
"result_type": "image",
"result_data": {
"image_width": 1024,
"image_height": 1024,
"image_mime_type": "image/png"
},
"comment_ru": "",
"comment_en": "",
"accounting": {
"total_cost": 4.25,
"spent_points": 0,
"spent_rpoints": 4.25,
"spent_repost_points": 0,
"spent_balance": 0,
"spent_rbalance": 0,
"remaining_points": 2314,
"remaining_rpoints": 824.3927624,
"remaining_repost_points": 0,
"remaining_balance": 1,
"remaining_rbalance": 5054.625
},
"language": "",
"prompt": "",
"status": 2,
"status_description": "completed",
"start_at": 1716155889,
"finish_at": 1716155889,
"created_at": 1716155887,
"updated_at": 1716155889
},
{
"id": 26,
// вложенные данные о втором дочернем задании из пачки, см. пример JSON из дочернего задания с id 25
}
]
}
}
}

Имейте в виду, что результаты задачи сохраняются в течение 60 минут после завершения. Обязательно необходимо без промедления передать сгенерированные изображения на ваш сервер.

Если у вас возникнут какие-либо вопросы по использованию API Yes Ai, не стесняйтесь обращаться к нашей технической помощи через Telegram по адресу @yes_ai_support.

3
1 комментарий

Жду когда все генерации станут бесплатными: 👨> 👨‍🦳> ☠️

Ответить