Живая камера

Замена лиц в реальном времени на локальном ПК: GPU, FPS, камера и приватность

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

  • Обновлено 25 июля 2026
  • 11 мин чтения

Коротко: Замена лиц в реальном времени выполняет весь путь «детекция — замена — композитинг» для каждого кадра веб-камеры прямо на вашей машине. Частоту кадров задаёт самый медленный этап, аппаратное ускорение определяет практическую пригодность, а больше всего FPS обычно съедает улучшение лица.

Экспорт видео может занимать сколько угодно. Живой предпросмотр — нет. При 30 FPS на кадр есть около 33 миллисекунд, чтобы захватить изображение, найти лица, заменить их, при необходимости восстановить и вывести на экран. Всё дальнейшее следует из этого ограничения.

Перед выходом в живой режим

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

1. Что происходит с каждым кадром камеры

Живой путь — это цикл, и у каждого этапа есть цена:

  • Захват. Кадр берётся с камеры в запрошенном разрешении и с запрошенной частотой.
  • Детекция и анализ. Лица в кадре находятся и описываются, включая эмбеддинг, по которому решается, кто есть кто.
  • Назначение. Каждое найденное лицо сопоставляется с исходным: либо общий источник по умолчанию, либо ближайшее совпадение среди сопоставленных личностей.
  • Замена. Модель выполняется по разу на каждую пару «источник — цель», результат накладывается на кадр.
  • Необязательное восстановление. Если улучшение включено и среда выполнения поддерживает его в живом режиме, на каждое лицо выполняется проход восстановления.
  • Вывод. Готовый кадр кодируется и передаётся в окно приложения по локальному loopback-соединению.

Отсюда сразу два следствия. Первое: конвейер считается на лицо, а не на кадр — два человека в кадре примерно удваивают работу замены и восстановления. Второе: видимая частота кадров задаётся самым медленным этапом, поэтому более быстрая камера не поможет, если узкое место — улучшение.

2. Захват камеры: что приложение просит и что получает

Deep Face Cam открывает камеру с запросом 960×540 при 60 FPS в MJPG, а затем считывает то, что устройство выдало на самом деле. Этот запрос сделан осознанно: 540p — разумное рабочее разрешение для живого режима, а запрос MJPG при открытии особенно важен в Windows, где веб-камера, оставшаяся в несжатом формате, может упереться в пропускную способность и выдавать единицы кадров в секунду.

В Windows приложение сначала пробует DirectShow, затем Media Foundation и только потом общий запасной вариант, потому что эти бэкенды перечисляют камеры в разном порядке и не каждое устройство одинаково работает с каждым из них. В macOS используется AVFoundation с общим запасным вариантом.

Реальная частота кадров измеряется эмпирически, а не берётся из отчёта драйвера, потому что в DirectShow это значение ненадёжно: камера, выдающая 60 FPS, часто сообщает 30. Чтобы увидеть измеренное значение, включите Show FPS в панели настроек.

3. Execution provider: настройка, которая решает всё остальное

Инференс идёт через ONNX Runtime, и выбранный execution provider — крупнейший отдельный фактор живой производительности. Бэкенд определяет доступное при запуске и предпочитает в таком порядке:

ПровайдерПлатформаПримечания
CUDAWindows, видеокарты NVIDIAЛучшая производительность на NVIDIA, но чувствителен к совместимости драйвера, CUDA и cuDNN.
ROCmВычислительный стек AMDПри наличии предпочитается перед CoreML и DirectML.
CoreMLmacOS, Apple siliconИспользуется вместо PyTorch MPS; может работать на CPU, GPU и Neural Engine в зависимости от разбиения модели.
DirectMLWindowsШирокая поддержка видеокарт NVIDIA, AMD и Intel.
CPUВсе платформыМаксимальная совместимость, минимальная скорость. Пригоден для экспорта, тяжелее всего в живом режиме.

Windows поставляется отдельными сборками CPU, DirectML и CUDA из разных наборов зависимостей, поэтому выбор правильного установщика — часть этого решения, а не переключатель, который меняют потом. На Apple silicon приложение дополнительно пишет кэш-файлы CoreML в ваш каталог моделей, из-за чего первый запуск модели может быть медленнее последующих.

Отдельно стоит помнить: живое восстановление лица включается только при CUDA или DirectML. На других провайдерах живой конвейер выполняет лишь замену, тогда как экспорт изображений и видео по-прежнему может использовать любое улучшение. Подробности — в сравнении GFPGAN и GPEN.

4. Куда уходят ваши FPS

Если живой предпросмотр тормозит, идите по списку сверху вниз. Он отсортирован по тому, сколько времени обычно стоит каждый пункт относительно того, насколько легко его изменить.

ФакторВлияниеЧто попробовать первым
Улучшение лицаНаибольшее. Полный проход восстановления на каждое лицо в каждом кадре.Выключить или перейти на модель 256.
Число лицВысокое. И замена, и восстановление считаются на лицо.Скомпонуйте кадр так, чтобы в нём были только нужные лица.
Execution providerВысокое. Живой режим только на CPU — самый тяжёлый случай.Поставьте сборку под вашу видеокарту.
Разрешение захватаСреднее. Влияет на стоимость детекции и композитинга.Держите живое разрешение умеренным: это не экспорт.
Формат камерыСреднее и часто незаметное. Несжатый формат душит само устройство.Проверьте измеренную частоту через Show FPS.
Другая нагрузка на GPUПеременное. Игры, энкодеры и браузеры делят то же устройство.Закройте тяжёлые для GPU приложения на время сеанса.
Тепловые ограниченияПостепенное. Ноутбуки снижают частоты через несколько минут.Оценивайте устойчивый FPS, а не первые тридцать секунд.

Различайте частоту кадров и задержку. Предпросмотр может идти с комфортной частотой и всё равно ощущаться запаздывающим, потому что каждый кадр проходит несколько этапов и буфер. Если мешает именно задержка, снижайте работу на кадр, а не только разрешение.

Бюджет кадра, разрешение захвата и что фиксировать

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

Целевая частота кадровВремя на кадрОстаётся на детекцию, замену и восстановление
15 FPS66.7 ms≈ 61 ms
24 FPS41.7 ms≈ 37 ms
30 FPS33.3 ms≈ 28 ms
60 FPS16.7 ms≈ 12 ms

Третий столбец предполагает около 5 мс на захват и вывод. Это допущение, а не измерение на вашей машине — воспринимайте его как форму задачи, а не как спецификацию.

Разрешение захватаПикселей в кадреОтносительно значения по умолчанию 960 × 540
640 × 360230,4000.44×
960 × 540518,4001.00×
1280 × 720921,6001.78×
1920 × 10802,073,6004.00×

Детекция и композитинг растут вместе с числом пикселей в кадре, а замена и восстановление — вместе с числом лиц. Поэтому повышение разрешения и появление второго человека стоят по-разному.

Что записывать при измерении

ПолеПочему это важно
ОС и вариант сборкиCPU, DirectML и CUDA — разные сборки для Windows; macOS различается по архитектуре.
Execution providerКрупнейший отдельный фактор, а также условие доступности живого восстановления.
GPU и версия драйвераПроизводительность CUDA чувствительна к совместимости драйвера, CUDA и cuDNN.
Разрешение захватаЗадаёт стоимость детекции и композитинга на кадр.
Заявленный и измеренный FPSВ DirectShow камера, выдающая 60 кадров, часто сообщает 30.
Число лиц в кадреЗамена и восстановление считаются на лицо, поэтому работа умножается.
Настройка улучшенияOff / GPEN-256 / GPEN-512 / GFPGAN по устройству различаются по цене на лицо.
Устойчивый FPS через 5 минутНоутбуки снижают частоту; первые тридцать секунд — не реальная цифра.

5. Как получить живой результат, который выдержит эфир

Живой режим прощает меньше, чем рендер файла, потому что вернуться и починить кадр нельзя. Большая часть качества задаётся до старта:

  • Исходный портрет. Резкий, с ровным светом, близко к анфас. Те же правила, что и для видео, но здесь они важнее.
  • Освещение. Ровный фронтальный свет лучше яркого окна за спиной. Контровой свет — самая частая причина того, что живая замена постоянно разваливается.
  • Дистанция и кадрирование. Слишком мелкое лицо даёт детекции меньше материала.
  • Движение. Быстрые повороты головы и рука поперёк лица — те самые кадры, где всё ломается; проверьте их намеренно, прежде чем полагаться на схему.
  • Зеркалирование. Предпросмотр можно отразить по горизонтали: это влияет на естественность ваших движений, но не на геометрию результата.

Когда перед камерой больше одного человека, живое назначение — непрерывное решение по схожести, а не заранее разобранное сопоставление, поэтому оно по своей природе менее стабильно, чем размеченный видеофайл. Разницу объясняет руководство по нескольким лицам.

6. Что такое локальный предпросмотр и чем он не является

Об этом стоит сказать прямо, потому что это самое частое ошибочное предположение о живых инструментах замены лиц. Deep Face Cam показывает живой результат в собственном окне предпросмотра. Он не регистрируется как виртуальная веб-камера уровня системы, поэтому Zoom, Discord, OBS и браузеры не увидят его в списке камер.

Если вывод нужен внутри другого приложения, маршрутизировать его придётся отдельным ПО для захвата экрана или окна — со всеми оговорками по качеству, задержке и платформе. Не считайте, что это работает, пока не проверите конкретную цепочку сами. И помните: выдавать изменённое изображение с камеры за свою настоящую внешность на встрече или при проверке личности — ровно тот сценарий, который запрещают правила ответственного использования.

7. Приватность: что остаётся локальным, а что нет

«Локально» и «офлайн» — не одно и то же утверждение, и эта разница важнее всего именно для живой камеры.

  • Основная обработка на устройстве. Кадры камеры, замену и предпросмотр обслуживает бэкенд, работающий на вашей машине.
  • Предпросмотр идёт через loopback. Встроенный бэкенд отдаёт обработанные кадры в окно приложения по локальному соединению на 127.0.0.1 — это внутренний канал вашего компьютера, а не загрузка.
  • Модели скачиваются один раз и с подтверждением. Крупные файлы моделей не входят в репозиторий; они загружаются в ваш каталог после подтверждения и проверяются по опубликованной контрольной сумме.
  • Сетевая активность остаётся. Установщики, загрузка моделей, ссылки на документацию и проверки обновлений используют сеть.
  • Созданные файлы остаются на диске. Модели, результаты, временные файлы и настройки лежат в пользовательском каталоге данных приложения.

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

Диагностика живого режима

СимптомВероятная причинаЧто проверить
Камера не открываетсяУстройство занято другим приложением или не подходит бэкенд.Закройте другие приложения камеры; в Windows выполняется откат DirectShow → Media Foundation → общий вариант.
Очень низкая частота захватаКамера согласовала несжатый формат.Включите Show FPS и сравните с паспортной частотой камеры.
Улучшение недоступно в живом режимеСреда выполнения не CUDA и не DirectML.Проверьте провайдер; при экспорте изображений и видео улучшение работает.
Лицо пропадает при поворотеДетекция теряет лицо, сильно отклонённое от анфас.Улучшите свет и кадрирование; проверьте диапазон движений заранее.
Лицо попадает не на того человекаЖивое назначение — покадровое решение по схожести.Уменьшите число людей в кадре или используйте работу через файл.
FPS падает через несколько минутТепловое троттлинг-ограничение.Измеряйте устойчивую частоту, а не первые секунды.
Первый запуск заметно медленнееЗагрузка моделей и, на Apple silicon, генерация кэша CoreML.Прогрейте один раз, затем измеряйте.

Частые вопросы

Нужна ли видеокарта для замены лиц в реальном времени?

Путь через CPU выполнит конвейер, но именно в живом режиме ускорение важнее всего, потому что у каждого кадра фиксированный бюджет. По этой причине для Windows есть отдельные сборки CPU, DirectML и CUDA; на Apple silicon используется провайдер CoreML.

Можно ли использовать это как камеру в Zoom, Discord или OBS?

Напрямую нет. Приложение показывает результат в собственном окне и не регистрирует системную виртуальную камеру, поэтому другие приложения не увидят его как источник видео.

Почему живой FPS ниже паспортного значения камеры?

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

Какое разрешение выбрать для живого режима?

Ниже, чем для экспорта. По умолчанию приложение нацелено на захват 960×540 — разумная рабочая точка для предпросмотра; прогонять 4K через конвейер реального времени смысла нет.

Загружает ли живая замена лиц изображение с камеры куда-либо?

Основная обработка идёт на вашей машине, а предпросмотр передаётся по локальному loopback-соединению. Сеть по-прежнему используется для подтверждённых загрузок моделей и ссылок, поэтому проверьте поведение установленной сборки.

Могут ли два человека пользоваться живым режимом одновременно?

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

Настройте живой режим один раз, а дальше измеряйте

Выберите сборку под свою видеокарту, включите Show FPS и протестируйте с выключенным улучшением, прежде чем решать, что ваша машина способна держать.

Связанные руководства