3D Object Detection
При обнаружении объектов в 3D вокруг каждого объекта строится 3D-рамка, задающая его положение, размер и ориентацию в метрах. Датчики, методы, бенчмарки и пример рамки.
Обнаружение 3D-объектов находит объекты в сцене и размещает вокруг каждого 3D-ограничивающую рамку, или параллелепипед, указывая положение, размер и ориентацию в реальных единицах измерения. Стандартное двумерное обнаружение объектов возвращает ограничивающую рамку в пикселях изображения. 3D-детектор сообщает, например, на каком расстоянии в метрах находится автомобиль, каковы его длина и ширина и в какую сторону он обращён. Эти сведения нужны беспилотным автомобилям, роботам-доставщикам и складам с роботизированными манипуляторами, чтобы планировать движение и избегать столкновений.
Как описывают 3D-рамку#
Большинство 3D-детекторов выдают для каждого объекта семь чисел, класс и оценку уверенности: координаты центра рамки (x, y, z), длину, ширину и высоту, а также направление — угол рыскания относительно вертикальной оси. Крен и тангаж считают равными нулю, потому что автомобили, люди и большинство объектов в помещениях стоят вертикально. В бенчмарках для автономного вождения, таких как nuScenes, также требуется скорость каждого объекта. Чтобы нарисовать рамку на изображении или вычислить её перекрытие с другой рамкой, сначала нужно преобразовать семь чисел в координаты восьми угловых точек.
import numpy as np
# Одна 3D-рамка: центр (м), размер (м) и направление относительно вертикальной оси z (рад)
center = np.array([12.0, -3.0, 0.9])
length, width, height = 4.5, 1.9, 1.6
yaw = np.pi / 6
# Восемь угловых точек рамки до поворота относительно её центра
signs = np.array([[sx, sy, sz] for sx in (1, -1) for sy in (1, -1) for sz in (1, -1)])
corners = signs * [length / 2, width / 2, height / 2]
# Повернуть рамку на заданный угол, затем переместить её в центр
c, s = np.cos(yaw), np.sin(yaw)
rotation = np.array([[c, -s, 0], [s, c, 0], [0, 0, 1]])
corners = corners @ rotation.T + center
print(corners.round(2))Восемь выведенных строк — это координаты угловых точек рамки размером с автомобиль, расположенной на расстоянии 12 метров по оси x и повёрнутой на 30 градусов: четыре точки на высоте z = 1,7 м обозначают крышу, а четыре на высоте z = 0,1 м — днище.
Датчики и методы#
Для детекции в 3D нужна глубина, которую системы получают из трёх типов входных данных. Лидарные сканеры напрямую измеряют расстояние лазерными импульсами и создают облако точек сцены. Лидарные детекторы делят пространство на трёхмерные воксели, группируют точки в вертикальные столбцы, как это делает PointPillars, и обрабатывают их как изображение с видом сверху с помощью быстрых двумерных свёрток либо работают непосредственно с исходными точками.
Методы на основе камер оценивают глубину по изображениям. По одной камере нельзя однозначно определить глубину: небольшой близкий объект может выглядеть так же, как большой удалённый. Поэтому монокулярные детекторы учатся оценивать глубину по размеру объектов и контексту сцены. Системы с несколькими камерами, такие как BEVFormer, преобразуют признаки из нескольких окружающих ракурсов в общую сетку с видом сверху. В системах на основе камер также можно сочетать двумерные рамки от YOLO26 с моделью глубины YOLO26, которая предсказывает карту глубины каждого пикселя в метрах по одному RGB-изображению, чтобы оценить расстояние до каждого обнаруженного объекта.
Слияние данных с датчиков объединяет точную геометрию лидара с цветом и текстурой изображений камеры. BEVFusion объединяет признаки обоих датчиков в общем пространстве с видом сверху.
Обнаружение 3D-объектов и родственные задачи#
- Оценка глубины: Предсказывает расстояние для каждого пикселя, не разделяя сцену на объекты или классы.
- Ориентированные ограничивающие рамки: Поворачиваемые двумерные рамки на плоскости изображения, которые часто используют для аэрофотоснимков; они похожи на проекцию 3D-рамки сверху.
- 3D-реконструкция: Восстанавливает полную геометрию сцены, например сетку или облако точек, не размечая отдельные объекты.
Применение и сложности#
Автономные автомобили используют обнаружение 3D-объектов, чтобы находить рядом автомобили, пешеходов и велосипедистов и предсказывать их траектории. Складские и логистические роботы с его помощью определяют положение и ориентацию коробок перед захватом. Сложнее всего обнаруживать маленькие и удалённые объекты, для которых лидар собирает мало точек, частично закрытые объекты, а также оценивать глубину по одной камере — её ошибки растут с расстоянием. Ещё одна сложность — стоимость разметки: аннотатору нужно подогнать каждую обучающую ограничивающую рамку в трёх измерениях.
Оценка 3D-детекторов#
Оценка распространяет метрики пересечения над объединением (IoU) и средней точности (mAP) на три измерения. В бенчмарке KITTI для 3D IoU трёхмерной рамки должен быть не ниже 0,7 для автомобилей и 0,5 для пешеходов и велосипедистов. С 2019 года точность усредняется по 40 позициям полноты вместо 11. В бенчмарке nuScenes предсказания сопоставляются с метками по расстоянию между центрами на плоскости земли, а AP усредняется по порогам 0,5, 1, 2 и 4 метра. Показатель обнаружения nuScenes (NDS) объединяет эту mAP с весом 5 и пять показателей, основанных на ошибках перемещения, масштаба, ориентации, скорости и атрибута, каждому из которых присвоен вес 1.










