Видеоаналитика на Python: задачи на камеры и события

Детектор работает на картинке, а сервису приходится жить с адресами камер, обрывами связи и повторяющимися кадрами. Эти четыре задачи разбирают часть работы вокруг модели. Все входные данные уже даны: подключаться к настоящей камере не нужно.

1. Подготовить адрес подключения

Начните с разбора RTSP URL. В адресе могут быть IPv6, нестандартный порт и пароль со спецсимволами. Нужно извлечь поля и подготовить строку для журнала, сохранив исходное написание адреса и заменив пароль.

2. Отличить живое соединение от свежего кадра

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

3. Подтвердить событие

Вместо реакции на одиночное срабатывание соберите интервалы по правилу «k отметок из n». Номера кадров идут с пропусками: окно считается по наблюдениям, а не по расстоянию между номерами. Отдельно обработайте событие, оставшееся открытым к концу журнала.

4. Оценить число камер

По замерам CPU, FPS и частоте запуска модели вычислите, сколько потоков поместится в бюджет машины. В заданном конвейере декодируется каждый кадр, даже если модель вызывается реже. Функция должна вернуть и число камер, и более затратный этап.

Эта практика входит в курс Computer Vision: от детекции и Doc-AI до продакшна. Продолжение расчётов производительности — задачи на оптимизацию инференса.

Видеоаналитика на Python: задачи на камеры и события