2주 안에 학교 과제로 딥러닝 모델을 학습시키고 이거에 대한 영상을 찍어야 한다.
마침 올해는 자율주행 프로젝트를 주로 하고 있기에, 이와 관련된 프로젝트를 선정 중이다.
2주라는 한정된 시간과 3090 한대라는 한정된 자원 속에 가장 할만한 프로젝트를 두 개 선정하였다.
1. pi0를 사용하여 데이터셋을 구해와 학습시킨 뒤, 시연하는 것(추론하는 과정만 보여주는 것. (ros2 환경 x. 오픈 데이터셋으로 학습시킨 뒤 실제 도로 주행 영상만 입혀 trajectory 생성하는 것만 보여줌)
2. 엣지 데이터셋에 대해 인지 과정에서의 인식률 급감을 보여주고, 이를 개선시키는 것(퓨전 등을 사용)
우선 주행 관련 데이터셋들을 구하기 위해 서칭을 해봤다.
1. nuScenes
- 특징: 보스턴과 싱가포르의 복잡한 도심 환경에서 수집되었습니다. 6대의 카메라, 5대의 레이더, 1대의 라이다가 360도를 커버합니다.
- 추천 이유 (2주 단기 프로젝트용): nuscenes-devkit이라는 파이썬 기반 라이브러리가 매우 강력합니다. 또한, 이 데이터를 ROS 2에서 사용할 수 있는 rosbag2 포맷으로 변환해 주는 오픈소스 도구들이 깃허브에 많아, 실제 아키텍처 환경에서 데이터를 재생(Play)하며 통신 지연이나 시스템 부하를 테스트하기에 아주 좋습니다.
- 접근: nuscenes.org 에서 가입 후 다운로드 가능 (Mini 버전 데이터셋을 제공하여 빠르게 찍어먹어 보기 좋습니다).
2. Waymo Open Dataset
- 특징: 센서의 해상도와 데이터의 정밀도가 업계 최고 수준입니다. 인지(Perception)뿐만 아니라, 객체의 다음 움직임을 예측하는 모션 예측(Motion Prediction) 데이터셋도 분리되어 있습니다.
- 추천 이유: 고도화된 모델 성능을 검증하는 데 최적화되어 있습니다. 다만 데이터 용량이 매우 크고 포맷(tfrecord)이 약간 무거울 수 있어, 전체 데이터보다는 일부 샘플 데이터만 추출해서 파이프라인의 입출력을 검증하는 용도로 쓰기를 권장합니다.
- 접근: waymo.com/open
About – Waymo Open Dataset
The field of machine learning is changing rapidly. Waymo is in a unique position to contribute to the research community, by creating and sharing some of the largest and most diverse autonomous driving datasets. Check out the WOD Challenges on Interaction
waymo.com
3. KITTI
자율주행 데이터셋의 '조상님'격인 데이터셋입니다.
- 특징: 독일 카를스루에 지역에서 수집된 데이터로, 구조가 매우 직관적이고 단순합니다.
- 추천 이유 (2주 단기 프로젝트용): 데이터 포맷이 복잡하지 않고 용량이 상대적으로 가볍습니다. 최신 모델들의 벤치마크로는 다소 구형 취급을 받지만, '모델을 C++ 환경으로 포팅하고 실시간 처리 파이프라인을 구축한다'는 시스템 아키텍처 관점의 목표라면, 복잡한 데이터 파싱에 시간을 뺏기지 않고 구현 자체에 집중할 수 있게 해주는 최고의 선택지입니다.
- 접근: cvlibs.net/datasets/kitti
The KITTI Vision Benchmark Suite
We thank Karlsruhe Institute of Technology (KIT) and Toyota Technological Institute at Chicago (TTI-C) for funding this project and Jan Cech (CTU) and Pablo Fernandez Alcantarilla (UoA) for providing initial results. We further thank our 3D object labeling
www.cvlibs.net
4. BDD100K
다양한 주행 환경(Edge Case) 테스트에 특화되어 있습니다.
- 특징: 10만 개의 주행 영상으로 구성되어 있으며, 눈, 비, 야간 등 다양한 날씨와 시간대 데이터가 골고루 섞여 있습니다.
- 추천 이유: 이전 답변에서 말씀드린 '엣지 케이스에서의 인지 성능 저하 및 센서 퓨전의 필요성'을 검증하는 실험을 기획한다면 이 데이터셋이 필수적입니다.
- 접근: bdd-data.berkeley.edu
🔎 https://bdd-data.berkeley.edu/: Google 검색
www.google.com
파이제로 데이터셋을 알아보다가 LeRobot 프레임워크에서 L2D 데이터셋을 찾았다.
https://huggingface.co/datasets/yaak-ai/L2D
yaak-ai/L2D · Datasets at Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
huggingface.co
이녀석을 사용해서 오픈파이(https://github.com/Physical-Intelligence/openpi)에서 제공하는 모델로 파인튜닝을 한 뒤 추론하는거로 방향을 잡았다.(시간 넉넉하겟지?)
애초에 궁극적으로 모듈형 e2e 자율주행 S/W를 찍먹이라도 해보는게 올해의 목표이고, 이왕 할 거 VLA 모델을 사용해보고 싶은 마음이 커서 파이제로를 사용해보기로 결정했다.
추론 시연 구성은 나중에 생각하는거로 하고, 먼저 모델을 학습시키자..
데이터셋을 보면
4.76 tb인데, 처음에 streaming loading 방식도 생각했다가 2주라는 타이트한 시간안에 해결하려면 불가능할거같아... 그냥 50gb 정도 로컬 ssd에 다운받아 진행하기로 했다!
새롭게 안 사실 -- rust 기반으로 만든 uv를 주로 쓰는데 python 패키지 설치 및 관리, 빌드, 배포까지 가능하며
pip 대비 10~100배 빠르고, 아나콘다나 도커 없이 가상화 환경까지 잡고 스크립트를 실행해주어 매우 편리하기까지 하다고 한다!
uv.tool 이라는 오픈소스 파일 속에 파이토치나 르로봇 등 패키지가 다 들어가있다. 너무 편한데??
파이제로는 이미지와 텍스트 지시어를 보고 행동을 출력하는 모델이다.
Vision, Language가 입력되면 Actioin이 출력된다.
'''
Vision (입력 1: 시각 정보)
- 데이터셋 어딘가에 전방 카메라 영상이나 이미지 프레임이 들어있는 컬럼이 있을 겁니다. (보통 observation.images.camera_front 같은 이름)
- 이 이미지가 파이제로의 시각적 판단 기준이 됩니다.
🗣️ Language (입력 2: 텍스트 지시어)
- observation.state.lighting (Day), observation.state.max_speed (80.0), observation.state.conditions 등의 상태 데이터는 모델에게 상황을 알려주는 프롬프트(문장)로 변환해서 입력합니다.
- 예시: "Day"와 "80.0"을 그냥 숫자로 넣는 게 아니라, 파이썬 코드에서 다음과 같이 텍스트로 합성합니다.
"Drive safely. The lighting condition is Day and the max speed is 80.0 km/h." - 이 텍스트가 파이제로의 언어 모델 부분을 자극하여 상황에 맞는 주행을 하도록 돕습니다.
🕹️ Action (출력: 모델이 예측해야 할 정답)
- action.continuous (사용 O): 모델이 최종적으로 뱉어내야 하는 정답(Target)입니다. 스티어링 각도, 가속 페달 등 소수점으로 이루어진 연속적인 값이며, 모델의 Regression Loss를 계산하는 데 쓰입니다.
- action.discrete (사용 X, 버림): 앞서 말씀드린 대로, 기어 변속(P/R/N/D)이나 깜빡이 같은 범주형 데이터입니다. 2주 안에 구조를 복잡하게 만들지 않기 위해 과감히 학습 대상에서 제외하는 것이 좋습니다.'''
위와 같다고 한다. (Gemini 참조)
살릴 대상 -
Vision: observation.images.front_left ( 메인 전방 카메라 1대 ) left가 들어가있는데 확인해보면 그냥 전방주시카메라다.. 이유는 모름
(입력 이미지),
Language: task.instructions (주행 지시어)
(입력 텍스트), 그리고
Action: observation.state.waypoints (타겟 라벨)
이렇게만 가지고 훈련시킬 계획. waypoint를 출력으로 받을 예정
로컬로 50GB 정도 파일을 다운받아 학습시킬 계획이다. 아래는 허깅페이스용 자동화 스크립트
##
스크립트 들어갈 자리
##
부하가 클거로 예상돼서 일단 카메라 한대로 해보고, 여유가 있으면 세대까지 늘릴 예정
(원래 카메라 세 대로 로봇팔을 컨트롤하는 구조다)
minADE 방식으로 오차를 측정해서 볼 것이다.(요즘 자율주행에서 대세인가?)
이제 직접 돌려보고 차차 후기를 작성하겠다.
'개발 일지 > 자율주행 개발일지' 카테고리의 다른 글
| 국민대 자율주행 경진대회 예선(이자 마지막..) (0) | 2026.06.24 |
|---|---|
| 자율주행 개발일지 04 (0) | 2026.05.31 |
| 자율주행 개발일지 03 (0) | 2026.05.27 |
| 자율주행 개발일지 02 (0) | 2026.05.21 |