ИИ-трекинг объектов для VFX
Трекинг в VFX — это точечное прикрепление CG-элемента к реальному объекту в видео: логотип на борту машины, искры от удара, 3D-оружие в руке актёра. Классический трекинг в Mocha Pro или PFTrack работает через ручную расстановку трекинг-поинтов и ломается при окклюзии или смазе. ИИ-подход устойчив в этих сценариях.
Типы трекинга и инструменты
2D point tracking — отслеживание опорных точек для stabilization или match move. Современный нейронный трекинг: CoTracker (Meta) — трекает 256+ точек одновременно с учётом взаимных зависимостей между ними. Работает через transformer с temporal attention, что даёт устойчивость при частичной окклюзии.
Planar tracking — трекинг плоскости (стена, борт автомобиля, экран) для вставки графики. Нейронная версия: DiffusionTrack, или гибрид гомографии + deep features от SuperGlue для matching.
6DoF object tracking — трекинг 3D-положения и ориентации объекта. FoundPose, FoundTrack — работают с CAD-моделью объекта или обученным prior.
Human body tracking — MediaPipe Holistic (33 точки скелета + руки + лицо), OpenPose, SMPL-X для полноценной 3D-реконструкции тела актёра из monocular видео. Используется для motion capture без маркеров.
Где нейронный трекинг выигрывает
Классический feature-based трекинг (Lucas-Kanade, KLT) теряет точку при:
- Motion blur > 15px
- Окклюзия > 40% объекта
- Резкая смена освещения
CoTracker держит трекинг при окклюзии до 70% благодаря visibility prediction — модель предсказывает, видима ли точка в текущем кадре, и не пытается искать её там, где её нет. При возвращении объекта из-за окклюзии trекинг восстанавливается через re-identification.
import torch
from cotracker.predictor import CoTrackerPredictor
model = CoTrackerPredictor(checkpoint='cotracker2.pth')
model = model.cuda()
# video: (1, T, 3, H, W) tensor
# queries: (1, N, 3) - (t, x, y) для каждой точки
tracks, visibility = model(video, queries=queries)
# tracks: (1, T, N, 2) - координаты N точек во всех T кадрах
# visibility: (1, T, N) - вероятность видимости
Кейс: трекинг логотипа на движущемся автомобиле
Рекламный ролик, 45 секунд, камера движется вместе с автомобилем на трассе. Логотип нужно «наклеить» на дверь так, чтобы он жил вместе с бликами и деформацией кузова при вибрации.
Проблема: скорость 120 км/ч, motion blur на кадрах 1/60s, блики от солнца периодически засвечивают зону двери.
Решение:
- Planar трекинг через гомографию с SuperGlue-matching (устойчив к blur благодаря learned descriptors)
- Mesh-based деформация — дверь разбита на 8×4 сетку, каждый узел трекается независимо, CG-логотип деформируется вместе с ней
- Lighting estimation через EfficientLit — вычисляем environment map из каждого кадра, применяем к CG-элементу
Итог: стабилизированный трекинг 1080 кадров с отклонением < 0.8 px, 6 часов автоматической обработки вместо 3 дней ручного трекинга в Mocha.
Integration с post-production пайплайном
Выход трекинга — .nuke скрипты или .abc (Alembic) файлы с анимационными кривыми для Nuke/After Effects/Blender. Для match move — .chan формат с camera transform данными.
Автоматизация: Python API для Nuke позволяет напрямую записывать трекинговые данные в Tracker4 ноды без ручного переноса.
Сроки
| Задача | Объём | Время |
|---|---|---|
| 2D point tracking | 1–5 минут видео | 1–3 дня |
| Planar tracking с mesh | 1–5 минут | 2–5 дней |
| 6DoF object tracking | 1–3 минуты | 3–7 дней |
| Full match move + camera solve | Сцена 1–10 мин | 5–14 дней |
Стоимость рассчитывается индивидуально по сложности материала.







