Поиск и редактирование (размытие) лиц с помощью предустановки детектора лиц

Логотип Служб мультимедиа версии 3


Предупреждение

Поддержка Служб мультимедиа Azure будет прекращена 30 июня 2024 г. Дополнительные сведения см. в руководстве по прекращению поддержки AMS.

Важно!

Как указано в ее стандартах ответственного применения ИИ, корпорация Майкрософт стремится к справедливости, конфиденциальности, безопасности и прозрачности в отношении систем ИИ. В соответствии с этими стандартами Службы мультимедиа Azure прекращает использование предустановки Видеоанализатора 14 сентября 2023 г. В настоящее время эта предустановка позволяет извлекать различную видео- и аудиоаналитику из видеофайлов. Клиенты могут скорректировать текущие рабочие процессы с помощью более широкого набора функций, предлагаемого Индексатором видео Azure.

API-интерфейс служб мультимедиа Azure v3 включает предустановку детектора лиц, которая предлагает масштабируемые средства обнаружения и исправления (размытия) лиц в облаке. Функция скрытия лиц позволяет изменять видео, размывая изображения лиц выбранных пользователей. Вы можете использовать функцию скрытия лиц в ситуациях, требующих соблюдения общественной безопасности, а также при работе с новостями. Редактирование короткого материала с несколькими лицами вручную может занять несколько часов, тогда как при использовании функции редактирования лиц достаточно выполнить несколько простых действий.

Соответствие требованиям, конфиденциальность и безопасность

В качестве важного напоминания вы должны соблюдать все применимые законы при использовании аналитики в службах мультимедиа Azure. Вы не должны использовать службы мультимедиа Azure или любую другую службу Azure способом, нарушающим права других лиц. Перед отправкой любого видеоконтента, включая любые биометрические данные, в службу Azure Media Services для обработки и хранения данных необходимо иметь все необходимые права, в том числе все возможные разрешения, от отдельных пользователей, имеющихся в видеоконтенте. Чтобы узнать о соответствии требованиям, конфиденциальности и безопасности в Azure Media Services, см. Условия Microsoft Cognitive Services. Сведения об обязательствах Майкрософт по обеспечению конфиденциальности и обработке ваших данных см. в Заявлении о конфиденциальности, Условиях использования веб-служб (OST) и Приложении к обработке данных (DPA). Дополнительные сведения о конфиденциальности, в том числе о хранении, удалении и уничтожении данных, доступны в OST. Используя Azure Media Services, вы обязуетесь соблюдать Условия Cognitive Services, OST, DPA и Заявление о конфиденциальности

Режимы скрытия лиц

Во время работы этой функции в каждом видеокадре лица определяются и отслеживаются на протяжении всей записи. Таким образом, лицо одного и того же человека можно размыть, даже если оно снято с другого ракурса. Процесс автоматического скрытия сложен, и не всегда есть 100 % гарантии, что будет размыто каждое лицо. По этой причине для повышения качества и точности размытия с помощью этапа редактирования перед отправкой файла для окончательного этапа размытия можно использовать режим с двумя проходами.

В дополнение к полностью автоматическому объединению, двухэтапный рабочий процесс позволяет выбирать лица, которым вы хотите сделать размытие (или не делать размытие), с помощью списка идентификаторов лиц. Чтобы внести произвольные изменения для каждого кадра, предустановка использует файл метаданных в формате JSON в качестве входных данных для второго прохода. Этот рабочий процесс разделен на два режима: анализ и скрытие.

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

Объединенный режим

Это создает отредактированный видеофайл MP4 за один проход без какого-либо ручного редактирования файла JSON. Выходные данные в папке Asset для задания будут представлять собой один MP4-файл, содержащий размытые лица с использованием выбранного эффекта размытия. Используйте свойство Resolution со значением SourceResolution, чтобы добиться наилучших результатов для исправления.

Этап Имя файла Примечания
Входной ресурс-контейнер "ignite-sample.mp4" Видео в формате WMV, MOV или MP4
Предустановленная конфигурация Конфигурация детектора лиц mode: FaceRedactorMode.Combined, blurType: BlurType.Med, resolution: AnalysisResolution.SourceResolution
Выходной ресурс-контейнер "ignite-redacted.mp4 Видео с эффектом размытия, примененные к лицам

Режим анализа

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

Этап Имя файла Примечания
Входной ресурс-контейнер "ignite-sample.mp4" Видео в формате WMV, MPV или MP4
Предустановленная конфигурация Конфигурация детектора лиц режим: FaceRedactorMode.Analyze, разрешение: AnalysisResolution.SourceResolution
Выходной ресурс-контейнер ignite-sample_annotations.json Аннотация с данными о расположении лиц в формате JSON. Идентификатор лица не обязательно должен совпадать при последующих запусках прохода анализа. Вы можете отредактировать эти данные, чтобы изменить границы размытия. См. пример ниже.
Выходной ресурс-контейнер foo_thumb%06d.jpg [foo_thumb000001.jpg, foo_thumb000002.jpg] Обрезанный JPG-файл с изображением каждого обнаруженного лица, где номер соответствует идентификатору метки лица.

Пример выходных данных

{
  "version": 1,
  "timescale": 24000,
  "offset": 0,
  "framerate": 23.976,
  "width": 1280,
  "height": 720,
  "fragments": [
    {
      "start": 0,
      "duration": 48048,
      "interval": 1001,
      "events": [
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [],
        [
          {
            "index": 13,
            "id": 1138,
            "x": 0.29537,
            "y": -0.18987,
            "width": 0.36239,
            "height": 0.80335
          },
          {
            "index": 13,
            "id": 2028,
            "x": 0.60427,
            "y": 0.16098,
            "width": 0.26958,
            "height": 0.57943
          }
        ],

    ... truncated

Режим "исправить" (размытие)

Во время второго этапа рабочий процесс принимает большее количество входных данных для объединения в один ресурс-контейнер.

Сюда входит список идентификаторов размываемых лиц, исходное видео и аннотации в формате JSON. Этот режим использует аннотации для применения размытия ко входному видео.

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

Этап Имя файла Примечания
Входной ресурс-контейнер "ignite-sample.mp4" Видео в формате WMV, MPV или MP4. То же видео, что и на этапе 1.
Входной ресурс-контейнер "ignite-sample_annotations.json" Файл метаданных заметок, начиная с первого этапа, с дополнительными изменениями, если вы хотите изменить лица с размытием. Это необходимо изменить во внешнем приложении, коде или текстовом редакторе.
Входной ресурс-контейнер "ignite-sample_IDList.txt" (необязательно) (Необязательно.) Новый список идентификаторов скрываемых лиц со строками-разделителями. Если оставить это поле пустым, то все лица в источнике будут иметь размытие. Можно использовать список, чтобы выборочно отказаться от размытия отдельных лиц.
Предустановка детектора лиц Предустановленная конфигурация режим: FaceRedactorMode.Redact, blurType: BlurType.Med
Выходной ресурс-контейнер "ignite-sample-redacted.mp4" Видео с размытием, примененным на основе аннотаций

Пример выходных данных

Выходные данные из списка идентификаторов с одним выбранным идентификатором. Идентификатор лица не обязательно должен совпадать при последующих запусках прохода анализа.

Пример foo_IDList.txt

1
2
3

Типы размытия

В режиме Combined (Объединенный) или Redact (Скрытие) существует 5 различных режимов размытия, которые можно выбирать с помощью входной конфигурации JSON: Low (Низкий), Med (Средний), High (Высокий), Box (Рамка) и Black (Черный). По умолчанию используется режим Med (Средний).

Примеры типов размытия можно просмотреть ниже.

Низкий

Пример настройки размытия с низким разрешением.

Средний

Пример параметра размытия среднего разрешения.

Высокий

Пример настройки размытия высокого разрешения.

Box

Режим Box для использования при отладке выходных данных.

Черный

Режим черного квадрата закрывает все лица черными квадратиками.

Элементы выходного JSON-файла

Обработчик мультимедиа с функцией скрытия лиц обеспечивает высокую точность обнаружения и отслеживания лиц с возможностью определения до 64 человеческих лиц в одном видеокадре. Скрытие лиц в анфас выполняется с лучшим результатом по сравнению с лицами в профиль или небольшим лицами (не более 24x24 пикселей), которые сложнее обработать.

Задание создает выходной файл JSON c метаданными об обнаруженных и отслеживаемых лицах. Метаданные включают координаты, указывающие расположение лиц, а также идентификационный код лица, указывающий на отслеживание этого человека. Если лицо в анфас теряется или перекрывается в кадре, его идентификационный номер может быть сброшен, в результате чего нескольким людям назначаются несколько идентификаторов.

Выходной файл JSON включает следующие элементы:

Элементы корневого JSON

Элемент Описание
version Версия API видео.
timescale Количество тактов в секунду видео.
offset Смещение времени для отметки времени. В API видео версии 1.0 это значение всегда равно 0. В будущих поддерживаемых сценариях это значение может измениться.
width, hight Ширина и высота выходного видеокадра в пикселях.
framerate Количество кадров в секунду видео.

Элементы JSON фрагментов

Элемент Описание
start Время начала первого события в тактах.
длительность Продолжительность фрагмента в тактах.
индекс Определяет индекс кадра текущего события (применяется только к Azure Media Redactor).
interval Интервал каждой записи события внутри фрагмента в тактах.
события Каждое событие содержит лица, обнаруженные и отслеживаемые в течение этого промежутка времени. Оно представляет собой массив событий. Внешний массив представляет один интервал времени. Внутренний массив состоит из нуля или более событий, которые выполнялись в этот момент времени. Пустые скобки означают, что лица не обнаружены.
идентификатор Идентификатор отслеживаемого лица. Если лицо становится необнаруживаемым, это значение может быть случайным образом изменено. Человек должен иметь один и тот же идентификатор на протяжении всего видео, однако это условие не может быть гарантированным из-за ограничений алгоритма обнаружения (перекрытие и т. д.).
x, y Верхние левые координаты X и Y прямоугольника, ограничивающего лицо, в нормализованном масштабе от 0,0 до 1,0.
Координаты X и Y всегда указываются в альбомной ориентации, поэтому при наличии портретного видео (или перевернутого — в iOS) потребуется соответствующим образом поменять координаты.
width, height Ширина и высота прямоугольника, ограничивающего лицо, в нормализованном масштабе от 0,0 до 1,0.
facesDetected Этот элемент находится в конце результатов JSON и означает количество лиц, обнаруженных алгоритмом на видео. Поскольку идентификаторы могут быть случайно сброшены в случае невозможности обнаружения лица (например, человек пропадает с экрана, отворачивается), это число не всегда соответствует реальному количеству лиц на видео.

Справка и поддержка

Вы можете обратиться к Службам мультимедиа с вопросами или следить за нашими обновлениями одним из следующих способов: