Поделиться через


Удаление фона в изображениях

Внимание

Эта функция теперь устарела. 31 марта 2025 г. API анализа изображений Azure AI 4.0 и службы удаления фона будут прекращены. Все запросы к этой службе завершаются ошибкой после этой даты.

Функция сегментации модели с открытым исходным кодом Флоренция 2 может соответствовать вашим потребностям. Она возвращает альфа-карту, которая помечает разницу между передним планом и фоном, но не изменяет исходное изображение, чтобы удалить фон. Установите модель Florence 2 и попробуйте функцию сегментации по регионам.

Для полнофункционального удаления фона рассмотрите стороннюю программу, например, BiRefNet.

В этой статье показано, как вызвать API анализа изображений 4.0 для сегментирования изображения (отделяйте передний план от фона). В нем также показано, как проанализировать возвращаемые сведения.

Внимание

Фоновое удаление доступно только через прямые вызовы REST API. Он недоступен через SDK.

Внимание

Фоновое удаление доступно только в определенных регионах Azure. См. сведения о доступности регионов

Предварительные требования

В этом руководстве предполагается, что вы успешно выполнили действия, описанные на странице быстрого запуска . Это означает:

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

Аутентификация для сервиса

Чтобы выполнить проверку подлинности в службе анализа изображений, вам потребуются ключ для Компьютерного зрения и URL-адрес конечной точки.

Совет

Не включайте ключ непосредственно в код и никогда не публикуйте его. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье по безопасности служб ИИ Azure.

Проверка подлинности выполняется путем добавления заголовка Ocp-Apim-Subscription-Key в HTTP-запрос и установки его в ваш ключ для визуального распознавания. Вызов выполняется по URL-адресу <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview, который является вашим уникальным URL-адресом конечной точки для компьютерного зрения <endpoint>. Смотрите раздел "Выбор режима" для другой строки запроса, добавляемой в этот URL-адрес.

Выбор изображения для анализа

В коде этого руководства используются удаленные изображения, доступные по URL-адресам. Возможно, вам стоит попробовать разные изображения самостоятельно, чтобы увидеть полный потенциал функций анализа изображений.

При анализе удаленного изображения укажите в тексте запроса его URL-адрес в следующем формате: {"url":"https://learn.microsoft.com/azure/ai-services/computer-vision/images/windows-kitchen.jpg"}. Тип контента должен бытьapplication/json.

Для анализа локального изображения поместите его двоичные данные в текст HTTP-запроса. Тип контента должен быть application/octet-stream или multipart/form-data.

Выбор режима

Задайте для режима строки запроса одно из этих двух значений. Эта строка запроса является обязательной, если вы хотите выполнить сегментацию изображений.

Параметр URL-адреса значение Описание
mode backgroundRemoval Выводит изображение обнаруженного объекта переднего плана с прозрачным фоном.
mode foregroundMatting Выводит изображение альфа-матового слоя в градациях серого, показывающее непрозрачность обнаруженного объекта переднего плана.

Заполненный URL-адрес для удаления фона будет выглядеть следующим образом: <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview&mode=backgroundRemoval

Получение результатов из службы

В этом разделе показано, как вызвать API и проанализировать результаты.

Сервис возвращает ответ HTTP при успешном выполнении 200 с Content-Type: image/png, при этом тело ответа содержит возвращенное изображение PNG в виде двоичного потока.

Например, предположим, что фоновое удаление выполняется на следующем изображении:

Фотография города рядом с водой.

При успешном вызове функции удаления фона в режиме backgroundRemoval в ответе возвращается PNG-изображение с четырьмя каналами.

Фотография города рядом с водой; небо прозрачно.

Следующее одноканавное изображение PNG является ответом для foregroundMatting режима:

Альфа-матовый городской горизонт.

API возвращает изображение того же размера, что и исходный для foregroundMatting режима, но не более 16 мегапикселей (сохранение пропорций изображения) для backgroundRemoval режима.

Коды ошибок

При ошибке ответ службы анализа изображений содержит полезные данные JSON, содержащие код ошибки и сообщение об ошибке. Он также может содержать другие сведения в виде кода и сообщения внутренней ошибки. Например:

{
    "error":
    {
        "code": "InvalidRequest",
        "message": "Analyze query is invalid.",
        "innererror":
        {
            "code": "NotSupportedVisualFeature",
            "message": "Specified feature type is not valid"
        }
    }
}

Ниже приведен список распространенных ошибок и их причин. Элементы списка представлены в следующем формате:

  • Код ответа HTTP
    • Код ошибки и сообщение в ответе JSON
      • [Необязательно] Код внутренней ошибки и сообщение в ответе JSON

Список распространенных ошибок:

  • 400 Bad Request
    • InvalidRequest - Image URL is badly formatted or not accessible. Убедитесь, что URL-адрес изображения является допустимым и общедоступным.
    • InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes. Уменьшите размер изображения, сжимая его и /или изменяя размер, и повторно отправьте запрос.
    • InvalidRequest - The feature 'Caption' is not supported in this region. Эта функция поддерживается только в определенных регионах Azure. См. Краткие требования для начала работы для списка поддерживаемых регионов Azure.
    • InvalidRequest - The provided image content type ... is not supported. Заголовок HTTP Content-Type в запросе не является разрешённым типом:
      • Для URL-адреса изображения Content-Type должен быть application/json
      • Для двоичных данных изображения, Content-Type должен быть application/octet-stream или multipart/form-data.
    • InvalidRequest - Either 'features' or 'model-name' needs to be specified in the query parameter.
    • InvalidRequest - Image format is not valid
      • InvalidImageFormat - Image format is not valid. См. раздел "Требования к изображениям " для поддерживаемых форматов изображений.
    • InvalidRequest - Analyze query is invalid
      • NotSupportedVisualFeature - Specified feature type is not valid. Убедитесь, что строка запроса функций имеет допустимое значение.
      • NotSupportedLanguage - The input language is not supported. Убедитесь, что строка запроса языка имеет допустимое значение для выбранной визуальной функции на основе следующей таблицы.
      • BadArgument - 'smartcrops-aspect-ratios' aspect ratio is not in allowed range [0.75 to 1.8]
  • 401 PermissionDenied
    • 401 - Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource.
  • 404 Resource Not Found
    • 404 - Resource not found. Служба не могла найти пользовательскую модель на основе имени, предоставленного model-name строкой запроса.

Совет

При работе с Azure AI Vision могут возникнуть временные сбои, вызванные ограничениями скорости, применяемыми службой, или другими временными проблемами, такими как сбои сети. Для получения дополнительной информации об обработке этих типов сбоев ознакомьтесь со статьей Шаблон повторов в руководстве по шаблонам проектирования облачных систем и соответствующим шаблоном прерывателя.

Следующий шаг