map expansion
이 튜토리얼은 nuScenes의 HD 지도 데이터를 “확장(expansion)”하여 활용하는 방법을 상세하게 다룹니다. 주요 내용을 아래와 같이 정리할 수 있습니다.
-
HD Map 데이터 개요
- nuScenes는 고정밀 벡터 HD map을 제공합니다. 이 지도에는 도로, 차선, 차선 경계, 중앙 분리대, 보행자 횡단보도 등 도로 인프라의 다양한 요소가 포함되어 있습니다.
- 원본 지도 데이터는 벡터 형식으로 저장되어 있으며, 이를 그대로 사용하면 실시간 쿼리나 렌더링에 한계가 있으므로 전처리(확장) 과정을 거칩니다.
-
Map Expansion의 목적
- “확장”은 원본 벡터 데이터를 보다 효율적이고 정밀하게 활용할 수 있도록 구조화하는 과정입니다.
- 이 과정에서는 각 지도 요소를 기하학적 객체(예: Shapely의 LineString, Polygon)로 변환하여, 원하는 영역(ROI) 내에서 빠른 검색 및 연산이 가능하도록 합니다.
- 또한, 여러 개의 작은 폴리곤(예: 분할된 차선 경계)을 하나의 연속된 기하 객체로 병합하는 등의 후처리도 포함됩니다.
-
nuScenes Map API 활용법
- 튜토리얼에서는 nuScenesMap 및 NuScenesMapExplorer 클래스의 사용법을 설명합니다.
- 이를 통해 주어진 (x, y) 좌표와 차량의 방향(heading)을 기준으로, 해당 위치에 가장 가까운 차선, 도로 경계, 보행자 횡단보도 등의 지도 요소를 쿼리하는 방법을 배울 수 있습니다.
- 예제 코드와 함께, 지도 요소들의 속성(예: 시작·종료 좌표, 길이, 곡률 등)을 추출하고, 이를 시각화하는 과정도 자세히 다룹니다.
-
좌표 변환 및 쿼리 기법
- 지도 좌표 체계와 글로벌 좌표 체계 간의 변환 방법(예: 변환 행렬, 회전, 평행 이동)을 설명하여, 실제 차량 위치와 지도 데이터 간의 정합성을 맞추는 과정을 소개합니다.
- 이를 통해, 차량의 현재 위치를 중심으로 지도 데이터에서 관심 영역을 정의(patch box)하고, 해당 영역 내의 지도 요소들을 효율적으로 검색할 수 있습니다.
-
지도 데이터 전처리 및 후처리
- 원본 벡터 데이터를 라스터 이미지로 변환하거나, 여러 지도 요소들을 합치고 분할하는 등 다양한 기하 연산을 수행하는 방법이 상세히 설명됩니다.
- 예를 들어, 차선 경계가 여러 조각으로 나뉘어 있는 경우 이들을 병합해 연속적인 경계로 만드는 로직 등이 포함됩니다.
-
실습 예제 및 시각화
- 튜토리얼은 실제 코드 예제를 통해, 확장된 지도 데이터를 어떻게 쿼리하고 렌더링하는지 보여줍니다.
- 이를 통해 사용자는 자신이 원하는 영역에 대해 차선, 도로 경계, 보행자 횡단보도 등의 정보를 시각적으로 확인하고, 자율주행 알고리즘에 입력으로 사용할 수 있는 형태로 가공하는 방법을 익힐 수 있습니다.
2. Prediction Tutorial
- nuScenes Prediction Tutorial은 nuScenes Prediction Challenge에 참여하기 위한 전 과정을 안내하는 튜토리얼입니다.
- 이 튜토리얼은 데이터 준비부터 입력 표현, 모델 구현, 예측 결과 제출까지의 전체 파이프라인을 상세하게 설명
1. 개요 및 목표
- 목표:
주어진 keyframe에서 각 객체(에이전트)의 과거 이력과 미래 궤적을 활용하여, 앞으로의 이동 경로(미래 위치)를 예측하는 문제를 다룹니다.
- 예측 챌린지:
참가자는 nuScenes의 주행 데이터를 기반으로, 객체의 미래 2D 궤적(예: 3~6초 후의 위치)을 예측하고, 이를 정해진 형식의 제출 파일로 만들게 됩니다.
2. 데이터 분할 (Data Splits)
- 데이터 셋 구성:
nuScenes 데이터는 train, val, test로 분할되어 있으며, 예측 챌린지에서는 각 에이전트(객체)의 instance token과 해당 keyframe sample token을 결합한 식별자를 사용
- 예제:
튜토리얼에서는 get_prediction_challenge_split
함수를 이용해 예측에 사용할 에이전트 목록(예: mini_train split)을 불러오는 방법을 보여줍니다.
3. 과거 및 미래 데이터 획득 (Getting Past and Future Data)
- PredictHelper 클래스:
- 이 클래스는 주어진 에이전트에 대해 과거와 미래의 위치 정보를 편리하게 조회할 수 있도록 도와줍니다.
- 과거 데이터:
에이전트의 이전 프레임(과거 이력)을 조회하여, 에이전트가 최근 어떻게 움직였는지 파악할 수 있습니다.
- 미래 데이터:
에이전트의 미래 궤적(예측 대상)을, 두 가지 좌표 체계로 반환합니다.
- Agent (Local) Frame: 에이전트 중심으로, 에이전트의 heading을 기준으로 좌표가 정렬되어 미래 위치를 상대적으로 표현합니다.
- Global Frame: 전역 좌표계에서의 미래 위치를 제공합니다.
- 예제 코드:
튜토리얼에서는 helper.get_future_for_agent(instance_token, sample_token, seconds=3, in_agent_frame=True)
와 같이 호출하여, 에이전트의 3초 후 위치들을 배열 형태로 반환받는 방법을 자세히 설명합니다.
4. 지도 API 변경 사항 (Changes to the Map API)
- 지도 정보 활용:
미래 궤적 예측 시, 지도 정보(예: 차선, 도로 경계 등)가 중요한 역할을 합니다.
- 추가 메서드:
기존 Map API에 lane centerline, 연결성(lane connectivity) 등을 쿼리할 수 있는 기능이 추가되었습니다.
- 활용 예:
예측 모델은 지도에서 현재 차량 위치 근처의 차선 구조나 도로 토폴로지 정보를 참고하여, 가능한 주행 경로의 제약 조건을 반영할 수 있습니다.
- 정적 정보와 동적 정보의 결합:
튜토리얼은 지도(정적) 정보와 에이전트(동적) 이력 정보를 어떻게 결합하여 딥러닝 모델의 입력으로 사용할지를 설명합니다.
- 정적 레이어:
도로의 drivable area, 차선 중심선, 경계 등의 정보를 라스터화하여 이미지 형태로 표현합니다.
- 에이전트 레이어:
에이전트의 과거 위치 기록(예: 이전 keyframe들에서의 위치, 속도 등)을 함께 포함하여, 동적 상황을 반영합니다.
- 결합 기법:
두 정보를 하나의 텐서로 결합하는 방법을 제시하며, 이는 모델이 지도와 객체의 움직임을 동시에 학습할 수 있도록 돕습니다.
6. 모델 구현 (Model Implementations)
- 대표 모델:
튜토리얼에서는 두 가지 예제 모델, CoverNet과 MTP를 소개합니다.
- CoverNet:
미리 정의된 궤적 집합(trajectory set) 중 하나를 선택하는 방식으로, 각 궤적에 대한 확률 분포를 예측합니다.
- MTP (Multi-Trajectory Prediction):
여러 가지 가능한 미래 궤적을 동시에 예측하는 모델로, 각 궤적의 가능도(probability)를 함께 산출합니다.
- 백본 네트워크:
입력 이미지를 처리하기 위해 ResNet50 등 CNN 기반 백본을 사용하며, 이를 통해 추출된 특징을 기반으로 예측을 수행합니다.
- 예제 코드:
튜토리얼은 모델 인스턴스 생성, 입력 텐서 전처리, 그리고 예측 결과 출력 방법에 대한 코드를 상세히 제공하여, 참가자가 직접 구현할 수 있도록 돕습니다.
7. 제출 파일 제작 (Making a Submission)
- Prediction 데이터 타입:
제출 파일은 각 에이전트에 대해 instance token, sample token, 예측 궤적(다중 모드 예측: 각 모드마다 시간 단계별 2D 좌표), 그리고 각 모드의 확률을 포함하는 형식으로 구성됩니다.
- 제출 형식:
튜토리얼은 예측 결과를 JSON 파일로 직렬화하고, 정해진 형식에 맞추어 제출 파일을 생성하는 방법을 안내합니다.
- 제약 조건:
예측 모드의 수, 배열 차원, 확률 벡터의 크기 등 제출 시 필수적으로 만족해야 할 조건들을 명시하고, 잘못된 형식의 예제와 올바른 예제 코드를 함께 제공합니다.
8. 전체 흐름 및 활용
- 전체 파이프라인:
데이터 분할 → 에이전트별 과거/미래 데이터 조회 → 지도 정보 및 입력 표현 구성 → 모델을 통한 예측 → 제출 파일 생성의 순서로 진행됩니다.
- 실제 활용:
이 튜토리얼은 nuScenes Prediction Challenge 참가자가 데이터 전처리, 모델 설계, 결과 평가까지 전체 프로세스를 이해하고, 자신의 예측 모델을 개발하여 챌린지에 제출할 수 있도록 상세히 안내합니다.
출처: