Описание задачи: Доработка системы визуальной локализации БПЛА (VLOC)
О проекте:
MVP-версия дашборда для трекинга дрона в реальном времени. Система принимает видеопоток, сопоставляет его с эталонными видеозаписями (к которым привязаны координаты) и отображает положение дрона на карте Leaflet. Проект рассчитан на локальный запуск (1-2 потока одновременно).
Железо: Ноутбук с мобильной RTX 5050.
Стек: Python 3.10+, FastAPI, SQLite, Docker. Фронтенд: чистый JS + Leaflet.js.
Что уже РЕАЛИЗОВАНО :
- Вся обвязка и инфраструктура готовы и работают:
- Захват потока (RTSP/WebSocket) с аппаратным декодированием (NVDEC).
- Zero-latency буфер (алгоритм всегда забирает только самый свежий кадр, пропуская очередь).
- API-эндпоинты (FastAPI) и передача данных на фронтенд по WebSockets.
- База данных (SQLite), где лежат эталонные кадры и их GPS-координаты.
- Модели SuperPoint и LightGlue уже заведены в проект и крутятся на CUDA.
В чем текущая проблема
Сейчас модуль локализации работает по принципу примитивного Image Retrieval. Он использует ResNet18: находит максимально похожий кадр в базе и копирует его координаты. Из-за этого нет Pose Estimation, если дрон летит параллельно эталонному маршруту, метка на карте не смещается, а прилипает к эталонному треку.
Что нужно сделать:
Необходимо переписать математику, осуществив переход от Retrieval к честному Pose Estimation и добавив расчет геометрии для видео-слоя.
Задача 1: Точная локализация (Метка дрона)
- Feature Matching: Использовать связку SuperPoint + LightGlue для нахождения соответствий между Live-кадром и ближайшим кадром из эталона.
- Metric Offset: На основе найденных матчей вычислять вектор смещения в метрах (через матрицу гомографии или PnP) с учетом перспективных искажений.
- GPS-коррекция: Прибавлять полученное метрическое смещение к координатам эталонного кадра для получения реальной точки.
- Фильтрация: Жесткий RANSAC для исключения выбросов (ложных матчей на лесах/полях), чтобы метка не прыгала. Выдача индикатора уверенности 0-100%.
Задача 2: Real-time Video-to-Map Overlay (слой на карте)
- На бэкенде рассчитывать точные GPS-координаты 4-х углов текущего кадра (проекция на плоскость земли).
- Трансформация перспективного изображения в ортофотоплан (вид сверху) в real-time.
- Temporal Smoothing: Внедрить сглаживание координат углов (фильтр Калмана или экспоненциальное среднее). Видео аналоговое, матчи могут шуметь, углы не должны дрожать на фронтенде.
- Отдавать эти 4 точки по сокету на фронтенд (там они уже будут применяться к видео-контейнеру через CSS matrix3d).
Ограничения и нюансы:
Телеметрии и данных IMU в базе нет (дрон летит в один конец). Всю геометрию, наклон камеры и смещение нужно вытаскивать исключительно из визуальных признаков (разложение гомографии) с учетом известной примерной высоты из эталона.
Обязательна привязка расчетов к PTS видеопотока для исключения рассинхрона видео и метки.
Требования к исполнителю:
- Уровень Senior (от 5 лет в CV).
- Опыт работы с Visual SLAM, 6DoF Pose Estimation, Visual Odometry.
- Уверенное владение OpenCV, глубокое понимание матриц проекции, гомографии и перевода пикселей в метрическую систему координат.
- Опыт оптимизации пайплайнов под real-time (TensorRT/ONNX Runtime).
Проект Mvp и рассчитывается для демонстрации возможностей. Указанные задачи реально выполнить за две недели.