При обработке видео современные модели сегментации (DeepLabv3, Mask R-CNN и др.) обрабатывают каждый кадр независимо. Это приводит к временной несогласованности — эффекту мерцания мас[...]
Наша система добавляет слой временной стабилизации после сегментации, используя информацию из соседних кадров для сглаживания результатов.
Скользящее среднее усредняет вероятностные карты в пределах временного окна.
Параметры:
Применение:
Универсальное сглаживание, хороший баланс между плавностью и отзывчивостью. Подходит для бол[...]
Медианный фильтр вычисляет медиану по временному окну для каждого пикселя.
Параметры:
Применение:
Устойчив к выбросам, лучше сохраняет резкие границы по сравнению со скользящим средним. Идеал[...]
Экспоненциальное сглаживание — взвешенное среднее, отдающее больший вес недавним кадрам.
Параметры:
Применение:
Адаптивное сглаживание, хорошо подходит для переменной скорости движения объектов.
Использовалась предобученная модель DeepLabv3 с ResNet-101 backbone из torchvision. Сегментация выполнялась для класса "person" (индекс 15 в PASCAL VOC).
Измеряет перекрытие между последовательными кадрами:
Более высокий IoU = большая временная согласованность
Вычисляется как среднее 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% |
Система предоставляет RESTful API на базе FastAPI для интеграции в другие приложения.
POST /api/upload
curl -X POST "http://localhost:8000/api/upload" \
-F "file=@video.mp4"
Возвращает job_id и информацию о видео (fps, количество кадров, разрешение).
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.
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.
GET /api/metrics/{job_id}
curl "http://localhost:8000/api/metrics/YOUR_JOB_ID"
Возвращает IoU, Instability Score и другие метрики.
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 и поддерживает следующие классы:
Автор: Чубарова Дарья Алексеевна
Полный код проекта доступен на GitHub: github.com/NickScherbakov/mask-stabilization
Домашнее задание 5: Временная когерентность масок и Video Object Segmentation