nuscenes dataset 구조

ad_official·2025년 2월 20일
0

[AD] dataset

목록 보기
3/12

전체 구조



can_bus

  • 자율주행차 내부의 다양한 센서 및 ECU(Electronic Control Unit)에서 발생하는 정보를 시간 축에 따라 기록한 것
  • 차량 동역학, 조향·가속·제동 입력, ECU 내부 상태 등을 재현하는 데 사용
  • scene-0001 폴더 안에 존재하는 8개의 JSON 파일은 대체로 다음과 같은 정보를 담고 있습니다 (파일명에 따라 일부 겹치는 부분도 있으나, 기록된 센서·ECU 종류가 다릅니다).
  • 실제로 nuScenes에서 운용하던 시험 차량은 Renault Zoe였으며, zoe_가 붙은 파일들은 해당 차량의 고유 센서/메시지 포맷을 다룹니다.

  1. scene-0001_meta.json

    • 장면 메타데이터: 실제 주행 시작·종료 시각(Unix Time), 샘플링 시간 간격 등 전반적인 시퀀스 정보를 담고 있습니다.
    • 주행 시나리오에 대한 고유 식별자, 센서 동기화 상태나 로깅 소프트웨어 버전 등의 정보가 기록되어 있을 수 있습니다.
  2. scene-0001_ms_imu.json

    • IMU 정보: 관성 측정 장치(IMU)에서 측정한 선가속도(acceleration), 각속도(angular velocity), 자세값(roll, pitch, yaw) 등이 타임스탬프와 함께 들어 있습니다.
    • 차량의 움직임(예: 브레이크 시 급감속, 코너링 시 각가속도)을 추정하거나 슬립 및 미끄러짐 감지 등에 활용할 수 있습니다.
  3. scene-0001_pose.json

    • 차량 위치·자세(pose) 추정 정보: 라이다, GPS, 관성 센서 등으로부터 융합(Fusion)된 결과 혹은 내부 로컬라이제이션 알고리즘 결과로서, 전역 좌표계(ECEF 또는 지도 좌표계 등)나 차량 좌표계에서의 위치(x, y, z)와 자세(roll, pitch, yaw)가 시간에 따라 기록되어 있습니다.
    • 보통 SLAM(Simultaneous Localization and Mapping) 또는 RTK-GPS 등의 기법을 통해 계산된 차량 위치가 들어 있기 때문에, 다른 센서 데이터와 융합 시 참조 값으로 사용됩니다.
  4. scene-0001_route.json

    • 차량 주행 경로(route) 정보: 실제 주행 중 계획된 경로나 차량이 이동한 궤적(trajectory)을 요약해 놓은 파일
    • 일반적으로 고수준 경로(waypoint) 또는 맵 기반 라우팅 정보(예: Lane ID 목록)가 시간 축과 함께 기록되어 있을 수 있습니다.
  5. scene-0001_steeranglefeedback.json

    • 조향 각도 피드백: 차량의 조향 장치(핸들)가 어느 각도로 꺾여 있는지, 또 그 신호가 ECU에서 어떻게 측정·기록되고 있는지에 대한 정보입니다.
    • 실제 핸들 입력과 바퀴의 조향 상태 간 차이를 모니터링하거나, 차량 동역학 모델을 딥러닝으로 학습할 때 중요한 피처로 사용할 수 있습니다.
  6. scene-0001_vehicle_monitor.json

    • 차량 모니터링 정보: 차량 상태 진단이나 내부 ECU에서 발생하는 오류 코드, 경고 신호 등의 모니터링 로그가 포함될 수 있습니다. 예를 들어 엔진 RPM, 배터리 전압, 각종 안전 시스템의 상태 등이 기록됩니다.
    • 자율주행 연구에서는 주행 중 발생한 비정상 신호나 ECU 로그를 바탕으로 차량 이상 징후를 탐지하는 연구에도 활용됩니다.
  7. scene-0001_zoe_veh_info.json

    • Renault Zoe 차량 고유 정보: Zoe 차량 특유의 ECU 메시지 형식, 드라이브 트레인(e.g., 전기모터) 상태, 배터리 관련 정보 등이 포함될 수 있습니다.
    • 상용 전기차 플랫폼의 CAN 데이터 특성을 파악하거나, Zoe 고유 프로토콜을 연구할 때 유용합니다.
  8. scene-0001_zoesensors.json

    • Renault Zoe 센서별 세부 정보: Zoe가 장착하고 있는 각종 센서(레이다, 초음파, 추가 IMU 등)에서 발생한 CAN 메시지를 구조화하여 기록한 파일입니다.
    • 예를 들어 각 센서 ID별로 측정 거리, 장애물 감지, 센서 온도 혹은 상태 플래그 등이 담겨 있을 수 있습니다.


maps


basemap

  • boston-seaport.png 등 4개

expansion

  • HD 지도 데이터는 전문 매핑 차량과 고해상도 위성/항공 이미지 등 다양한 소스에서 수집된 원본 데이터를 바탕으로 제작
  • boston-seaport.json 등 4개
  • 목적: 고정밀 vector HD map 원본 데이터를 보관
    • 벡터화된 지도 요소(예: 차선 중심선, 차선 경계, 도로 경계, 횡단보도 등)를 포함
  • 이 데이터는 nuScenes Map API(예, Map Expansion Tutorial)에서 사용되어, 주행 주변의 지도 요소를 쿼리 및 렌더링할 수 있도록 지원

데이터 종류 (boston-seaport.json)

  • version
  • polygon
  • line
  • node
  • drivable_area
  • road_segment
  • road_block
  • lane
  • ped_crossing
  • walkway
  • stop_line
  • carpark_area
  • road_divider
  • lane_divider
  • traffic_light
  • canvas_edge
  • connectivity
  • arcline_path_3
  • lane_connector

prediction

  • prediction_scenes.json 파일 1개
  • 목적: 예측(challenge) 작업을 위해 가공된 지도 데이터를 보관
  • 예측 알고리즘에 유리하도록
    • 추가적인 의미 정보와
    • 도로의 토폴로지(예: 차선 연결 관계, 주행 가능 영역 등)를 포함하는 지도 데이터
  • 이 데이터는 nuScenes Prediction Challenge(예, Prediction Tutorial)에서 사용되어, 미래 궤적 예측 시 도로 환경을 더 정밀하게 반영할 수 있도록 설계

포함 데이터의 상세 내용

  • 도로 그래프 및 토폴로지 정보:
    • 각 차선 간의 연결 관계, 분기 및 교차로 정보 등 도로 네트워크의 구조적 특징을 표현한 데이터
    • 예측 모델이 ego 차량이나 주변 객체의 미래 이동 경로를 예측할 때, 도로의 연결성 및 전반적인 형태 정보를 반영할 수 있도록 설계됨
  • 라스터화된 지도 표현 및 부가 특성:
    • 지도 데이터를 CNN 등 신경망 모델의 입력으로 사용하기 위해, 벡터 데이터를 2D 이미지(라스터) 형태로 변환한 데이터
    • drivable area, 차선 중심선, 도로 경계 등 주요 요소가 픽셀 단위로 표현되어, 모델이 지도 정보를 쉽게 파악할 수 있도록 제공됨
    • 추가적으로, 속도 제한, 교차로 위치 등 예측에 영향을 줄 수 있는 도로 환경의 부가 정보가 포함될 수 있음

사용 시나리오

  • 미래 궤적 예측: 객체의 미래 위치를 예측할 때, 도로 네트워크의 토폴로지 정보를 입력으로 제공하여 예측 정확도를 높임
  • 지도 기반 입력 표현: 예측 모델이 도로 상황을 반영한 입력 텐서를 구성할 때 활용
  • 경로 예측 및 행동 계획: 도로의 연결성, 차선 변경 가능성 등 지도 컨텍스트 정보를 기반으로 보다 현실적인 주행 경로 예측 지원


samples folder

  • 각 키프레임(주요 순간)에 대한 센서 데이터(예: LiDAR, RADAR, 카메라 이미지 등)를 저장
  • 키프레임?
    • 센서 데이터(예: LiDAR, 카메라, RADAR 등)가 거의 동시에 기록된, (모든 센서의 타임스탬프가 거의 일치하는 프레임이 keyframe으로 선정)
    • 완전하게 어노테이션이 달린 프레임으로 정의


sweeps folder

  • 키프레임 사이의 짧은 시간 간격에 수집된 연속 프레임으로, 동적 객체의 움직임이나 장면의 시간적 변화 정보를 보완하는 데 사용


v1.0-trainval

  • 아래는 data/nuscenes/v1.0-trainval 폴더 내에 포함된 각 JSON 파일에 담긴 정보를 매우 구체적으로 설명한 내용입니다.
  • 모든 테이블은 nuScenes 데이터베이스의 “정규화된” 형태로, 각 파일은 하나의 테이블(리스트 형태의 딕셔너리)로 구성되어 있으며, 서로 연결된 외래키(토큰)를 통해 전체 데이터가 서로 연관됩니다.

1. attribute.json

  • 목적:
    • 객체(annotated object)의 속성(예: “vehicle.moving”, “vehicle.parked”, “pedestrian.standing” 등)을 정의
  • 주요 정보:
    • 각 속성 항목은 고유 토큰, 속성 이름, 그리고 설명(이 속성이 의미하는 바)을 포함
  • 활용:
    • sample_annotation에서 attribute_tokens 필드를 통해 객체의 추가 특성을 제공하며, 객체의 상태나 행동을 세분화할 때 사용됩니다.

2. calibrated_sensor.json

  • 목적:
    • 차량에 장착된 각 센서(카메라, LiDAR, RADAR 등)의 설치 위치와 방향(즉, 센서-ego 변환 정보)을 정의합니다.
  • 주요 정보:
    • 각 항목은 센서의 translation(평행 이동 벡터)과 rotation(회전 쿼터니언) 정보를 담으며, 카메라의 경우 camera_intrinsic(내부 파라미터) 정보도 포함됩니다.
  • 활용:
    • 센서 데이터(sample_data)를 글로벌 좌표계나 ego 좌표계로 변환할 때 기준으로 사용됩니다.

3. category.json

  • 목적:
    • nuScenes에서 사용되는 객체 카테고리(예: vehicle.car, human.pedestrian.adult 등)의 taxonomy를 정의합니다.
  • 주요 정보:
    • 각 카테고리는 고유 토큰, 카테고리 이름, 그리고 간략한 설명을 포함합니다.
  • 활용:
    • sample_annotation 및 instance 테이블에서 객체의 종류를 지정하는 데 사용됩니다.

4. ego_pose.json

  • 목적:
    • 데이터 수집 시점마다 ego 차량의 위치와 자세(orientation)를 기록합니다.
  • 주요 정보:
    • 각 항목은 글로벌 좌표계에서의 translation(위치)과 rotation(자세, 쿼터니언 형식), 그리고 타임스탬프를 포함합니다.
  • 활용:
    • 센서 데이터와 객체 어노테이션을 글로벌 좌표계로 정합하거나, 차량의 주행 궤적을 복원하는 데 사용됩니다.

5. instance.json

  • 목적:
    • 동일 객체(예: 한 차량이나 보행자)를 식별하기 위한 고유 인스턴스 정보를 정의합니다.
  • 주요 정보:
    • 각 인스턴스 항목은 고유 토큰, 해당 인스턴스가 속한 카테고리(category_token), 그리고 이 인스턴스에 연결된 어노테이션의 개수(nbr_annotations), 첫 번째와 마지막 어노테이션 토큰(first_annotation_token, last_annotation_token) 등을 포함합니다.
  • 활용:
    • 여러 sample_annotation이 동일 객체에 속함을 연결해 추적(tracking) 및 객체별 이력 분석에 사용됩니다.

6. log.json

  • 목적:
    • 데이터 수집 세션(로그)의 메타데이터를 제공합니다.
  • 주요 정보:
    • 각 로그 항목은 고유 토큰, 데이터가 기록된 로그파일 이름, 차량 ID, 촬영 날짜, 데이터가 수집된 위치(location)와 해당 로그에 사용된 지도(map_token) 정보를 포함합니다.
  • 활용:
    • 하나의 로그는 여러 씬(scene)을 포함하며, 데이터의 수집 배경(날짜, 지역, 노선 등)을 파악하는 데 사용됩니다.

7. map.json

  • 목적:
    • nuScenes에서 제공하는 HD 지도(정밀 지도) 정보를 정의합니다.
  • 주요 정보:
    • 각 지도 항목은 고유 토큰, 지도 이미지 파일의 경로(filename) 및 카테고리(보통 “semantic_prior”) 정보를 포함하며, 이 지도가 어떤 로그(log)에서 사용되었는지를 나타내는 log_tokens 목록도 포함됩니다.
  • 활용:
    • 지도 API를 통해 도로, 차선, 횡단보도 등의 정보를 쿼리하고 렌더링하는 기반 자료로 사용됩니다.

8. sample.json

  • 목적:
    • 각 씬(scene) 내에서 일정 간격(보통 0.5초)으로 기록된 키프레임(annotated keyframe) 정보를 제공합니다.
  • 주요 정보:
    • 각 샘플 항목은 고유 토큰, 타임스탬프, 해당 샘플에 연결된 센서 데이터(sample_data)와 어노테이션(sample_annotation) 토큰들, 그리고 이 샘플이 속한 씬(scene_token) 정보를 포함합니다.
  • 활용:
    • 주행 상황의 정지된 스냅샷 역할을 하며, 모델 학습 및 평가 시 기준 데이터로 사용됩니다.

9. sample_annotation.json

  • 목적:
    • 각 sample(키프레임) 내에서 개별 객체(어노테이션)의 3D 바운딩 박스, 크기, 위치, 회전, 속성 등의 정보를 기록합니다.
  • 주요 정보:
    • 각 어노테이션 항목은 고유 토큰, 해당 샘플 토큰, 인스턴스 토큰, visibility(가시성) 토큰, attribute_tokens, 객체의 translation, size, rotation, 이전/다음 어노테이션(prev, next) 포인터, 그리고 각 센서(LiDAR, RADAR)에서 감지된 포인트 수 등을 포함합니다.
  • 활용:
    • 객체 검출, 분류, 트래킹, 3D 바운딩 박스 회귀 등 자율주행 관련 다양한 작업의 Ground Truth로 사용됩니다.
일시적으로 가려진 객체들도 보간법을 통해 어노테이션됩니다. 만약 객체가 한 시점에 보이고 나중에 다시 보이면, 그 사이의 프레임은 보간됩니다. 그러나 평가 목적으로는 라이다나 레이더 포인트가 없는 박스는 제거됩니다. 
가시성 및 Occlusion: 데이터셋은 특정한 occlusion 기준을 사용하지 않고, 인간 어노테이터가 가시성 수준을 주석으로 달아줍니다. 이는 모든 카메라의 파노라마 뷰에서 보이는 객체 픽셀의 백분율에 따라 4개의 구간(0-40%, 40-60%, 60-80%, 80-100%)으로 나뉩니다.

10. sample_data.json

  • 목적:
    • 각 센서(카메라, LiDAR, RADAR 등)에서 수집된 원시 데이터를 가리키는 메타 정보를 제공합니다.
  • 주요 정보:
    • 각 sample_data 항목은 고유 토큰, 해당 샘플(sample_token)과 연결된 토큰, 센서 캘리브레이션(calibrated_sensor_token), ego_pose_token, 타임스탬프, 데이터 파일 경로(filename), 파일 형식(fileformat), 센서 채널(channel), is_key_frame 여부, 그리고 이전/다음 데이터 포인터(prev, next) 등을 포함합니다.
  • 활용:
    • 각 센서의 실제 데이터(예: 이미지 파일, 점군 데이터 등)에 접근하고, 시간적 연속성(스윕)을 파악하는 데 사용됩니다.

11. scene.json

  • 목적:
    • 하나의 주행 세션(씬)에 대한 정보를 제공합니다.
  • 주요 정보:
    • 각 scene 항목은 고유 토큰, 해당 scene이 속한 로그(log_token), 씬 내에 포함된 샘플의 개수(nbr_samples), 첫 번째 및 마지막 샘플 토큰(first_sample_token, last_sample_token), 그리고 씬의 이름(name)과 간단한 설명(description)을 포함합니다.
  • 활용:
    • 씬 단위의 데이터 분석, 트래킹 및 전체 주행 세션의 메타데이터로 활용됩니다.

12. sensor.json

  • 목적:
    • 차량에 장착된 각 센서(카메라, LiDAR, RADAR 등)의 기본 정보를 정의합니다.
  • 주요 정보:
    • 각 센서 항목은 고유 토큰, 센서 채널(channel; 예: CAM_FRONT, LIDAR_TOP 등), 그리고 센서의 모달리티(modality; camera, lidar, radar 등)를 포함합니다.
  • 활용:
    • 각 센서 데이터(sample_data)를 어떤 센서에서 수집했는지 식별하고, 센서별 특성을 이해하는 데 사용됩니다.

13. visibility.json

  • 목적:
    • 각 객체의 가시성 수준을 정의합니다. (즉, 객체가 6개 카메라에서 어느 정도 보이는지를 4단계로 구분)
  • 주요 정보:
    • 각 visibility 항목은 고유 토큰, 가시성 수준을 나타내는 level(예: “v0-40”, “v80-100”)과 이에 대한 설명(description)을 포함합니다.
  • 활용:
    • sample_annotation에서 visibility_token을 통해 객체의 가시성을 나타내며, 일부 연구나 평가에서 중요한 기준으로 사용됩니다.

profile
ad_official

0개의 댓글