[자율주행] 3D 객체 검출(3DOD) — 세상을 3D 박스로 읽기
자율주행/인지
· 2026-07-19
차선이 '어디가 길인가'라면, 3D 객체 검출은 '그 길 위에 무엇이, 정확히 어디에 있는가'다. 자율주행 인지의 가장 대표적인 태스크이자, 대중이 '자율주행 AI'라고 하면 떠올리는 바로 그 부분이다.
여기서 핵심 단어는 3D 다. 이미지에서 사람을 네모로 치는 2D 검출은 오래된 문제지만, 운전에는 부족하다. 운전은 화면 좌표가 아니라 실제 공간의 위치와 거리를 요구하기 때문이다.
2D 박스로는 운전할 수 없다
2D 검출은 "이미지의 이 영역이 자동차"라고 말한다. 하지만 계획 모듈이 묻는 것은 다르다. 저 차가 나로부터 몇 미터 앞에, 어느 방향을 보고, 얼마나 빠르게 오는가. 2D 박스는 이걸 모른다. 원근 때문에 "화면에서 작다"가 "멀다"를 뜻하지도 않는다.
그래서 3D 객체 검출이 예측하는 것은 3D 바운딩 박스다. 보통 이렇게 표현한다.
- 위치
(x, y, z)— 차량(또는 맵) 좌표계에서의 중심. - 크기
(l, w, h)— 길이·너비·높이. - 방향(yaw) — 물체가 향한 각도(heading).
- 클래스 — 차/보행자/자전거/버스…
- 속도
(vx, vy)— 움직이는 방향과 빠르기(있으면 추적·예측이 쉬워진다).
이 박스가 있어야 비로소 "12m 앞, 우측 차선, 90km/h로 접근 중인 차"라는 문장이 나온다.
라이다 기반 검출
거리가 정확한 라이다는 3D 검출의 자연스러운 출발점이다. 3D 데이터 표현 위에서 도는 대표적인 흐름이 있다.
- PointPillars — 포인트 클라우드를 위에서 내려다본 기둥(pillar) 으로 요약해 2D CNN으로 빠르게 검출한다. 실시간에 강해 오래 표준처럼 쓰였다.
- CenterPoint — 물체를 박스 앵커가 아니라 중심점(center) 으로 먼저 찾고, 그 중심에서 크기·방향·속도를 회귀한다. 앵커 설계를 없애 단순하고 정확하며, 프레임 간 중심 추적으로 트래킹까지 자연스럽게 잇는다.
라이다 검출의 강점은 거리·형상의 정확성, 약점은 의미 정보의 부족(색·글자를 못 봄)과 먼 거리의 성김이다.
카메라·BEV 기반 검출
라이다는 비싸다. 그래서 카메라만으로 3D를 풀려는 흐름이 커졌다.
- 모노큘러 3D — 단일 이미지에서 3D 박스를 추정한다. 스케일이 본질적으로 모호해 어렵지만, 기하 사전지식·깊이 추정으로 보완한다.
- 멀티뷰 BEV — 차 주위 여러 카메라를 BEV로 모아 그 위에서 검출한다(BEVFormer, BEVDet 계열). 여러 시야를 한 판에 얹으니 라이다 없이도 꽤 정확한 3D가 나온다.
이 흐름의 의미는 크다. "BEV 특징 → 태스크 헤드" 구조가 자리잡으면서, 검출·점유·차선이 같은 표현을 공유하게 됐다.
융합, 그리고 왜 어려운가
가장 강한 시스템은 대개 라이다 + 카메라 융합이다. 라이다의 정확한 거리에 카메라의 풍부한 의미를 얹으면 서로의 약점을 메운다. 융합은 어느 단계에서 합치느냐로 갈린다.
- 초기 융합(early) — 카메라 픽셀을 라이다 점에 칠해 입력 단계에서 합친다. 단순하지만 캘리브레이션 오차에 취약.
- 중간/특징 융합(mid) — 각 센서를 특징으로 뽑은 뒤 BEV 같은 공통 공간에서 합친다. 최근 주류(BEVFusion·TransFusion 계열)로, 강하고 유연하다.
- 후기 융합(late) — 센서별로 따로 검출한 뒤 박스 수준에서 합친다. 모듈이 독립적이라 견고하지만, 두 센서의 상보성을 덜 살린다.
BEV가 융합의 공용 무대가 된 이유가 여기 있다 — 라이다든 카메라든 같은 조감도 격자로 모으면 특징 단계에서 자연스럽게 합쳐진다. 다만 융합은 캘리브레이션과 시간 동기화에 극도로 민감하다 — 어긋나면 두 센서가 같은 물체를 다른 곳에 놓고 다투게 된다.
검출에서 추적으로
검출은 한 프레임의 사진이다. 하지만 운전은 "저 차가 아까 그 차인가, 얼마나 빨리 다가오는가"를 알아야 한다. 프레임마다 새로 찾은 박스들을 시간축으로 이어 하나의 궤적(track) 으로 묶는 것이 추적(tracking, MOT) 이다.
추적의 핵심은 세 가지다.
- 데이터 연관(association) — 이번 프레임의 검출을 지난 트랙 중 누구와 이을지 매칭(위치·속도·외형 기반, 헝가리안 매칭 등).
- 모션 모델 — 칼만 필터 등으로 다음 위치를 예측해 매칭을 돕고, 잠깐 가려져도 트랙을 유지.
- 트랙 수명 관리 — 새 트랙 생성, 사라진 트랙 종료, 잘못 이어 ID가 뒤바뀌는(ID switch) 실수 억제.
CenterPoint 같은 중심 기반 검출기는 프레임 간 중심을 이어 추적을 자연스럽게 붙이고, 통합 스택(UniAD 등)은 검출·추적·예측을 하나로 학습한다. 성능은 AMOTA/MOTA(정확도에 ID 스위치·놓침·오검출을 함께 반영)로 잰다. 추적이 있어야 비로소 "이 차가 3초 뒤 어디로 갈지"(궤적 예측)로 넘어갈 수 있다.
3D 검출이 근본적으로 어려운 이유들:
- 가림(occlusion) — 앞차에 가린 뒤차는 점 몇 개로만 보인다.
- 롱테일 — 흔한 세단은 잘 잡지만, 공사 트럭·특수 차량·누워있는 물체는 드물어 놓치기 쉽다.
- 먼 거리 — 라이다 점이 성겨지고 카메라 픽셀이 작아진다.
- 작은 객체 — 보행자·자전거는 차보다 잡기 어렵다.
무엇으로 '잘한다'를 재는가
검출 성능은 보통 mAP(mean Average Precision) 로 재되, 3D에서는 IoU를 3D 부피로 계산하거나 중심 거리로 매칭한다. nuScenes의 NDS(nuScenes Detection Score) 는 mAP에 위치·크기·방향·속도·속성 오차까지 묶어 종합한다. 즉 "박스를 찾았는가"만이 아니라 "거리·방향·속도까지 맞았는가" 를 함께 본다 — 운전에 그 값들이 다 필요하기 때문이다.
데이터 엔지니어의 시선
3D 검출은 라벨 비용이 특히 비싸다. 사람이 포인트 클라우드를 돌려가며 3D 박스를 그려야 하기 때문이다. 그래서 데이터 쪽 레버는 분명하다.
- 어떤 장면을 라벨링할지 고르기 — 흔한 고속도로 직진 말고, 모델이 틀리는 롱테일을. (모델 실패 → 유사 장면 발굴 → 라벨링 → 재학습의 '데이터 플라이휠'.)
- 오토라벨링·프리라벨링 — 강한 오프라인 모델로 초벌 박스를 만들어 사람의 수정 부담을 줄이기.
- 일관성 검증 — 캘리브레이션·시간 오차로 생긴 틀린 박스를 걸러내기.
정리
- 3D 객체 검출은 주변 물체를 위치·크기·방향·속도를 가진 3D 박스로 예측한다. 2D로는 운전이 안 된다.
- 라이다 기반(PointPillars·CenterPoint)은 거리에 강하고, 카메라·BEV 기반은 싸고 의미에 강하며, 융합이 가장 세다.
- 가림·롱테일·먼 거리·작은 객체가 어려움의 원천이고, mAP·NDS로 '거리·방향·속도까지' 평가한다.
- 라벨 비용이 커서, '어떤 장면을 라벨링하느냐'가 데이터 레버의 핵심이다.
박스로 잡히는 것은 세상의 일부일 뿐이다. 박스로 안 잡히는 것들은 어떻게 다룰까 — 다음 글 점유 예측(Occupancy)으로 간다.