|
|
parquet?
https://pearlluck.tistory.com/561
SparseDrive/VAD 같은 모델들은 원래 nuScenes 포맷(json 기반)에 맞춰 만들어졌기 때문에,
parquet 구조를 nuScenes스타일 데이터로더 인터페이스에 맞게 변환하는 전처리 스크립트를 직접 짜야 하는 작업 고려
(프레임워크에 converter 없을 시...)
Label
Perception: 3D 객체(Vehicle/Pedestrian/Cyclist), 주변 객체의 미래 궤적(Agent Trajectory), 차선 Geometry(map)
Planning: Ego 차량의 과거/미래 궤적
평가 방법 (2단계)
1차 평가, Cut-off
nuScenes End-to-End Planning 지표인 L2(m)를 기준으로 평가한다.
또한 VAD 대비 FLOPs(연산량)가 3배 이상 초과할 경우 실시간성 부족으로 탈락한다.
2차 평가, 최종 점수 산출
1차 평가에서 통과한 수상 후보팀을 대상으로 L2와 추론 속도를 함께 반영하여 최종 Error Score 산출
-> 추론 시간이 100ms 이하면 감점 없음, 초과분에 비례해 가중치를 곱해 감점한다.
Baseline VAD Model
Vectorized Scene Representation for Efficient Autonomous Driving, ICCV 2023
https://arxiv.org/abs/2303.12077
핵심 아이디어
기존 UniAD류 모델들이 BEV(Bird's-Eye-View) 특징맵을 dense하게 래스터화해서 쓰는 것과 달리,
VAD는 장면의 모든 요소(주변 객체, 차선, ego)를 벡터화된 인스턴스 단위 쿼리로 표현한다.
Dense한 픽셀/그리드 연산을 줄여서 UniAD 대비 훨씬 빠르다.
https://cafe.daum.net/SmartRobot/RoVa/2717
BEV 래스터화 방식 (UniAD 등 기존 모델들)?
카메라로 찍은 걸 BEV처럼 바꾼 다음, 그 지도를 grid로 쪼개서 객체가 있는지 없는지
픽셀 하나하나를 채워 넣는 방식이다. -> 연산량이 매우 큼 / 아무것도 없는 빈 공간까지 계산해야 하기 때문
반대로 VAD는 필요한 것만 좌표와 형태로 적어버린다.
= 벡터화 방식을 쓴다는 말, 빈 공간을 계산하지 않고, 의미 있는 객체, 차선만 벡터로 다룬다.
구조 흐름
카메라 이미지 → ResNet50 백본 → BEV 인코더(디포머블 어텐션 기반) → 벡터화된 에이전트/맵 쿼리 디코더 →
명시적 인스턴스 레벨 계획 제약(다른 차량·보행자·차선과의 관계를 벡터로 직접 비교)을 반영한 Planning 헤드
개발환경 구축 결과
Hardware: RTX 4070 SUPER 12GB
Software: Ubuntu22.04
https://cafe.daum.net/SmartRobot/RoVa/2722
Baseline 훈련 / 추론 결과
훈련 시 사용 데이터셋 / 약 100GB
압축을 풀고 pkl 파일을 만들어준다.
| $ cd ~/VAD $ python tools/data_converter/vad_nuscenes_converter.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag vad_nuscenes --version v1.0 --canbus ./data |
실제 공개 GFLOPs