С5

Computer vision engineer

От 120 000 RUR
  • Москва
  • Более 6 лет
  • Python
  • Docker

О проекте: Есть дашборд (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 и рассчитан на локальный запуск и пару потоков.