Fisheye-камера позволяет роботу увидеть почти всё помещение одним кадром. Но за широкий обзор приходится платить: на WideDepth при увеличении угла обзора (FOV) со 120° до 195° ошибка некоторых SOTA-моделей монокулярной оценки глубины увеличивается более чем вдвое. Без точной эталонной разметки трудно понять, что именно подвело модель — геометрия камеры, отличие новых данных от обучающей выборки или погрешность самой разметки.
Чтобы разделить эти факторы, мы создали WideDepth — бенчмарк для оценки глубины по fisheye-изображениям. Он позволяет проверять модели при разных углах обзора, стереобазах и ориентациях камер.

TL;DR: что показали эксперименты
Монокулярные модели особенно чувствительны к экстремально широкому углу обзора. Например, при переходе от 120° к 195° значение ошибки AbsRel у Depth Anything V2 выросло на 166%, а у PatchFusion — на 160%.
Для stereo matching эквипрямоугольная проекция оказалась заметно точнее кубической: ошибка EPE снизилась с 4,50 до 1,07 px.
В экспериментах с моделью StereoBase расстояние между камерами (стереобаза) влияло на ошибку сильнее, чем угол обзора. Лучший результат получен при стереобазе 65 мм.
Fine-tuning компактной BGNet на наших fisheye-данных снизил долю пикселей с ошибкой disparity более 3 px с 24,3% до 9,3%. Результат по этой метрике улучшился на 62% относительно исходной модели.
Почему fisheye усложняет оценку глубины
Pinhole-камера описывается привычной центральной проекцией: прямые линии в сцене в большинстве случаев остаются прямыми на изображении, а угол обзора ограничен. Fisheye-объектив охватывает гораздо больше пространства, но использует нелинейную проекцию. Чем ближе объект к краю кадра, тем сильнее характерная бочкообразная дисторсия меняет его масштаб и форму.
Для робота широкий обзор полезен сразу в нескольких сценариях: мобильная платформа видит больше препятствий, роботизированный манипулятор — больше пространства вокруг рабочей зоны, а системе наблюдения требуется меньше камер. Альтернатива в виде нескольких pinhole-камер усложняет синхронизацию и увеличивает объём вычислений.
При оценке глубины из-за широкого поля зрения возникают две разные проблемы. Во-первых, большинство моделей обучали преимущественно на pinhole-изображениях, поэтому fisheye-данные отличаются от привычного обучающего распределения. Во-вторых, меняется сама геометрия изображения. Особенно это заметно в stereo matching: после ректификации стереомодель для pinhole-камер ожидает найти соответствующие точки вдоль прямых эпиполярных линий, а на исходных fisheye-изображениях эти линии искривлены.
Мы рассматривали три задачи:
монокулярная оценка глубины — модель получает одно RGB-изображение и предсказывает метрическую глубину;
depth completion — плотная карта восстанавливается по RGB-изображению и разреженной карте глубины, например полученной с помощью LiDAR;
stereo matching — модель получает синхронные изображения с двух камер, взаимное положение которых известно, и определяет глубину по смещению одних и тех же точек в кадрах.
Существующие indoor-датасеты вроде NYU-Depth V2 и Matterport3D хорошо подходят для обычных камер, однако на них нельзя проверить одну и ту же модель при разных углах обзора. Среди fisheye-датасетов многие построены на синтетике, а реальные почти всегда сняты на улице. Кроме того, доступная разметка глубины нередко покрывает лишь часть кадра. Поэтому нам требовался бенчмарк с реальными сценами в помещениях, глубиной по всему полю кадра и параметрами камер, которые можно менять от эксперимента к эксперименту.
Чем WideDepth отличается от существующих fisheye-датасетов
В таблице приведены характеристики, заявленные авторами соответствующих датасетов. Для бенчмарка WideDepth точность на 10 м основана на характеристиках наземного лазерного сканера.

Что такое WideDepth
В основу бенчмарка легла съёмка 101 сцены в офисах. Для каждой сцены доступны изображения с горизонтальным углом обзор 120°, 140°, 165° и 195°, стереобазами от 20 до 300 мм, а также горизонтальным и вертикальным расположением камер. Дополнительно создаются pinhole-изображения с углом обзора 90°. Так мы можем проверять модель на одной и той же сцене, меняя только угол обзора, стереобазу или расположение камер.
В WideDepth публикуются готовые изображения и эталонные карты глубины и disparity. Исходные лазерные сканы занимают гораздо больше места: мы использовали их при подготовке бенчмарка, чтобы пользователям не приходилось скачивать облака точек и самостоятельно проецировать их в кадры виртуальных камер.
Распределение глубины в бенчмарке характерно для помещений: 74,7% пикселей относятся к диапазону 2–5 м, а длинный правый хвост связан прежде всего с коридорами. Высокая локальная энтропия показывает, что во многих сценах есть мелкие объекты, сложные контуры и текстуры — именно там моделям труднее восстанавливать глубину.

Обучающая выборка решает другую задачу. В выборку вошли 18 тыс. стереопар, снятых с рук только на улице, чтобы не переобучать модели на помещениях из бенчмарка. Разметка получена от двух LiDAR и в среднем покрывает 8,1% пикселей каждого изображения. Она менее плотная и менее точная, чем в бенчмарке, зато позволяет проверить, насколько дообучение помогает перенести модель из pinhole-домена в fisheye.
Откуда берётся высокоточная эталонная глубина
Для бенчмарка мы использовали наземный лазерный сканер, который обычно применяют в строительстве и при создании цифровых моделей помещений. Один круговой скан формирует облако примерно из 20 млн точек, а цвет записывается встроенной RGB-камерой. По спецификации сканера ошибка измерения расстояния составляет 1 мм на дистанции 10 м и 2 мм на 25 м, а уровень шума — 0,3 мм на 10 м.
Говоря о миллиметровой точности, мы имеем в виду исходные измерения сканера. Отдельную сквозную погрешность после совмещения сканов и построения карт глубины мы не измеряли.

Сканер устанавливали в офисных помещениях с шагом от 1,5 до 5 м. В комнатах с мебелью и небольшими предметами его переставляли чаще, а в длинных коридорах — реже. Сферические маркеры расставляли в сцене во время съёмки, а затем использовались для совмещения соседних облаков точек.
Одного скана недостаточно для произвольной виртуальной стереопары. Когда виртуальная камера смещается относительно исходной позиции сканера, ранее скрытая часть сцены может оказаться видимой, но точек в ней не будет. Чтобы заполнять такие области, мы объединяли три соседних перекрывающихся скана. Отсутствующие точки центрального скана брали из соседних.
Прозрачные и отражающие поверхности остаются проблемой даже для промышленного лазерного сканера. Ошибочные измерения на окнах и зеркалах удаляли в полуавтоматическом режиме, а пикселям без достоверной глубины присваивали нулевое значение. При оценке моделей такие пиксели исключали.
Подробнее об оборудовании и сборе обучающей выборки
Переносная система для обучающей выборки
Плотное наземное сканирование слишком медленно для сбора большой обучающей выборки, поэтому для неё мы разработали SensorBox. На жёсткой металлической раме установили две fisheye-камеры ZED X One с частотой 30 Гц и два LiDAR Livox Mid 360 с частотой 10 Гц. Камеры образуют вертикальную стереопару, а зоны обзора двух LiDAR частично перекрываются.

Камеры и LiDAR синхронизировали по временным меткам в ROS. Облака точек от двух LiDAR объединяли и проецировали в кадр верхней камеры. После очистки стереопары переводили в эквипрямоугольную проекцию.

Почему стереомодели для pinhole-камер нельзя сразу применить к fisheye
Большинство современных стереомоделей обучено на ректифицированных pinhole-парах, где соответствующие точки лежат в одной строке изображения. На исходных fisheye-кадрах эпиполярные линии искривлены, поэтому модель ищет соответствия не там, где они находятся на самом деле.
Один вариант — разрезать сферу на грани куба. Cubemap хорошо сохраняет локальные детали, но изображение получается разделённым на грани с разрывами на стыках. Другой вариант — развернуть сферическое изображение в прямоугольник с помощью эквипрямоугольной проекции: горизонтальная координата в ней соответствует долготе, а вертикальная — широте. Для вертикальной стереопары такая проекция сохраняет прямые эпиполярные линии, а горизонтальную пару достаточно повернуть на 90°.

Чтобы сравнить эквипрямоугольную и кубическую проекции, мы использовали одну и ту же модель CREStereo и одни и те же сцены WideDepth. Менялся только способ представления изображения. Эквипрямоугольная проекция оказалась лучше по всем рассмотренным метрикам.


После преобразования изображения остаётся ещё одна проблема. Стереомодель предсказывает disparity — смещение соответствующих точек, — а разметка WideDepth задаёт метрическую глубину. В pinhole-геометрии эти величины связаны простой формулой, но для вертикальной fisheye-стереопары в эквипрямоугольной проекции требуется учитывать сферическую геометрию. Для этого мы реализовали преобразования Disparity2Depth и Depth2Disparity.
Математика преобразования depth и disparity
Для вертикальной стереопары глубина вычисляется по углам сферического треугольника.

Пусть — вертикальная координата пикселя,
— высота изображения,
— disparity в пикселе
, а
— коэффициент, определяемый стереобазой и расположением камер.
Сначала по координате пикселя вычисляем широту:
.
Затем disparity переводим в угол :
.
Оставшиеся углы сферического треугольника:
,
.
Глубину определяем по теореме синусов:
.
Обратное преобразование имеет вид:
.
Оба преобразования реализованы на CUDA и выполняются параллельно для всей карты, без попиксельного пересчёта.
Как SOTA-модели справились с WideDepth
На WideDepth мы протестировали 14 моделей в трёх задачах. Все сравнения при разных углах обзора проводили на одних и тех же сценах, поэтому изменение метрик связано не с новым набором помещений, а с тем, как модель реагирует на другой угол обзора и степень дисторсии.
Монокулярная оценка глубины
Мы выбрали модели, которые предсказывают метрическую глубину: Depth Anything V2-Large, PatchFusion, ZoeDepth, Depth Pro и UniK3D-Large. При расширении угла обзора со 120° до 195° ошибка постепенно росла почти у всех моделей, но масштаб деградации сильно различался.

При угле обзора 195° значение ошибки AbsRel у Depth Anything V2 было на 166% выше, чем при 120°, а у PatchFusion — на 160%. Depth Pro оказался устойчивее: значение ошибки AbsRel выросло лишь на 9%. UniK3D создавали с учётом разных геометрий камер и она показала лучший результат в умеренном fisheye-диапазоне 120–140°, однако при углах 165° и выше её точность также снизилась, когда модель работала без интринсиков камеры.
Количественная ошибка не всегда означает полную потерю структуры сцены. Некоторые модели продолжают хорошо восстанавливать контуры, плоскости и небольшие объекты, но ошибаются в метрическом масштабе. Для робота это принципиальная разница: визуально правдоподобная карта ещё не гарантирует правильного расстояния до препятствия.

Depth completion
В depth completion модель получает RGB-изображение и разреженную карту глубины. В наших экспериментах эту карту формировали, равномерно выбирая 0,25% точек из эталонной. Мы проверили NLSPN, CompletionFormer и CostDCNet, обученные на NYUv2. Эти модели в целом оказались менее чувствительны к расширению угла обзора, чем монокулярные: разреженная карта глубины даёт им дополнительную опору. Тем не менее значение ошибки AbsRel выросло у всех трёх моделей, а у CostDCNet — на 38,5%.
Stereo matching
Для stereo matching мы протестировали FADNet++, CREStereo, BGNet, IGEV, GMStereo и StereoBase. Оба изображения каждой стереопары переводили в эквипрямоугольную проекцию, обрезали по границе заполненной области и поворачивали на 90°, чтобы модели могли искать соответствия вдоль строк изображения.
Порядок моделей оказался близок к результатам на pinhole-бенчмарках. IGEV получила минимальную среднюю ошибку EPE, а StereoBase — лучшую долю ошибочных пикселей по bad-1 и bad-2. На примерах предсказаний основные ошибки возникают на полупрозрачных и отражающих поверхностях, но характерных артефактов именно из-за fisheye-геометрии почти нет.

Отдельно мы проверили StereoBase при разных сочетаниях угла обзора и стереобазы. Стереобаза влияла на результат заметно сильнее. Лучшие значения RelEPE получены при 65 мм; базы 200 и 300 мм существенно ухудшили результат из-за отличия распределения disparity от использованного при обучении. При фиксированной стереобазе расширение угла обзора, напротив, немного улучшало метрику: модель получала больше контекста сцены.

Полные результаты и параметры экспериментов
Для AbsRel, MAE и RMSE положительное изменение означает рост ошибки. Для отрицательное изменение означает снижение доли точных предсказаний.
Модель | AbsRel | MAE | RMSE | δ1.25 | δ1.25² | δ1.25³ |
|---|---|---|---|---|---|---|
NLSPN | +5,92% | −1,26% | −3,05% | −0,03% | +0,04% | +0,04% |
CompletionFormer | +6,73% | −2,05% | +1,97% | −0,01% | +0,05% | +0,04% |
CostDCNet | +38,5% | −13,9% | +0,67% | +0,06% | −0,07% | −0,16% |
Depth Anything V2 | +166% | +126% | +106% | −86,8% | −81,5% | −53,9% |
PatchFusion | +160% | +123% | +91,3% | −87,4% | −68% | −27,9% |
UniK3D | +97,3% | +147,2% | +119,6% | −73,7% | −56,2% | −38,9% |
ZoeDepth | +60,1% | +47,3% | +21,3% | −51,7% | −25% | −6,5% |
Depth Pro | +9,0% | +3,3% | +8,3% | −4,1% | −4,5% | −2,31% |
Стереомодели при угле обзора 195° и стереобазе 65 мм
Меньшее значение соответствует лучшему результату. Метрика bad-N показывает долю пикселей, где абсолютная ошибка disparity превышает N пикселей.
Модель | Время, мс | EPE, px | Q50 EPE, px | Q95 EPE, px | bad-1, % | bad-2, % | bad-3, % |
|---|---|---|---|---|---|---|---|
FADNet++ | 40 | 2,089 | 0,643 | 6,373 | 29,63 | 15,59 | 10,46 |
GMStereo | 186 | 1,950 | 0,700 | 6,495 | 30,06 | 15,16 | 10,31 |
IGEV | 552 | 1,605 | 0,533 | 4,526 | 24,87 | 12,58 | 8,37 |
StereoBase | 665 | 1,612 | 0,529 | 4,554 | 24,75 | 12,49 | 8,37 |
CREStereo | 284 | 1,759 | 0,528 | 6,238 | 24,78 | 13,02 | 9,02 |
BGNet | 19 | 3,411 | 1,410 | 13,595 | 53,30 | 33,32 | 24,34 |
BGNet после fine-tuning | 19 | 1,767 | 0,606 | 5,736 | 27,63 | 13,76 | 9,29 |
Длительность инференса измеряли в FP16 на NVIDIA GeForce RTX 3080 Ti при разрешении 1024×512.
Параметры fine-tuning BGNet
Взяли BGNet, предварительно обученную на синтетическом датасете SceneFlow, и дообучили её на уличной выборке WideDepth. Исходную и адаптированную версии модели проверяли на indoor-бенчмарке WideDepth в тех же условиях, что и остальные модели. Fine-tuning шёл 15 эпох с размером батча 8, FP16 и оптимизатором AdaBelief. One-cycle scheduler повышал learning rate до 5⋅10−5, warmup занимал первые 10% итераций. С вероятностью 50% применяли асимметричную цветовую аугментацию.
Помогает ли адаптация к fisheye-данным?
Для проверки доменной адаптации мы сравнили одну и ту же компактную стереомодель до и после дообучения. В качестве исходной взяли BGNet, предварительно обученную на синтетическом pinhole-датасете SceneFlow, и дообучили её на 18 тыс. уличных fisheye-стереопар WideDepth. После этого обе версии оценивали на indoor-бенчмарке WideDepth.
Эффект заметен по всем стереометрикам. Средняя EPE снизилась с 3,411 до 1,767 px. Доля пикселей с ошибкой более 3 px уменьшилась с 24,34% до 9,29%, то есть на 62% относительно исходной BGNet. Архитектура модели при этом не менялась, поэтому время инференса осталось прежним — 19 мс в наших условиях измерения.
После адаптации лёгкая BGNet приблизилась к значительно более тяжёлым моделям. Получается практичная схема переноса: преобразовать fisheye-изображения в подходящую проекцию, взять готовую pinhole-модель и затем адаптировать её на специализированной выборке.
Ограничения и практические выводы
WideDepth не закрывает все проблемы fisheye-оценки глубины. Наземное сканирование даёт плотную разметку, но один скан занимает около 10 минут. На прозрачных и зеркальных поверхностях лазерный сканер часто возвращает ошибочные измерения, поэтому соответствующие пиксели исключаются из оценки. Обучающая выборка масштабнее, но её LiDAR-разметка разреженная и в среднем покрывает 8,1% пикселей каждого изображения.
Мы дообучали только BGNet, поэтому пока нельзя утверждать, что такой же относительный прирост сохранится для крупных архитектур. Кроме того, бенчмарк собран в помещениях, а обучающая выборка — на улице: это сделано намеренно для проверки переноса, но такое различие необходимо учитывать при интерпретации результатов.
Практические выводы получились разными для трёх задач:
монокулярные модели необходимо отдельно проверять при экстремальном угле обзора — хороший результат на pinhole или умеренном fisheye не гарантирует метрическую точность при 195°;
depth completion устойчивее благодаря внешним измерениям глубины, но также не избавлен от деградации;
для stereo matching эквипрямоугольная проекция позволяет применять pinhole-модели без изменения архитектуры и дополнительного обучения на fisheye-данных, а выбор стереобазы может быть важнее самого угла обзора;
fine-tuning на уличной выборке WideDepth снизил bad-3 у BGNet на 62%, не увеличив время инференса.
Материалы проекта и сведения о публикации доступны на странице WideDepth.
А вам приходилось работать с fisheye-камерами? Расскажите, для какой задачи вы их использовали и что в работе с ними оказалось самым сложным.
Илья Андреевич Индык
ведущий-инженер разработчик Центра робототехники Сбера

