nuscenes tutorial

ad_official·2025년 2월 20일
0

[AD] dataset

목록 보기
2/12

map expansion

이 튜토리얼은 nuScenes의 HD 지도 데이터를 “확장(expansion)”하여 활용하는 방법을 상세하게 다룹니다. 주요 내용을 아래와 같이 정리할 수 있습니다.

  1. HD Map 데이터 개요

    • nuScenes는 고정밀 벡터 HD map을 제공합니다. 이 지도에는 도로, 차선, 차선 경계, 중앙 분리대, 보행자 횡단보도 등 도로 인프라의 다양한 요소가 포함되어 있습니다.
    • 원본 지도 데이터는 벡터 형식으로 저장되어 있으며, 이를 그대로 사용하면 실시간 쿼리나 렌더링에 한계가 있으므로 전처리(확장) 과정을 거칩니다.
  2. Map Expansion의 목적

    • “확장”은 원본 벡터 데이터를 보다 효율적이고 정밀하게 활용할 수 있도록 구조화하는 과정입니다.
    • 이 과정에서는 각 지도 요소를 기하학적 객체(예: Shapely의 LineString, Polygon)로 변환하여, 원하는 영역(ROI) 내에서 빠른 검색 및 연산이 가능하도록 합니다.
    • 또한, 여러 개의 작은 폴리곤(예: 분할된 차선 경계)을 하나의 연속된 기하 객체로 병합하는 등의 후처리도 포함됩니다.
  3. nuScenes Map API 활용법

    • 튜토리얼에서는 nuScenesMap 및 NuScenesMapExplorer 클래스의 사용법을 설명합니다.
    • 이를 통해 주어진 (x, y) 좌표와 차량의 방향(heading)을 기준으로, 해당 위치에 가장 가까운 차선, 도로 경계, 보행자 횡단보도 등의 지도 요소를 쿼리하는 방법을 배울 수 있습니다.
    • 예제 코드와 함께, 지도 요소들의 속성(예: 시작·종료 좌표, 길이, 곡률 등)을 추출하고, 이를 시각화하는 과정도 자세히 다룹니다.
  4. 좌표 변환 및 쿼리 기법

    • 지도 좌표 체계와 글로벌 좌표 체계 간의 변환 방법(예: 변환 행렬, 회전, 평행 이동)을 설명하여, 실제 차량 위치와 지도 데이터 간의 정합성을 맞추는 과정을 소개합니다.
    • 이를 통해, 차량의 현재 위치를 중심으로 지도 데이터에서 관심 영역을 정의(patch box)하고, 해당 영역 내의 지도 요소들을 효율적으로 검색할 수 있습니다.
  5. 지도 데이터 전처리 및 후처리

    • 원본 벡터 데이터를 라스터 이미지로 변환하거나, 여러 지도 요소들을 합치고 분할하는 등 다양한 기하 연산을 수행하는 방법이 상세히 설명됩니다.
    • 예를 들어, 차선 경계가 여러 조각으로 나뉘어 있는 경우 이들을 병합해 연속적인 경계로 만드는 로직 등이 포함됩니다.
  6. 실습 예제 및 시각화

    • 튜토리얼은 실제 코드 예제를 통해, 확장된 지도 데이터를 어떻게 쿼리하고 렌더링하는지 보여줍니다.
    • 이를 통해 사용자는 자신이 원하는 영역에 대해 차선, 도로 경계, 보행자 횡단보도 등의 정보를 시각적으로 확인하고, 자율주행 알고리즘에 입력으로 사용할 수 있는 형태로 가공하는 방법을 익힐 수 있습니다.



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) 등을 쿼리할 수 있는 기능이 추가되었습니다.
  • 활용 예:
    예측 모델은 지도에서 현재 차량 위치 근처의 차선 구조나 도로 토폴로지 정보를 참고하여, 가능한 주행 경로의 제약 조건을 반영할 수 있습니다.

5. 입력 표현 (Input Representation)

  • 정적 정보와 동적 정보의 결합:
    튜토리얼은 지도(정적) 정보와 에이전트(동적) 이력 정보를 어떻게 결합하여 딥러닝 모델의 입력으로 사용할지를 설명합니다.
  • 정적 레이어:
    도로의 drivable area, 차선 중심선, 경계 등의 정보를 라스터화하여 이미지 형태로 표현합니다.
  • 에이전트 레이어:
    에이전트의 과거 위치 기록(예: 이전 keyframe들에서의 위치, 속도 등)을 함께 포함하여, 동적 상황을 반영합니다.
  • 결합 기법:
    두 정보를 하나의 텐서로 결합하는 방법을 제시하며, 이는 모델이 지도와 객체의 움직임을 동시에 학습할 수 있도록 돕습니다.

6. 모델 구현 (Model Implementations)

  • 대표 모델:
    튜토리얼에서는 두 가지 예제 모델, CoverNetMTP를 소개합니다.
    • 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 참가자가 데이터 전처리, 모델 설계, 결과 평가까지 전체 프로세스를 이해하고, 자신의 예측 모델을 개발하여 챌린지에 제출할 수 있도록 상세히 안내합니다.

출처:

profile
ad_official

0개의 댓글