Search
Write a publication
Pull to refresh

Comments 5

Дмитрий, спасибо за интересную статью!
Подскажите, а насколько требовательна подобная задача к железу? Например насколько реально реализовать подобное "настольное" решение с камерой смартфона? Реалистично ли будет уместить все этапы, в том числе калибровку, в андроид приложение?

Привет @Hiuss21!
Реализация решения подобной задачи в общем-то возможна на смартфоне.
Варианты реализации зависят он постановки самой задачи. Например, нужен ли реалтам, или возможна отложенная обработка.
Под копотом у Depth Anything V2 довольно тяжёлая архитектура (DPT architecture with a DINOv2 backbone), требующая хорошей производительности.
Однако, уже есть адаптированные версии данной архитектуры специально на мобильные устройства (https://huggingface.co/apple/coreml-depth-anything-v2-small):
- small-original (параметров: 24.8M / размер: 99.2MB)
- DepthAnythingV2SmallF32 (параметров: 24.8M / размер: 99.2MB)
- DepthAnythingV2SmallF16 (параметров: 24.8M / размер: 49.8MB)

Адаптированные версии, например на iPhone показывают весьма приемлемые производительности: iPhone 12 Pro Max - время обработки кадра = 31.10 мс.

Также, всегда возможен гибридный вариант работы. Т.е. тяжёлые вычисления можно делать на удалённом сервере и возвращать результаты на мобильное устройство.

Прошу прощения, возможно упустил, а разве не нужно чтоб камера всегда была на одном и том же месте? Нужно же будет коэффициент компенсации перспективы пересчитывать? Или с мобильного телефона делать фото только с условным стаканом в кадре?

Скорее наоборот. В случае смартфона, движения камеры, если без размытия, это два плюса:
1) стереозрение из движения для корректировки карты глубины (а они всегда с погрешностями для нейросетей. Хороший крайний пример - фото на смартфон другого экрана с какой-то картинкой. Нейросеть "нарисует" на втором экране глубину, хотя её в реальности нет. Те же "галлюцинации", что у LLM, просто в другом домене)
2) дополнительная информация о сдвиге точки съёмки с акселерометра (что упрощает/улучшает расчёт размеров/расстояний на некалиброванной камере)

Для каждой новой позиции камеры (или для каждого нового кадра) вы можете заново вычислять коэффициент компенсации, используя данные карты глубины и, корректно компенсировать эффекты перспективы, если конечно сцена не изменилась слишком существенно, так что нужно делать переобучение модели глубины под новый масштаб сцены. Такой пересчёт коэффициента компенсации перспективы позволяет работать с динамичными сценами, где камера не остаётся фиксированной — это вполне нормальная практика.

Sign up to leave a comment.