Видео‑аналитика на GPU: мультикамерные пайплайны

Задача страницы. Дать практический план построения мультикамерной видео‑аналитики на облачных GPU: приём RTSP‑потоков, GPU‑декод, пайплайны инференса (детекция/сегментация/треккинг), оркестрация, наблюдаемость и расчёт стоимости. Это прикладовой гайд для онлайна (низкая латентность) и пакетной обработки архивов.

TL;DR

Архитектура мультикамерной системы

Поток данных (типовой контур):

RTSP → GPU-декод → Препроц (resize/letterbox/normalize) → Инференс (детектор/сегментатор) → NMS/постпроц

→ Треккинг (ассоциация ID) → Правила/алерты → (опц.) Overlay + GPU-энкод → Вывод/шина событий/хранилище

↘ Метрики/логи/трейсы → Дашборды

Роли компонентов:

Output: события в шину, превью/кадры в хранилище (см. https://cloudcompute.ru/solutions/storage-data/).

Режимы: онлайн vs батч

Декодирование, буферизация, сброс кадров Рекомендации:

  • Держите NVDEC на той же GPU, где инференс; используйте zero‑copy в препроц.
  • На каждый поток — ring‑buffer 200–500 мс; при перегрузе включайте drop‑политику (например, «каждый N‑й кадр»).
  • Нормализуйте таймстемпы (monotonic), обрабатывайте потерю пакетов.

При разрыве RTSP — экспоненциальный backoff и health‑пробы по отдельному каналу.

Топологии развертывания

A) Single‑GPU (4–8 потоков 720p/1080p, зависит от модели):

GPU0: [NVDEC] → [Preproc] → [Detector] → [Tracker] → [Overlay/NVENC]

B) Multi‑GPU (мультикамеры с разделением):

GPU0: NVDEC (камера 1..N) → Inference GPU0

GPU1: NVDEC (камера N+1..) → Inference GPU1

... общий Event Bus/Метрики/Хранилище

C) Узел с выделенным GPU под энкод:

GPU0/1..K: Decode+Infer → шина кадров → GPU_E: Overlay + Encode

Аффинити «камера→GPU» снижает кросс‑копии и джиттер. Производственный тюнинг — https://cloudcompute.ru/solutions/performance-tuning/ и https://cloudcompute.ru/solutions/throughput-vs-latency/.

Инференс: детекция/сегментация/классификация

  • Детекторы (YOLOv8/v9): основные параметры — size, conf, iou, агностический NMS. См. https://cloudcompute.ru/solutions/computer-vision/yolo/

  • Сегментация/ROI (SAM/SEEM): для выделения зон интереса до OCR/классификации — https://cloudcompute.ru/solutions/computer-vision/sam/

  • Классификация/эмбеддинги (DINOv2/CLIP): дополнительная фильтрация, поиск по похожести — https://cloudcompute.ru/solutions/computer-vision/dinov2/

  • Микробатчи: для изображений 8–64; для видео — батчи из нескольких камер или из временных соседей (соблюдайте порядок вывода).

  • Сервинг многомодельных графов — https://cloudcompute.ru/solutions/triton-inference-server/ Трекинг и бизнес‑правила

  • Трекинг ассоциирует детекции по кадрам (скор/IoU, Kalman/скорость, max_age). См. https://cloudcompute.ru/solutions/computer-vision/tracking/

  • Для мультикамерных систем добавляйте ReID‑фичи и правила пересадок между камерами.

  • Бизнес‑логика: зоны интереса, правила остановки/срабатывания, агрегации событий, подавление шума.

Качество и безопасность

Наблюдаемость и алерты

Собирайте (см. https://cloudcompute.ru/solutions/monitoring-logging/ и https://cloudcompute.ru/solutions/llm-inference/observability/):

  • Технические: fps/поток, p50/p95 latency, drop‑rate, queue_wait, GPU util/HBM, VRAM пик, NVDEC/NVENC ошибки.
  • Качество: mAP@val, Precision/Recall, IDF1/MOTA, доля ID‑switch.
  • Сервисные: время переподключения RTSP, частота сбоев, доля таймаутов. Алерты: рост p95, падение fps, всплеск drop‑rate, ID‑switch, OOM.

Стриминг прогресса/событий для UI — https://cloudcompute.ru/solutions/llm-inference/streaming/

Хранилище, ретеншн, экспорт

  • Ring‑архив: хранение последних X часов на NVMe, выгрузка событий/кадров/клипов в объектное хранилище.
  • Структура путей: /site/camera/YYYY/MM/DD/HH/<file>.mp4 + метаданные о событиях.
  • Экспорт: превью/клипы рядом с JSON‑событиями; отчёты по камерам/времени/классам. Подробнее — https://cloudcompute.ru/solutions/storage-data/

Расчёт производительности и стоимости

Пусть C — камеры, fps — целевой fps, t_inf — среднее время инференса кадра (с учётом препроц/NMS), α — накладные (декод/трек/правила), U — целевая загрузка GPU (например, 0.7).

GPU_needed ≈ (C × fps × t_inf × (1 + α)) / U

Cost_per_camera ≈ (GPU_hour_price × GPU_needed) / C

Понижаем t_inf и α: FP16/INT8, TensorRT‑форматы, zero‑copy, аффинити «камера→GPU», предобработка на GPU, группировка операций. Баланс скоростей — https://cloudcompute.ru/solutions/throughput-vs-latency/ Сравнение on‑demand vs interruptible (для батча) — https://cloudcompute.ru/solutions/cost-planner/ и https://cloudcompute.ru/solutions/interruptible-patterns/

Конфиг (пример YAML)

pipeline: cv-realtime-rtsp
cameras:
 - id: cam01
 url: rtsp://<host>/stream1
 decode: gpu
 drop_policy: every_n
 drop_n: 2
 - id: cam02
 url: rtsp://<host>/stream2
 decode: gpu
preprocess:
 size: 1280x736
 letterbox: true
 normalize: imagenet
models:
 detector:
 family: yolo_v9m
 precision: fp16
 nms: { conf: 0.35, iou: 0.6, agnostic: false }
 tracker:
 match_iou: 0.3
 max_age: 30
 min_hits: 3
output:
 events_bus: bus://events/cv
 store_preview: true
 overlay: false
sla:
 target_fps: 25
 p95_latency_ms: 120
limits:
 max_streams_per_gpu: 6
 max_retries_rtsp: 5

Оркестрация, CI/CD, сервинг

Траблшутинг

**Симптом** **Причина** **Что сделать**
Дёргается fps Узкое место декод/копии NVDEC+zero‑copy, аффинити, уменьшить постпроц/оверлей
Высокая p95‑латентность Очереди/батчи/фоновые GC Снизить batch, увеличить воркеры, ограничить GC/логгинг
Много ID‑switch Порог/ассоциация Подобрать match\_iou/max\_age/min\_hits, добавить ReID
Пропуски кадров Нет drop‑политики every\_n/latency‑aware drop, ring‑buffer
OOM на 1080p×N VRAM переполнен Снизить размер/параллельность, INT8/FP16, разгрузить overlay
RTSP «сыпется» Нестабильная сеть Backoff/health‑пробы, троттлинг реконнектов

Шаблоны cloudcompute.ru (готовые пресеты)

Хаб шаблонов — https://cloudcompute.ru/solutions/templates/

Чек‑лист перед продом

  • Определены SLA: fps/поток, p95‑латентность, drop‑rate, метрики качества (mAP, IDF1/MOTA).
  • Подобран профиль GPU (24/48/80 ГБ) и топология (single/multi‑GPU, выделенный энкод).
  • Настроены NVDEC/zero‑copy, ring‑буферы, drop‑политика.
  • Конфиг инференса, NMS, треккинга подтверждён на контрольных потоках.
  • Подключены метрики/алерты/трейсинг; заведены ретеншн/экспорт.
  • Рассчитан Cost_per_camera; выбран режим on‑demand/interruptible (для архива).
  • Подготовлены CI/CD и процедуры обновления моделей/весов.

Навигация по разделу «Компьютерное зрение»

Хаб: https://cloudcompute.ru/solutions/computer-vision/ • Детекция: https://cloudcompute.ru/solutions/computer-vision/yolo/ • Интерактивная сегментация: https://cloudcompute.ru/solutions/computer-vision/sam/ • Эмбеддинги/поиск: https://cloudcompute.ru/solutions/computer-vision/dinov2/ • OCR: https://cloudcompute.ru/solutions/computer-vision/ocr/ • Трекинг/ReID: https://cloudcompute.ru/solutions/computer-vision/tracking/ • 3D‑реконструкция: https://cloudcompute.ru/solutions/computer-vision/3d-reconstruction/ • Гео/SAR: https://cloudcompute.ru/solutions/computer-vision/geospatial/ • Экспорт на edge: https://cloudcompute.ru/solutions/computer-vision/edge-export/ • Инфраструктура: https://cloudcompute.ru/solutions/performance-tuning/https://cloudcompute.ru/solutions/storage-data/https://cloudcompute.ru/solutions/monitoring-logging/https://cloudcompute.ru/solutions/llm-inference/observability/https://cloudcompute.ru/solutions/cost-planner/https://cloudcompute.ru/solutions/interruptible-patterns/https://cloudcompute.ru/solutions/throughput-vs-latency/ • Сервинг: https://cloudcompute.ru/solutions/triton-inference-server/ • UI/API: https://cloudcompute.ru/solutions/gradio-fastapi/ • CI/CD: https://cloudcompute.ru/solutions/containers-ci-cd/

Готовы запустить?

Запустить GPU-сервер