О проекте: Есть дашборд (FastAPI + Leaflet.js). Нужно внедрить модуль визуальной локализации , который будет определять нахождение по видеопотоку, сопоставляя его с эталонными записями.
Стек и железо: Python 3.10+, FastAPI, SQLite. Клиент на чистом JS + Leaflet. Работа на RTX 5050 Ti (Mobile).
Что нужно реализовать:
Индексация местности: Скрипт для извлечения дескрипторов из 2-3 эталонных видео (рекомендуемый стек: LightGlue / SuperPoint). Данные храним в SQLite.
Обработка трансляции: Захват живого потока (RTSP/UDP) с аппаратным декодированием (NVDEC). Реализация zero-latency buffer (обработка только последнего пришедшего кадра), чтобы избежать задержек.
VPR Matching: Сопоставление текущего кадра с базой в реальном времени. Расчет нахождения (Lat/Lng) через гомографию и RANSAC с учетом перспективных искажений камеры.
Интеграция и Demo: * Создать эндпоинт в FastAPI для приема кадров и выдачи нахождения.
Реализовать передачу данных на фронтенд через websockets.
База знаний: Видеозаписи местности (2-3 штуки) с уже известными координатами. Это наш эталон»
Живой поток: Видео из окна браузера или с камеры в реальном времени. Это то, что мы сейчас видим
Ноутбук с видеокартой RTX 5050 Ti, которая должна всё это быстро считать.
Что должно быть на выходе Результат:
Точка на карте: ИИ должен понять, где сейчас летит дрон, и прислать координаты (широту и долготу).
Индикатор уверенности: Процент (от 0 до 100), насколько ИИ уверен, что узнал местность.
Скорость: Всё это должно работать без задержек.
По факту уже база есть но реализовано не так.
Доработка системы визуальной локализации (VLOC) переход от Retrieval к Pose Estimation.
Real-time Video-to-Map Overlay: * Реализовать вычисление матрицы трансформации для «вклеивания» видеопотока в карту Leaflet.
Orthorectification: Преобразование перспективного изображения с камеры (наклонный вид) в ортофотоплан (вид строго сверху) в реальном времени.
Dynamic Bounding Box: Расчет точных GPS-координат четырех углов каждого кадра. Эти данные должны передаваться на фронтенд для динамической деформации видео-контейнера.
Что уже реализовано (Инфраструктура):
Проект упакован и готов к работе, вам не нужно писать обвязку с нуля:
Стек: Python 3.10+, FastAPI, Docker.
Pipeline: Реализован захват кадра (WebSocket/RTSP), буферизация (Zero-latency) и передача результата на фронтенд (Leaflet.js).
Хранение: SQLite хранит ключевые кадры эталонного видео и их GPS-координаты. Индексация работает.
AI Стек: В проект уже заведены SuperPoint и LightGlue, развернуты на CUDA.
В чем проблема текущего кода:
Текущая реализация работает как «узнавалка мест» (Visual Place Recognition). Она использует ResNet18 для поиска ближайшего кадра в базе и просто копирует его координаты. Из-за этого при отклонении дрона от маршрута координаты не меняются («магнитят» к траектории), а Pose Estimation отсутствует.
Что нужно сделать (Core Task):
Необходимо переписать модуль локализации (app/vloc/localizer.py), внедрив реальную геометрию:
Pose Estimation: Использовать соответствия (matches) от LightGlue для вычисления матрицы гомографии или решения задачи PnP (Perspective-n-Point).
Metric Offset: Система должна вычислять вектор смещения текущего кадра относительно эталонного в метрах и корректировать GPS-координаты.
RANSAC: Обеспечить жесткую геометрическую фильтрацию выбросов, чтобы исключить прыжки маркера на полях/лесах.
Синхронизация: Привязать расчет к PTS видеопотока, чтобы исключить временной лаг между картинкой и точкой на карте.
Итог: Инфраструктура (API/DB/Frontend) остается, вы меняете только «мозг» алгоритм расчета координат.
Инфраструктура (FastAPI, Leaflet, передача между вкладками) в проекте уже есть, на это время тратить не нужно.
Главная проблема сейчас в модуле локализации. Нам не нужно просто "сравнение" или "поиск похожего кадра". Нам нужно вычисление метрического смещения
Требования к разработчику (Senior CV Engineer)
Опыт и специализация:
Уровень: Senior (от 5 лет в Computer Vision).
Профиль: Visual SLAM, Visual Localization, Pose Estimation.
Отраслевой опыт: Навигация дронов, робототехника или автономный транспорт.
Технические навыки (Hard Skills):
Геометрия: 6DoF Pose Estimation, PnP (Perspective-n-Point), Homography, RANSAC.
Feature Matching: Глубокое понимание SuperPoint + LightGlue (интеграция и оптимизация).
OpenCV: Экспертное владение модулем calib3d и features2d.
Оптимизация: TensorRT или ONNX Runtime (обязательно для работы в real-time на мобильных GPU).
Backend: Python (FastAPI), AsyncIO, FFmpeg (аппаратное декодирование NVDEC).
Ключевые компетенции:
Умение вычислять Metric Offset (смещение в метрах) на основе визуальных матчей.
Опыт работы с Zero-latency видеопотоками (RTSP/UDP).
Математическая коррекция GPS-координат через матричные преобразования.
Projective Geometry: Глубокое понимание перспективных преобразований, гомографии и матриц проекции
Web-GIS Visualization: Опыт работы с наложением динамических растров на векторные карты. Понимание того, как передать параметры трансформации на клиент (через CSS matrix3d или отрисовку в Canvas).
Temporal Smoothing: Умение сглаживать координаты углов видео (через фильтр Калмана или экспоненциальное среднее), чтобы "вклеенный" поток не дрожал при шумах аналогового сигнала.
Проект MVP и рассчитан на локальный запуск и пару потоков.