NAVSIM: Data-Driven Non-Reactive Autonomous Vehicle Simulation and Benchmarking

ad_official·2025년 2월 21일
0

[AD] dataset

목록 보기
5/12

GPT의 대답

🔍 기존 평가 방식의 문제점

1. "오픈 루프" vs "클로즈드 루프" 갈등

  • 오픈 루프 평가 (예: 주행 궤적 오차 측정)
    • 장점: 실제 데이터 사용 → 현실 반영
    • 단점: 차량의 결정이 환경에 미치는 영향 무시 (예: 내가 방향 틀면 다른 차들이 반응하는 상황 재현 불가)
  • 클로즈드 루프 평가 (전체 시뮬레이션)
    • 장점: 실제 상황처럼 상호작용 반영
    • 단점: 계산량 폭발적 증가, 시뮬레이터와 현실의 괴리 문제

2. 현존 벤치마크의 한계

  • nuScenes 등 기존 데이터셋: 24개 장면 유형만 포함 → 실제 복잡한 도로 상황 반영 부족
  • 평가 기준 불일치: 연구팀마다 자체 평가 방식 사용 → 결과 비교 불가능


🚘 NAVSIM이 해결한 핵심 문제

  • (OpenScene 데이터셋, nuPlan 기반)를 활용

"비반응형 시뮬레이션" 이란?

  • 4초 미래 예측: 실제 데이터 기반으로 4초 동안의 장면 전개 시뮬레이션
  • 환경 고정: 내 차의 결정이 주변 차량/보행자에 영향을 주지 않음 (고정된 궤적 사용)
  • BEV(조감도) 추상화: HD 맵 + 센서 데이터 조합으로 가상 공간 생성

💡 왜 이 방식이 좋은가?

  • 실제 데이터 기반 → 현실성 보장
  • 반응 계산 생략 → 47배 빠른 평가
  • 동일 조건에서 모든 알고리즘 테스트 가능


🛠️ NAVSIM 시스템 작동 원리

3대 핵심 모듈

  1. 장면 전개기 (Scene Unroller)

    • 10Hz(초당 10프레임)로 BEV 장면 생성
    • 주변 차량: 실제 궤적을 보간해 예측 (움직임 추정)
    • 도로 지형: HD 맵으로 정확히 재현
  2. 데이터 필터링 시스템

    • 1,000시간 실제 주행 데이터 중 '어려운 상황'만 선별
    • 예시 필터링 조건:
      • 보호되지 않은 좌회전 (신호등 없는 교차로)
      • 보행자 밀집 지역
      • 복합 교차로


구체적으로 주변 agents를 어떻게 모델링했는가

  • 2Hz 데이터를 10Hz로 선형 보간하여 시간 해상도를 높임.
  • 보간된 데이터를 HD 맵과 정렬해 물리적으로 일관된 궤적으로 변환.
  • LQR 컨트롤러로 궤적이 물리적으로 실행 가능한지 검증.
  • 키네마틱 바이시클 모델로 차량 움직임을 시뮬레이션하여 최종 궤적 생성.


🏆 CVPR 2024 대회 결과에서 드러난 통찰

놀라운 발견들

  • "작은 모델도 잘 할 수 있다": 2500만 파라미터 모델(TransFuser)이 12억 파라미터 모델(UniAD)과 0.82 vs 0.84로 근접 성적
  • 카메라 vs 라이다:
    • 카메라 단독: 승차감 점수 우세(Δ+0.15) but 저조도 환경에서 충돌 발생
    • 라이다: 안정성은 좋으나 계산량 많음
  • BEV 해상도: 512x512 이상에선 성능 향상 미미

평가 방식 검증

  • 실제 주행 테스트와 PDMS 점수 91% 일치
  • 기존 ADE/FDE(궤적 오차) 메트릭보다 실제 성능 예측력 25% 향상


💡 요약: NAVSIM이 바꾸는 자율주행 평가

  1. 공정한 경쟁장 제공: 누구나 클라우드로 동일 조건 평가
  2. 현실성+효율성 동시 확보: 실제 데이터 기반 빠른 평가
  3. 새로운 연구 방향 제시
    • "더 큰 모델 = 더 좋은 성능"이라는 고정관념 깸
    • 센서 융합 방식에 대한 재고 유발


PDMS

  • [navsim/planning/simulation/planner/pdm_planner/scoring/pdm_scorer.py] 참고하면 됨
  • Predictive Driver Model Score
  • 최종 점수 범위는 [0,1]로, 1에 가까울수록 주행 성능이 우수하다는 뜻
  • {}: 이산값
  • []: 연속값
  • PDMS = NC * DAC * (5*TTC + 5*EP + 2*C) / (5+5+2)
MetricWeightRange
No at-fault Collisions (NC) (충돌)하드 패널티{0(충돌), 1/2(적당한 충돌), 1(충돌 x)}
Drivable Area Compliance (DAC)하드 패널티{0, 1}
Time to Collision (TTC) within bound (4.5초 미래까지 충돌이 없어야 함)5{0, 1}
Ego Progress (EP)5[0, 1]
Comfort (C) (가속도,jerk)2{0, 1}

No at-fault Collisions (NC)

  • 0
    • 아래 3가지
      • ACTIVE_FRONT_COLLISION(ego 차량의 전면(프론트 범퍼)에서 발생한 충돌)
        • 단, 이때 주변 객체가 실제로 이동하는 차량(AGENT_TYPES에 속하는 객체)인 경우엔 완전한 패널티로 NC 점수를 0으로 설정
      • STOPPED_TRACK_COLLISION(주변 객체(트랙)가 정지한 상태에서의 충돌)
        • 단, 이때 주변 객체가 실제로 이동하는 차량(AGENT_TYPES에 속하는 객체)인 경우엔 완전한 패널티로 NC 점수를 0으로 설정
      • 만약 ego 차량이 여러 차선에 걸쳐 있거나 비주행 영역에 있을 때, ACTIVE_LATERAL_COLLISION(측면 충돌) 발생한 경우
  • 0.5
    • STOPPED_TRACK_COLLISION (주변 객체(트랙)가 정지한 상태에서의 충돌)
  • 1
    • 충돌이 없거나 책임 없는 충돌(위 케이스에 해당하지 않는 경우)

Time to Collision

  • 미래 궤적의 각 시점마다, CV model로 4.5초 동안 주변 객체와 충돌이 없는지 체크
  • 뒤에서 차가 와서 충돌하거나, 내 차가 정지해 있었으면 -> 충돌 X

Comfort (C)

  • [navsim/planning/simulation/planner/pdm_planner/scoring/pdm_scorer_utils.py] 참고하면 됨
profile
ad_official

0개의 댓글