3D Object Detection
A deteção de objetos 3D coloca uma caixa 3D à volta de cada objeto, indicando a sua posição, tamanho e orientação em metros. Sensores, métodos, benchmarks e um exemplo de caixa.
A detecção de objetos 3D localiza objetos em uma cena e coloca uma caixa delimitadora 3D, ou cuboide, ao redor de cada um, indicando sua posição, tamanho e orientação em unidades do mundo real. A detecção de objetos 2D padrão informa uma caixa delimitadora em pixels da imagem. Um detector 3D informa a distância de um carro em metros, seu comprimento e largura e a direção para a qual está voltado — informações necessárias para que carros autônomos, robôs de entrega e braços robóticos de armazém planejem movimentos e evitem colisões.
Como descrever uma caixa 3D#
A maioria dos detectores 3D gera sete números por objeto, além de uma classe e de uma pontuação de confiança: o centro da caixa (x, y, z), seu comprimento, largura e altura, e a orientação, ou ângulo de guinada, em torno do eixo vertical. Assume-se que rolagem e arfagem sejam zero porque carros, pessoas e a maioria dos objetos internos ficam na vertical; benchmarks de condução, como o nuScenes, também solicitam a velocidade de cada objeto. Converter os sete números em oito pontos de canto é a primeira etapa para desenhar uma caixa em uma imagem ou calcular sua sobreposição com outra caixa.
import numpy as np
# Uma caixa 3D: centro (m), tamanho (m) e orientação em torno do eixo z vertical (rad)
center = np.array([12.0, -3.0, 0.9])
length, width, height = 4.5, 1.9, 1.6
yaw = np.pi / 6
# Oito cantos da caixa antes da rotação, relativos ao centro
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]
# Gire pelo ângulo de orientação e, em seguida, mova a caixa até o centro
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))As oito linhas impressas são os cantos de uma caixa do tamanho de um carro, centralizada a 12 metros ao longo do eixo x e girada em 30 graus: quatro em z = 1,7 m, no teto, e quatro em z = 0,1 m, no chão.
Sensores e métodos#
A detecção 3D precisa de profundidade, e os sistemas a obtêm de três tipos de entrada. Os scanners Lidar medem diretamente a distância com pulsos de laser e retornam uma nuvem de pontos da cena. Os detectores Lidar dividem o espaço em voxels 3D, agrupam os pontos em colunas verticais, como faz o PointPillars, e os processam como uma imagem em vista aérea com convoluções 2D rápidas, ou trabalham diretamente com os pontos brutos.
Métodos baseados em câmera inferem a profundidade a partir de imagens. Uma única câmera não permite determinar a profundidade sem ambiguidade, pois um objeto pequeno e próximo pode parecer igual a um objeto grande e distante; por isso, detectores monoculares aprendem a profundidade com base no tamanho do objeto e no contexto da cena. Sistemas com várias câmeras, como o BEVFormer, projetam características de várias vistas ao redor em uma única grade compartilhada de vista aérea. Pipelines de câmera também podem combinar caixas 2D do YOLO26 com um modelo de profundidade YOLO26, que prevê um mapa de profundidade por pixel em metros a partir de uma imagem RGB, para estimar a distância de cada objeto detectado.
A fusão de sensores combina a geometria precisa do lidar com as cores e texturas das imagens de câmera. O BEVFusion combina as características dos dois sensores em um espaço compartilhado de vista aérea.
Detecção 3D e tarefas relacionadas#
- Estimativa de profundidade: prevê uma distância para cada pixel, sem dividir a cena em objetos ou classes.
- Caixas delimitadoras orientadas: caixas 2D rotacionadas no plano da imagem, frequentemente usadas em imagens aéreas, onde se parecem com a projeção superior de uma caixa 3D.
- Reconstrução 3D: recupera a geometria completa de uma cena, como uma malha ou nuvem de pontos, sem rotular objetos individuais.
Aplicações e desafios#
Veículos autônomos usam detecção 3D para localizar carros, pedestres e ciclistas ao redor e prever suas trajetórias; robôs de armazém e logística usam a detecção 3D para encontrar a posição e a orientação de caixas antes de agarrá-las. Os casos difíceis incluem objetos pequenos e distantes, que recebem poucos pontos lidar; objetos parcialmente oclusos; erros de profundidade monocular, que aumentam com a distância; e o custo da anotação, pois um anotador precisa ajustar cada cuboide de treinamento em 3D.
Avaliação de detectores 3D#
A avaliação estende a interseção sobre união (IoU) e a precisão média (mAP) para três dimensões. O benchmark 3D da KITTI exige IoU de caixa 3D de 0,7 para carros e 0,5 para pedestres e ciclistas; desde 2019, calcula a média da precisão em 40 posições de recall em vez de 11. O benchmark nuScenes associa previsões a rótulos pela distância entre seus centros no plano do solo e calcula a média da AP nos limiares de 0,5, 1, 2 e 4 metros. A pontuação de detecção nuScenes (NDS) combina essa mAP, com peso 5, a cinco pontuações derivadas de erros de translação, escala, orientação, velocidade e atributos, cada uma com peso 1.










