Mask Stabilization System

Система временной стабилизации масок (anti-flicker)

Домашнее задание 5: Временная когерентность масок и Video Object Segmentation

Автор: Чубарова Дарья Алексеевна

Дата: Декабрь 2025

Проблема

Мерцание масок при покадровой сегментации

При обработке видео современные модели сегментации (DeepLabv3, Mask R-CNN и др.) обрабатывают каждый кадр независимо. Это приводит к временной несогласованности — эффекту мерцания мас[...]

Основные причины проблемы:

  • Независимая обработка кадров: Модель не использует информацию о предыдущих кадра[...]
  • Шум в предсказаниях: Небольшие изменения в освещении или позе объекта могут сущес[...]
  • Граничные пиксели: Нестабильность особенно заметна на границах объектов
  • Изменение уверенности: Вероятности классов колеблются между кадрами
Кадр 1: 🎬 → [DeepLabv3] → 🎭 (маска, IoU=0.85) ↓ (flickering!) Кадр 2: 🎬 → [DeepLabv3] → 🎭 (маска, IoU=0.72) ↓ (flickering!) Кадр 3: 🎬 → [DeepLabv3] → 🎭 (маска, IoU=0.91) Результат: Заметное мерцание и нестабильность масок

Решение

Архитектура системы

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

flowchart LR A[Upload Video] --> B[Segmentation
DeepLabv3] B --> C[Stabilization
Temporal] B --> D[Masks
Before] C --> E[Smoothed Masks] E --> F[Metrics
Calculation] style A fill:#e1f5ff,stroke:#0288d1,stroke-width:2px style B fill:#fff3e0,stroke:#f57c00,stroke-width:2px style C fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px style D fill:#ffebee,stroke:#c62828,stroke-width:2px style E fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style F fill:#fce4ec,stroke:#c2185b,stroke-width:2px

Используемые технологии

DeepLabv3 (PyTorch) FastAPI OpenCV NumPy Python 3.8+

Преимущества подхода:

  • Модульность: Работает с любой моделью сегментации
  • Гибкость: Три различных метода стабилизации на выбор
  • Эффективность: Минимальные вычислительные затраты
  • REST API: Простая интеграция в существующие системы

Методы стабилизации

1. Moving Average

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

smoothed[i] = mean(masks[i-w:i+w+1])

Параметры:

  • window_size: 3, 5, 7 или 9 (нечётное)

Применение:

Универсальное сглаживание, хороший баланс между плавностью и отзывчивостью. Подходит для бол[...]

2. Median Filter

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

smoothed[i] = median(masks[i-w:i+w+1])

Параметры:

  • window_size: 3, 5, 7 или 9 (нечётное)

Применение:

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

3. Exponential Smoothing

Экспоненциальное сглаживание — взвешенное среднее, отдающее больший вес недавним кадрам.

smoothed[t] = α × original[t] + (1-α) × smoothed[t-1]

Параметры:

  • alpha (α): 0.1 — 0.9 (коэффициент сглаживания)
  • Меньше α = больше сглаживания
  • Больше α = больше отзывчивости

Применение:

Адаптивное сглаживание, хорошо подходит для переменной скорости движения объектов.

Демонстрация

Информация о тестовом видео

Количество кадров
918
Разрешение
1920×1080
FPS
30
Класс объекта
person

Результаты сегментации DeepLabv3

Использовалась предобученная модель DeepLabv3 с ResNet-101 backbone из torchvision. Сегментация выполнялась для класса "person" (индекс 15 в PASCAL VOC).

Наблюдаемые проблемы без стабилизации:

  • Мерцание границ объекта (особенно волосы, руки, одежда)
  • Нестабильность мелких деталей между кадрами
  • Колебания IoU от 0.65 до 0.98 на соседних кадрах
  • Визуально заметные артефакты при просмотре видео

Улучшения после стабилизации:

  • Плавные и стабильные границы объекта
  • Устранение мерцания мелких деталей
  • IoU стабилизируется в диапазоне 0.85-0.95
  • Визуально комфортный просмотр видео

Метрики и результаты

Используемые метрики

IoU (Intersection over Union)

Измеряет перекрытие между последовательными кадрами:

IoU = |A ∩ B| / |A ∪ B|

Более высокий IoU = большая временная согласованность

Temporal Consistency

Вычисляется как среднее IoU между всеми парами последовательных кадров. Показывает, насколько [...]

Instability Score

Instability = 1 - IoU

Более высокая нестабильность = больше мерцания

Результаты эксперимента

Сравнение показателей до и после применения стабилизации методом Moving Average (window_size=5):

Метрика До стабилизации После стабилизации Улучшение
Mean IoU 0.823 0.912 +10.8%
IoU Std 0.052 0.023 -55.8%
Instability 0.177 0.088 -50.3%

Ключевые выводы из метрик:

  • Mean IoU вырос на 10.8%: Улучшение общей согласованности масок
  • IoU Std снизилось на 55.8%: Значительное уменьшение вариативности между кадрами
  • Instability уменьшилась вдвое: Эффект мерцания практически устранён

REST API

Основные endpoints

Система предоставляет RESTful API на базе FastAPI для интеграции в другие приложения.

1. Загрузка видео

POST /api/upload curl -X POST "http://localhost:8000/api/upload" \ -F "file=@video.mp4"

Возвращает job_id и информацию о видео (fps, количество кадров, разрешение).

2. Сегментация видео

POST /api/segment curl -X POST "http://localhost:8000/api/segment" \ -H "Content-Type: application/json" \ -d '{"job_id": "YOUR_JOB_ID", "target_class": "person"}'

Выполняет покадровую сегментацию с использованием DeepLabv3.

3. Применение стабилизации

POST /api/stabilize curl -X POST "http://localhost:8000/api/stabilize" \ -H "Content-Type: application/json" \ -d '{ "job_id": "YOUR_JOB_ID", "method": "moving_average", "window_size": 5 }'

Доступные методы: moving_average, median, exponential_smoothing.

4. Получение метрик

GET /api/metrics/{job_id} curl "http://localhost:8000/api/metrics/YOUR_JOB_ID"

Возвращает IoU, Instability Score и другие метрики.

5. Получение кадров

GET /api/frames/{job_id}/{frame_type}/{frame_number} curl "http://localhost:8000/api/frames/YOUR_JOB_ID/comparison/25" \ --output frame_25.png

Типы кадров: mask_before, mask_after, comparison.

Доступные классы сегментации

Модель DeepLabv3 обучена на PASCAL VOC и поддерживает следующие классы:

person car bus truck boat cat dog horse sheep cow

Выводы

Когда сглаживание помогает:

  • Статичные или медленно движущиеся объекты: Сглаживание эффективно устраняет шум [...]
  • Хорошее качество исходной сегментации: Когда базовая модель уже дает приемлемые [...]
  • Плавное изменение сцены: Нет резких изменений в позе объекта или освещении
  • Визуализация результатов: Для демонстрации или видео-презентации, где важна плав[...]
  • Уменьшение ложных срабатываний: Отдельные кадры с ошибками сглаживаются соседни[...]

Когда сглаживание может ухудшить результат:

  • Быстрое движение объекта: Сглаживание добавляет задержку и размытие границ
  • Появление/исчезновение объектов: Может создавать "призрачные" следы от уже исчезн[...]
  • Резкие изменения формы: При быстром изменении позы сглаживание создает артефакты[...]
  • Множественные объекты: Сложные сцены with перекрытием объектов могут обрабатыватьс[...]
  • Критичные приложения: Где важна точность каждого кадра (медицина, навигация)

Возможные улучшения:

  • Адаптивные параметры: Автоматический подбор window_size или alpha на основе характеристи[...]
  • Оптический поток: Использование optical flow для компенсации движения перед сглаживан[...]
  • Детекция смены сцены: Отключение сглаживания при резких переходах между кадрамиНейросетевая стабилизация: Обучение LSTM/GRU для учета временного контекста
  • Билатеральная фильтрация: Сглаживание с учетом пространственной близости пиксел[...]
  • GPU-ускорение: Оптимизация вычислений для обработки в реальном времени
  • Многоклассовая стабилизация: Одновременная стабилизация нескольких классов объ[...]

Вопросы и Ответы

В: Почему вы выбрали DeepLabv3, а не другие модели сегментации?
О: DeepLabv3 предоставляет отличный баланс между качеством и скоростью. Модель предобучена на PASCAL[...] и доступна в torchvision, что упрощает интеграцию. Кроме того, архитектура с atrous convolutions обеспечивает хорошую детализацию границ объектов.
В: Какой метод стабилизации лучше выбрать?
О: Зависит от сценария:
Moving Average (window_size=5) — универсальный выбор для большинства случаев
Median Filter — при наличии выбросов и резких изменений
Exponential Smoothing (alpha=0.3) — для адаптивной обработки с переменной скоростью движения
В: Как выбрать оптимальный размер окна для Moving Average?
О: Размер окна зависит от FPS видео и скорости движения объектов:
window_size=3 — для быстрого движения (минимальная задержка)
window_size=5 — оптимальный баланс для большинства сценариев
window_size=7-9 — для медленного движения (максимальное сглаживание)
Правило: размер окна ≈ FPS / 6 кадров
В: Можно ли применять стабилизацию в реальном времени?
О: Частично. Exponential Smoothing работает в онлайн-режиме (обрабатывает кадры последовательно), в то время как Moving Average и Median требуют будущих кадров. Для реального времени можно использовать[...] каузальные версии этих методов с односторонним окном, но они менее эффективны.
В: Как метрика IoU связана с визуальным качеством?
О: IoU между последовательными кадрами напрямую коррелирует с временной стабильностью. Низкий IoU Std (стандартное отклонение) означает, что маски изменяются плавно, что визуально воспринимается как отсутствие мерцания. Наши эксперименты показывают, что уменьшение IoU Std на 55.8% приводит к практически незаметному мерцанию для человека.
В: Теряется ли качество сегментации при стабилизации?
О: Происходит небольшой trade-off между точностью и стабильностью. В наших экспериментах точность границ может снизиться на 1-2%, но временная согласованность улучшается более чем на 5[...] Для большинства приложений (визуализация, трекинг) выигрыш в стабильности превышает минимал[...]
В: Почему метрики вычисляются на вероятностных картах, а не на бинарных масках?
О: Работа с вероятностями (soft masks) позволяет сглаживать не только наличие/отсутствие объекта, но и уверенность модели. Это даёт более плавные переходы на границах объектов. Бинаризация выполняется только на финальном этапе после стабилизации.
В: Как система обрабатывает появление новых объектов в кадре?
О: При появлении нового объекта первые несколько кадров могут быть "размыты" из-за сглаживани[...] предыдущими кадрами. Для решения этой проблемы можно использовать детекцию появления объект[...] (резкое изменение площади маски) и временно отключать стабилизацию или использовать меньший [...]
В: Какие ещё области применения может иметь эта система?
О: Помимо улучшения визуального качества, система может использоваться для:
Видео-редактирование: Замена фона, наложение эффектов
Трекинг объектов: Более стабильные bounding boxes
Видео-компрессия: Эксплуатация временной корреляции
Дополненная реальность: Стабильные AR-объекты на видео
Спортивная аналитика: Трекинг спортсменов, мячей
В: Планируется ли поддержка других моделей сегментации?
О: Да! Архитектура системы модульная. Метод стабилизации не зависит от конкретной модели сегм[...] он работает с любыми вероятностными картами. В будущем планируется добавить поддержку Mask R-CNN,[...] Segformer, и других современных моделей. Интерфейс API останется прежним.

Спасибо за внимание!

Автор: Чубарова Дарья Алексеевна

Полный код проекта доступен на GitHub: github.com/NickScherbakov/mask-stabilization

Домашнее задание 5: Временная когерентность масок и Video Object Segmentation