- revisit the misalignment between the center of the 2D bounding box and the projected center of the 3D object
- distant objects is almost impossible → 학습에 방해
- a novel 3D IoU oriented loss → localization error에 영향 안받음
Intro
-
Centernet 기반
-
observation 1
- Monocular 3D detection에서 가장 큰 bottleneck -> localization error
- 3D object의 중심점을 project 하는 것은 매우 중요함 -> 그래서 2D bbox의 중심점과 projection한 3D object의 중심점 맞지 않는 것을 재정리함.
- 2D object detection branch도 계속 놔둠 -> auxiliary task 느낌으로, 기존 다른 논문들은 사용하지 않았음
-
observation 2
- 거리가 멀어짐에 따라 성능 급감 -> 멀어지면 localization error 급등, 이건 피할 수 없음 먼 물체의 경우
- 먼 물체, 가까운 물체 네트워크 입장에서 차이 매우 큼. 학습이 잘 안되는 이유들
- 그래서 point, 이런 데이터 셋을 trainset에서 제거, 이런 샘플들의 train loss 감소.
-
observation 3
- dimension estimation
- 기존 방법들의 경우 각각의 요소들을 독립적으로 따로 optimize 함
- 그러나 이 각각 요소들의 contribution (기여도, 중요도)를 반영하지 못하면, 완전한 최적화로 못 갈 수 있음.
- 해결 방법으로 => 3D size estimation을 위한 IoU Loss를 제안
- 이 Loss는 3D IoU에 대한 기여도에 따라 적용함.
-
요약
- localization error -> 메인 문제
- 이게 왜 문제인지 분석함.
- 문제 해결을 위해 1) annotation 2) training sample 3) optimization loss 에 대한 동작을 제안함.
Standard 방식
- RGB / annotations / camera calibration 만 사용하는 방법
- OFTNet : map image-based feature -> orthographic 3D space
- MonoDIS : 2D/3D detection을 disentagle하여 loss를 만듬.
- M3D-PRN : RPN을 3bbox 파라미터로 확장
- 하지만, 이 방법들 모두 localization 문제를 해결하지 못함.
Using additional Data 방법
- depth map을 pseudo-LiDAR Representation 방법
- 3D Kalman filter 사용
3D object의 중심점 재보정
- centernet의 경우 2D bbox의 중심점을 3D bbox의 중심점과 같이 생각 (3D bbox를 projection 시킨 것 → (x,y,z) to (x,y) // 그리고 나서 이거를 다시 3D로 변환 → 하지만, 이 경우 gap이 발생함 (실제 데이터와)
- 그래서 이 gap을 해결하려고 시도한 논문 있었음.
- 이런 gap을 줄이지 말고 아예 없애자 ! -> 2D bbox를 없애고 3D를 추정 / 이런 관점은 3D bbox를 추론하는 과정에서 2D bbox를 만들 수 있기 때문에 부정적
- 이 과정에서 본 논문은 2D bbox의 중심을 project된 3D bbox의 중심으로 대체하는 것이 효과적이고 localization 정확도를 향상 시킬 수 있음.
- 3D detection을 하는데, 2D bbox가 shared feature를 학습하는데 도움을 줌.
용어
-
γ : 3D 공간에서 Heading Angle
-
o i = ( Δ u i, Δ v i )
→ coarse한 중심 c = (u,v)와, 진짜 2D bbox c i 중심과의 offset
-
c i = c + o i
-
ow = ( Δ u w, Δ v w )
→ { coarse한 중심 c = (u,v)와 }, { 3D bbox를 projection한 c w 중심과의 offset }
Approach
일단 시작은,
먼저 이 논문에서는,
1. 2D bbox를 유추해서 3D bbox를 유추하는 것 (2D bbox만 검출)
2. 3D bbox를 이용해서 2D bbox를 유추하는 것 (3D bbox만 검출)
이게 localization error에 매우 치명적
그래서 본 논문에서는 2D detection도 필요하다고 생각.
2D에서는
coarse c는 2d bbox 중심 에 가깝게 학습이 되고,
oi는 이 c가 ci 로 가기 위한 offset을 의미
3D에서는
coarse c와 3d bbox 중심이 2d로 projected 된 점
ow는 이 c가 cw 로 가기 위한 offset을 의미
- 2D Detection + 3D Detection 나누어서 진행
- 2D Detection의 중심은 c i
- projected 된 3D Detection의 중심은 c w + camera 내부 파라미터 K ∈ R 3x3 : 3D 중심을 projection 중심과 camera 파라미터를 통해 3D공간상의 과표를 구할 수 있음.
( K x [ 3차원 좌표 ] ) → ( [ 2D projection 좌표 ] )
-
last 2 branch : 3D bbox의 size + γ (3D 공간에서 Heading Angle) 예측
-
7 개의 Losses
- 1) ① foreground/background sample classification
- 2) 2D Detection = ② center + ③ size [w,h]
- 3) 3D Detection = ④ center + ⑤ depth + ⑥ size [w,h,l] + ⑦ heading angle
- 2D : L1 loss에 anchor의 중심, size regression 사용하지 않음
- 3D : 3D center refinement를 위해 L1 loss 사용 + depth 추정을 위해, uncertainty modeling 사용(내가 모르는 부분) + size를 위해 L1 사용 + heading angle을 위해 multi-bin loss 사용(내가 모르는 부분)
- Modified Focal loss
- 이 모든 loss의 가중치는 모두 같음
monocular 3D Object Detection 성능 저하시키는 요인들
-
projected 3D 중심을 GT로 바꾸면 성능 향상 됨 → localization error가 원인임
-
또 ( K x [ 3차원 좌표 ] ) → ( [ 2D projection 좌표 ] ) 이 식을 봐서 알겠지만, depth와 중심점은 둘다 연관이 깊음. 둘 중 하나만 선택해야한다면, 중심점 유추를 더 잘하는 것이 좀 더 쉬움. depth는 어려움.
-
IoU threshold 0.7 → 0.62m error : 이게 먼 물체 검출 잘 안됨 / 멀리 있는 물체 정확히 검출하는 거 쉽지 않음.
-
3D 좌표를 2D
center detection
-
3D bbox를 projection한 c w 를 GT로 사용하여 coarse 중심 c = (u,v)을 예측함.
-
2D Detection을 동시에 학습하도록 함
→ 이게 전반적인 구조. 같은 feature를 사용함 동시에 함.
-
여기서 Point : 어떤 좌표를 기준으로 하여 학습을 할 것인가. → 결론적으로 coarse 중심을 c w을 [ 3D bbox projection 한 c w ]로 gt로 하여 [ 2D bbox c i ] 를 학습함.
이렇게 함으로써 geometric information을 알 수 있게 됨.
- 2D bbox 중심 좌표 (3D 좌표랑 관련 없음)
- 3D bbox projection 한 c w
-
2D bbox와 coarse bbox의 offset을 학습해가면서, 이렇게 함으로써 geometric information을 알 수 있게 됨.
- 어려운 task를 포기하면 오히려 성능을 더 높일 수 있다.
→ Hard Coding : 특정거리 이상의 물체 가중치 0으로
→ Soft Coding : reverse sigmoid-like func.