Поиск и редактирование (размытие) лиц с помощью предустановки детектора лиц
Предупреждение
Поддержка Служб мультимедиа 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
Черный
Элементы выходного 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 и означает количество лиц, обнаруженных алгоритмом на видео. Поскольку идентификаторы могут быть случайно сброшены в случае невозможности обнаружения лица (например, человек пропадает с экрана, отворачивается), это число не всегда соответствует реальному количеству лиц на видео. |
Справка и поддержка
Вы можете обратиться к Службам мультимедиа с вопросами или следить за нашими обновлениями одним из следующих способов:
- ВОПРОСЫ И ОТВЕТЫ
- Stack Overflow. Пометьте вопросы тегом
azure-media-services
. - @MSFTAzureMedia или используйте @AzureSupport , чтобы запросить поддержку.
- Отправьте запрос в службу поддержки через портал Azure.