Содержание статьи +
- Кратко
- Почему это важно
- Быстрый ответ: размойте фон прямо сейчас
- Что на самом деле значит «размыть фон»
- Как приложение находит вас: модель сегментации
- Правило 33 миллисекунд, которое управляет всем
- Два способа понять, что такое «фон»: плоский и по глубине
- Что происходит «под капотом» у каждого приложения
- Соберите это в своём продукте
- Где размытие в общей картине
- Где здесь Фора Софт
- Главное
- Что почитать дальше
Кратко
Размыть фон в Zoom, Microsoft Teams или на iPhone – дело двух-трёх касаний, и эта статья покажет, где именно их нужно делать в каждом приложении. За этим простым действием стоит одна и та же идея: небольшая нейросеть анализирует каждый кадр видео и по пикселям определяет, что – вы, а что – комната, после чего размывает только фон. Телефон в руке и ноутбук на столе реализуют это по-разному: iPhone использует данные о расстоянии, чтобы имитировать работу настоящего объектива, а Zoom, Teams и Google Meet полагаются исключительно на распознавание образов по двумерному изображению. Именно эта разница объясняет, почему в одном случае размытие выглядит естественно, а в другом – смазывает контуры по краям. Если вы разрабатываете видеопродукты, последняя треть статьи – это пошаговый рецепт, как добавить такую же функцию в своё приложение, с учётом допустимой задержки и типичных ошибок, которые её нарушают.
Почему это важно
Если вам нужен аккуратный фон на ближайшем звонке, первый раздел поможет разобраться за минуту – для каждого приложения, которым вы, скорее всего, пользуетесь. Если вы разрабатываете софт – будь то продакт-менеджер, основатель или инженер, внедряющий видео в приложение, – остальная часть статьи даёт достаточно подробное объяснение технологии, чтобы вы могли оценить фичу, обсудить её с инженерами и избежать ловушек, из-за которых демо может выглядеть сломанным. Размытие фона – самая востребованная функция камеры в видеозвонках. Она работает полностью на устройстве пользователя и служит отличным введением в real-time ИИ, лежащий в основе всего – от виртуальных фонов до живых субтитров. Понять её один раз – значит понять целое семейство подобных функций.
Быстрый ответ: размойте фон прямо сейчас
Вот где находится управление в каждом приложении. Ни одно из них не отправляет ваше видео куда-либо – размытие происходит прямо на вашем устройстве, и это важно и для скорости, и для приватности (объясним ниже, почему).
Zoom (десктоп). Откройте приложение Zoom, нажмите на фото профиля, затем выберите Settings (значок шестерёнки). В левом меню перейдите в раздел Background & Effects и выберите Blur в блоке Virtual Backgrounds. Во время звонка: найдите кнопку Stop Video внизу слева, нажмите на маленькую стрелку ^ рядом с ней и выберите Blur My Background. Размытие фона доступно бесплатно на всех тарифах Zoom и требует версии Zoom 5.5.0 или новее.
Zoom (телефон или планшет). Во время звонка нажмите Ещё (три точки), затем выберите Фон и эффекты на iPhone или iPad – или Виртуальный фон на Android – и нажмите иконку Размытие. Эффект применяется мгновенно.
Microsoft Teams. Перед входом в звонок на экране предпросмотра камеры нажмите кнопку Background filters (человечек с маленькой сценой за спиной) под превью и выберите Blur. В Teams доступны два режима размытия: Standard blur и Portrait blur. Уже в звонке? Нажмите More (…), затем Effects and avatars, выберите Blur и нажмите Apply. На Windows переключение осуществляется сочетанием клавиш Ctrl+Shift+P, на Mac – Cmd+Shift+P.
iPhone и iPad (FaceTime и любое видеоприложение). Во время видеозвонка FaceTime коснитесь своей видео-плитки и выберите Portrait. Чтобы использовать этот эффект в любом видеоприложении – Zoom, Teams, Webex или браузере – откройте Пункт управления (Control Center), нажмите Video Effects и включите Portrait. Эффект останется активным во всех приложениях до тех пор, пока вы его не отключите. Функция работает на iPhone и iPad с чипом Apple A12 Bionic или новее (то есть iPhone XS и новее) при использовании актуальной версии iOS или iPadOS.
iPhone как камера Mac (Continuity Camera). Когда iPhone используется в качестве камеры для Mac, откройте Пункт управления на Mac, нажмите Video Effects и выберите Portrait. Полезный трюк: нативное размытие эффекта «Портрет» на встроенной камере Mac доступно только на устройствах с Apple Silicon, но если передать изображение через iPhone, тот же эффект становится доступен и на старых Mac на базе Intel.
Google Meet. В звонке нажмите Ещё (⋮), затем выберите Применить визуальные эффекты и установите Размытие – слабое или полное.
Это и есть вся инструкция. Остальная часть статьи объясняет, что на самом деле происходит при нажатии этой кнопки – и как собрать такую же систему самостоятельно.
Что на самом деле значит «размыть фон»
Звучит так, будто приложение замазывает часть изображения, и визуально это и есть результат. Но сложная часть – не размытие. Сложная часть – вопрос, который стоит первым: какие пиксели – фон, а какие – вы.
Представьте кадр видео как сетку крошечных цветных квадратиков – это точки яркости и цвета, называемые пикселями, из которых состоит любое цифровое изображение. Чтобы размыть только фон, программа должна определить для каждого такого квадратика, является ли он человеком или не человеком – и делать это на каждом кадре, тридцать раз в секунду. Эта работа по разметке называется сегментацией – разбиением изображения на осмысленные области. Здесь используется сегментация человека: отделить человека от всего остального.
Результат сегментации – это второе, более простое изображение того же размера, что и видео, называемое маской (инженеры также говорят matte, матовая маска). В маске каждый пиксель, принадлежащий вам, отмечен белым, а каждый пиксель комнаты – чёрным. Представьте её как трафарет, вырезанный точно по форме вашего тела и волос. Как только программа получает такой трафарет, всё становится проще: оставить чёткие пиксели там, где трафарет белый, и размыть те, где он чёрный.
Так что размытие фона – это на самом деле два шага под одной кнопкой: сначала найти человека (шаг ИИ), затем размыть всё остальное (простой шаг). Зелёный экран делает ту же работу с помощью цветной ткани и кучей студийного света. Размытие фона выбрасывает ткань и просит нейросеть найти ваш контур.
Как приложение находит вас: модель сегментации
Шаг «найти человека» выполняет маленькая нейросеть – программа, обученная на сотнях тысяч размеченных фото, пока не научилась распознавать зрительный паттерн «человек перед камерой». Вы не задаёте ей правила вроде «руки цилиндрические, волосы пушистые» – вы показываете сети достаточно примеров, и она сама выучивает эти правила.
Самая распространённая модель для этой задачи в браузерах и приложениях – MediaPipe Selfie Segmentation от Google. Она специально создана компактной. В модели около 106 000 внутренних чисел (инженеры называют их параметрами), а сам файл занимает примерно 454 килобайта – меньше, чем одна фотография. Архитектура основана на компактной модели распознавания изображений MobileNetV3, разработанной для работы на смартфонах, а не на серверном оборудовании. Модель уменьшает кадр видео до небольшого квадрата – 256 на 256 пикселей, – обрабатывает его и масштабирует полученную маску обратно. Меньший размер входных данных означает меньше вычислений, а значит, модель успевает работать в реальном времени.
Почему 256 на 256, а не полный кадр? Потому что маске не нужно быть идеально чёткой, чтобы хорошо выглядеть после размытия – само размытие скрывает мелкие погрешности по краям. Работа с уменьшенным кадром – это компромисс, который делает реальное размытие возможным на телефоне.
Правило 33 миллисекунд, которое управляет всем
Вот ограничение, которое определяет каждое проектное решение в этой функции. Видео идёт примерно на 30 кадрах в секунду – 30 неподвижных картинок, показанных подряд, как в флипбуке: движение создаётся из последовательности рисунков. Сделаем деление вслух:
1 секунда / 30 кадров = 0,0333 секунды на кадр
0,0333 секунды × 1000 = 33,3 миллисекунды на кадрЗначит, новый кадр приходит примерно каждые 33 миллисекунды (миллисекунда – это одна тысячная секунды). Оба шага – найти человека и размыть фон – должны уложиться в это время. Если обработка занимает больше 33 миллисекунд, приложение не успевает: оно либо теряет кадры (видео начинает подёргиваться), либо отстаёт (вы выглядите с задержкой).
Поэтому так важен чип, который выполняет вычисления. Та же модель MediaPipe обрабатывает кадр меньше чем за 3 миллисекунды на GPU – графическом процессоре, изначально созданном для отрисовки игровой графики и способном выполнять тысячи мелких вычислений одновременно. Запустите ту же модель на обычном CPU, и она займёт от 90 до 120 миллисекунд – в три-четыре раза больше, чем весь бюджет одного кадра. Та же модель, тот же кадр – разница только в том, какой чип работает. Именно этот разрыв объясняет, почему функции выглядят плавными на современном устройстве и рваными на старом.
Сделаем бюджет конкретным. Допустим, шаг сегментации занимает 4 миллисекунды, а шаг размытия – 6 миллисекунд:
4 мс (сегментация) + 6 мс (размытие) = 10 мс всего
33 мс бюджет − 10 мс занято = 23 мс в запасе → плавноТеперь представьте ту же работу на слабом CPU, где одна сегментация занимает 95 миллисекунд:
95 мс (сегментация) > 33 мс бюджет → каждый третий кадр роняетсяМатематика беспощадна: она одна и та же – работаете ли вы с Zoom или разрабатываете собственное приложение. Как это вписывается в общий тайминг живого звонка, мы подробно разбираем в нашем материале про бюджет задержки real-time до 100 мс.
Два способа понять, что такое «фон»: плоский и по глубине
Теперь самое интересное – и причина, по которой размытый фон на вашем iPhone обычно выглядит лучше, чем на ноутбуке. Существует два принципиально разных подхода к определению того, что считать фоном, и крупные приложения используют оба эти метода.
Первый способ – только сегментация, по одной плоской картинке. Модель анализирует цвета, формы и контуры, чтобы определить, где заканчивается человек и начинается фон – комната, например. Она не знает, насколько далеко находятся объекты; ей важно лишь «это похоже на человека, а это – на стену». Zoom, Microsoft Teams и Google Meet используют именно такой подход, потому что должны работать на любой обычной веб-камере, снимающей плоское изображение без данных о глубине.
Второй способ добавляет глубину. Эффект Portrait на iPhone не просто распознаёт форму объекта – он измеряет, насколько далеко находится каждая часть сцены, и размывает её в зависимости от расстояния, как настоящий объектив. Телефон получает информацию о глубине благодаря наличию нескольких объективов: небольшая разница в ракурсе между ними позволяет определить расстояние – точно так же, как это делают наши два глаза. На моделях Pro эту информацию дополняет датчик LiDAR, который активно измеряет расстояние. Apple объединяет карту глубины с маской сегментации человека, рассчитанной на Neural Engine – специальном чипе внутри телефона, предназначенном для вычислений в области искусственного интеллекта, – и получает размытие, которое плавно усиливается по мере удаления фона.
Этот плавный спад и есть причина, по которой Portrait выглядит «кинематографично». Настоящий объектив не размывает фон равномерно: предметы сразу за вами слегка размыты, а дальняя стена – сильно. Фотографы называют размер каждой несфокусированной точки кругом нерезкости (circle of confusion): чем дальше точка от плоскости фокусировки, тем больше и мягче её размытый диск. Размытие по глубине воспроизводит этот эффект. Плоское размытие по сегментации – нет: без данных о расстоянии оно размывает весь фон на одну и ту же величину, из-за чего может выглядеть так, будто вы приклеены к матовому стеклу.
| Размытие по сегментации | Размытие по глубине | |
|---|---|---|
| Где используется | Zoom, Teams, Google Meet, большинство веб-камер | iPhone / iPad Portrait, Continuity Camera |
| Как решает | ML угадывает человек/фон по плоской картинке | Измеряет расстояние по пикселям, размывает по нему |
| Какое железо нужно | любая одна камера | несколько объективов или датчик LiDAR |
| Характер размытия | равномерное; весь фон одинаково мягкий | градиентное; ближе – резче, дальше – мягче |
| Типичная слабость | ореолы и смазывание на волосах и очках | нужно железо Apple; менее переносимо |
Таблица 1. Два инженерных подхода к размытию фона и почему портретный режим iPhone обычно выглядит естественнее, чем размытие от веб-камеры.
Что происходит «под капотом» у каждого приложения
Приложения по-разному устроены, если заглянуть за кнопку.
Google Meet наиболее прозрачен в документации, поскольку работает в браузере – там просто нечего скрывать. Инженеры Google намеренно запускают модель сегментации на CPU, а не на GPU, используя библиотеку XNNPACK, которая максимально эффективно использует процессор через WebAssembly (технологию, позволяющую выполнять код почти с нативной скоростью в браузере). Выбор в пользу CPU обусловлен стремлением к максимальной совместимости с устройствами и минимальным расходом энергии. Модель выдаёт маску низкого разрешения, уточняет её границы под реальное изображение, а само размытие передаёт на GPU через WebGL2 (графический интерфейс браузера). Шейдер размытия имитирует работу объектива: он изменяет степень размытия для каждого пикселя пропорционально маске и взвешивает пиксели так, чтобы чёткие элементы переднего плана не «протекали» в виде ореола на мягкий фон.
Apple полностью полагается на выделенное железо. Neural Engine генерирует качественную маску человека кадр за кадром с достаточной скоростью для стабильных 60 кадров в секунду во время живого звонка. Поскольку обработка выполняется на специализированном чипе, а не на универсальном GPU-шейдере, расход батареи остаётся низким – именно поэтому эффект размытия портретного режима почти не влияет на автономность iPhone. Apple разрабатывает технологию точных масок с 2019 года, когда впервые представила сегментационные matte, способные выделять не только человека, но и отдельные элементы – волосы, кожу и зубы.
Zoom и Microsoft Teams поставляют собственные модели сегментации, оптимизированные под десктопы и телефоны. Самый заметный след, который они оставляют с инженерной точки зрения, – это требования к «железу»: для работы Teams нужен процессор с поддержкой AVX2, набора инструкций CPU, ускоряющих именно ту массовую математику, что требуется для сегментации. Именно поэтому размытие фона просто не включается на некоторых старых или виртуализированных машинах – чип не справляется с вычислениями в нужном темпе, и функция отключается, чтобы не тормозить работу.
«Типичная ловушка: страх «не загружают ли мой фон?» – и его обратная сторона. Каждое размытие, описанное здесь, происходит на вашем устройстве: сырые кадры с камеры не отправляются на сервер. Это хорошо для приватности. Однако это создаёт ловушку для разработчиков: размытие – косметическое, а не защищённое. Несжатый кадр всё ещё остаётся в памяти устройства, и плохо написанное приложение может на долю секунды показать чёткий кадр – до того, как модель загрузится и начнёт работать. Если ваш продукт использует размытие фона ради приватности – например, в телемедицине, юридической сфере или HR – вы обязаны блокировать первые кадры до полной готовности модели, а не полагаться на то, что размытие происходит мгновенно.»
Соберите это в своём продукте
Если вы добавляете размытие фона в свой веб-видеопродукт, браузер теперь предоставляет все необходимые детали, а архитектура повторяет три этапа, показанные на Рисунке 2. Подробный разбор выбора модели см. в нашем уроке по MediaPipe Selfie Segmentation с WebGPU; здесь же представлена общая структура всего конвейера.
Вы подключаетесь к потоку камеры на уровне сырых кадров – этапе конвейера, где кадр ещё представляет собой несжатое изображение с реальными пикселями. Браузер использует два объекта: MediaStreamTrackProcessor, который передаёт вам каждый поступающий кадр с камеры, и MediaStreamTrackGenerator, позволяющий вернуть изменённый кадр в вызов. Между ними происходит ваше преобразование: кадр подаётся на модель сегментации, получается маска, после чего размытую копию накладывают на чёткий оригинал, используя маску в качестве трафарета.
// Берём каждый кадр камеры, сегментируем, размываем фон, возвращаем обратно.
const processor = new MediaStreamTrackProcessor({ track: cameraTrack });
const generator = new MediaStreamTrackGenerator({ kind: "video" });
const transformer = new TransformStream({
async transform(frame, controller) {
const mask = await segmenter.segment(frame); // человек или фон
const output = composite(frame, blur(frame), mask); // вы резкие, комната мягкая
controller.enqueue(output);
frame.close(); // освобождаем память каждый кадр
},
});
processor.readable.pipeThrough(transformer).pipeTo(generator.writable);
const blurredStream = new MediaStream([generator]); // это отправляем в звонокДля модели сегментации MediaPipe Image Segmenter от Google доступна готовая JavaScript-сборка с той же моделью Selfie Segmentation, что используется в крупных приложениях. Этапы размытия и наложения выполняйте на GPU – через WebGL2, как в Google Meet, или более современный WebGPU, который к концу 2025 года станет доступен по умолчанию в Chrome, Edge, Firefox и Safari. Размытие на CPU – самая частая причина того, что самописная версия работает с рывками.
Три ошибки ломают большинство первых попыток. Ореолы по краям: маска никогда не бывает идеальной на волосах и очках, поэтому жёсткая граница оставляет светящуюся кайму – растушуйте край маски на несколько пикселей, чтобы переход был плавным. Временное мерцание: поскольку модель пересчитывает маску на каждом кадре, её край дрожит от кадра к кадру, и контур начинает мерцать – смешивайте текущую маску с предыдущей, чтобы сгладить колебания. Утечки памяти: каждый VideoFrame занимает реальную память и должен явно освобождаться каждый кадр, иначе вкладка падает уже через несколько минут. Сделайте эти три вещи правильно – и размытие в браузере будет действительно production-уровня.
Где размытие в общей картине
Размытие фона – самый мягкий инструмент из большого семейства real-time ИИ-функций камеры, использующих двухэтапную схему: сначала анализ кадра, затем его изменение. Виртуальные фоны применяют ту же маску, но вместо размытия накладывают изображение. Бьюти-фильтры и коррекция взгляда работают с передним планом, а не с фоном. Живые субтитры используют отдельную модель, обрабатывающую звук, а не видео. Все эти функции находятся на одном этапе конвейера – на уровне сырых кадров – и подчиняются одному и тому же ограничению в 33 миллисекунды. Освоив размытие, вы поймёте общий принцип. А сможете ли вы вообще добраться до уровня сырых кадров – зависит от выбранного video SDK. Подробности – в нашем сравнении WebRTC AI API и video SDK.
Есть и регуляторный нюанс. Поскольку размытие основано на обнаружении человека, технически это детектор лица и тела, и там, где оно переходит в распознавание – определение, кто этот человек, – вступают в силу европейские правила. Само по себе размытие никого не идентифицирует, поэтому остаётся вне регулирования, но командам, добавляющим дополнительный анализ поверх, стоит ознакомиться с нашим разбором про обнаружение лиц и EU AI Act до релиза.
Где здесь Фора Софт
Мы делаем real-time видеопродукты с 2005 года – видеоконференции, WebRTC-приложения, e-learning, телемедицину и живое видеонаблюдение – и эффекты камеры на устройстве, такие как размытие фона, являются одними из самых востребованных функций у наших клиентов. Проблема редко в самом размытии – она в том, чтобы оно стабильно работало на тысячах разных камер, телефонов и в различных условиях освещения, не разряжая батарею и не вызывая резких сбоев в неподходящий момент. Особенно в телемедицине, где размытый фон защищает личное пространство пациента, различие между косметическим размытием и защитой приватности – это инженерное решение, принятое на раннем этапе. Мы помогаем командам выбрать подходящую модель, чип и конвейер обработки под конкретный продукт, чтобы функция, выглядящая просто в демо, продолжала работать на пятилетнем телефоне в плохо освещённой комнате.
Главное
- Размытие фона – всего два-три касания в Zoom, Teams, FaceTime и Meet; Рисунок 1 показывает все пути.
- Под кнопкой работает небольшая нейросеть, которая помечает каждый пиксель как «человек» или «фон», после чего размывает только фон.
- Вся обработка размытия происходит на устройстве – это хорошо для приватности, но само размытие носит косметический, а не защищённый характер.
- Режим портретной съёмки на iPhone размывает фон на основе измеренного расстояния, что выглядит естественнее, чем плоское размытие веб-камер.
- Вся функция должна обрабатываться за 33 миллисекунды на кадр, поэтому для плавной работы требуется GPU.
- Эту же функцию можно реализовать в браузере: получить доступ к сырым кадрам, использовать модель MediaPipe и выполнить размытие на GPU.