Delving into Localization Errors for Monocular 3D Object Detection

jaeha_lee·2022년 5월 12일
0
  • 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를 학습하는데 도움을 줌.

용어
  • γ\gamma : 3D 공간에서 Heading Angle

  • o i = ( Δ\Delta u i, Δ\Delta v i )
    → coarse한 중심 c = (u,v)와, 진짜 2D bbox c i 중심과의 offset

  • c i = c + o i

  • ow = ( Δ\Delta u w, Δ\Delta 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을 의미


  • Baseline : CenterNet

  • Backbone : DLA-34 (Speed-Accuracy trade-off)

  • 7개의 lightweight head (3x3 1개, 1x1 1)개

    • 2D → c를 가지고 oi를 ci와 같아지게 학습
      1) heat map : classification score, [ coarse center -> c ([u,v]) ] 를 예측하는 branch
      2) coarse center와 real center의 offset을 측정하는 branch
      3) bbox의 width, height를 예측하는 branch
    • 3D
      1) coarse center와 projected된 3D bbox 사이의 offset을 예측하는 branch
      2) depth branch
      3) 3D size → h, w, l
      4) orientation : γ\gamma
  • 2D Detection + 3D Detection 나누어서 진행
    • 2D Detection의 중심은 c i
    • projected 된 3D Detection의 중심은 c w + camera 내부 파라미터 K \in R\mathbb{R} 3x3 : 3D 중심을 projection 중심과 camera 파라미터를 통해 3D공간상의 과표를 구할 수 있음.
      ( K x [ 3차원 좌표 ] ) → ( [ 2D projection 좌표 ] )
  • last 2 branch : 3D bbox의 size + γ\gamma (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.

0개의 댓글