Racing Deep Learning¶
examples/racing-deeplearning.ipynb는 가장 깊은 예제입니다: 하나의 모델, 두 명의
선생님. 같은 소형 CNN(PhysicarNet)이 두 방식으로 레이싱을 배웁니다 —
지도학습은 시범으로 가르치고(버튼으로 몰면 누를 때마다 라벨된 사진이 쌓임),
강화학습은 시뮬레이터 안에서 보상이 시행착오로 가르칩니다. 둘 다 같은
체크포인트(models/model.pt + models/model.onnx, 그리고 액션 테이블·카메라 설정을
담은 models/model.json 메타 — 채팅의 레이싱 도구 같은 외부 실행기가 노트북 없이
주행하는 데 필요한 전부)에 쓰기 때문에 선생님을 자유롭게
번갈 수 있고 — 마지막에 달리는 드라이버는 그저 마지막에 가르친 선생님입니다.
노트북 구성¶
| 섹션 | 하는 일 |
|---|---|
| 0. Setup | 공유 ACTIONS 테이블과 PhysicarNet; 로봇 헬퍼; 실시간 대시보드 페이지; model.json 메타 내보내기 |
| 1.1 Label | 화면 버튼으로 주행 — 누를 때마다 주행하면서 동시에 그 순간의 사진을 해당 액션 폴더에 저장 |
| 1.2 Train (SL) | 행동 복제: 밝기·대비 증강과 함께 20 에포크 학습; model.pt + model.onnx 저장 |
| 1.3 Drive | 초당 약 15회 ONNX 추론 — argmax로 액션 선택 |
| 2.1 Environment (RL) | sim API 위의 Gymnasium 환경 — 보상은 센터라인 근접도; 에피소드는 트랙 이탈 또는 충돌로 종료 |
| 2.2 Train (RL) | 같은 네트워크를 감싼 PPO(Stable-Baselines3), MYAPP의 실시간 차트·/sim 오버레이·셀 출력의 에피소드별 진행 표시 |
| 2.3 Drive | 1.3과 같은 추론 셀 — 마지막에 가르친 선생님이 운전 |
실행¶
examples/racing-deeplearning.ipynb를 열고 Python 3 (PhysiCar AI) 커널을 선택하세요. 0번 섹션을 먼저 실행하면, 두 선생님은 서로 독립적입니다.- 지도학습: 1.1을 실행하고
app.physicar→ MYAPP 탭을 열어 버튼 세 개로 주행하세요 — 액션당 수백 장이면 좋은 출발입니다. 그다음 1.2로 학습, 1.3으로 주행. - 강화학습: 2.1, 이어서 2.2를 실행하고 — 맡겨 두세요. 30,000 스텝을 모으는 데만
시뮬레이터 시간으로 30분이 넘습니다. MYAPP의 보상 곡선과
/sim오버레이의 에피소드 표시를 지켜보세요. - 주행 셀은 ⏹ (인터럽트) 를 누를 때까지 돌고, 종료 시 차를 멈춥니다. 학습을 중단해도 체크포인트는 저장됩니다.
이 예제를 지탱하는 아이디어¶
ACTIONS테이블 하나가 라벨링 버튼이자 분류기의 클래스이자 RL의 액션 공간입니다 — 기본 3개: 좌 / 직진 / 우, 0.5 m/s, ±20°.- 카메라 시점은 고정(팬 0°, 틸트 −15°)입니다 — 수집·학습·주행 모두. 모델은 배운 시점에서만 작동합니다.
RESUME/WARM_START가 공유 체크포인트를 불러오므로, RL이 배운 것을 SL이 다듬고 그 반대도 됩니다.- 보상 함수가 과제입니다.
reward()는 차가 트랙 센터라인에 얼마나 가까운지를 돌려줍니다 — 중앙에서 1.0, 경계에서 0.0. 원하는 모든 행동은 이 함수 안에 삽니다. - 에피소드는 매번 트랙을 조금씩 더 돌아간 지점에서 시작하고, 트랙을 벗어나거나 충돌하면(움직일 수 있는 물체가 밀리면 충돌로 판정) 끝나며, 150 스텝에서 잘립니다.
고쳐보기¶
ACTIONS— 속도·각도를 추가하세요; 두 선생님 모두 새 액션 세트로 다시 학습합니다.reward()— 속도 보너스를 주거나, 지그재그를 벌하거나, 부드러움을 보상해 보세요. 다시 학습하고 비교하세요.TOTAL(30,000 스텝) — 스텝이 많을수록 드라이버는 좋아지고 시뮬레이터 시간도 늘어납니다.
주의
- 지도학습은 시뮬레이터와 실물 키트 모두에서 돌지만, 강화학습은 시뮬레이터 전용입니다 — 차를 쉬지 않고 텔레포트시킵니다.
- 수집·학습·주행을 같은 카메라 시점으로 하세요 — 노트북이 맞춰 주니, 도중에 카메라를 돌리지 마세요.
- RL 학습은 시뮬레이터를 한 시간 이상 점유합니다 — 그 시간은 여느 시뮬레이터 사용처럼 크레딧으로 과금됩니다.
- 라벨 사진이 너무 적으면 SL 드라이버는 일반화 대신 암기합니다 — 액션당 수백 장, 다양한 위치에서 모으세요.
🛠 미션: SL로 한 바퀴를 깔끔하게 돌 때까지 가르친 뒤, 같은 체크포인트를
RL(WARM_START)에 넘겨 보상이 주행 라인을 더 좋게 만드는지 확인해 보세요.
더 알아보기
보상 기반 학습의 원리 → 강화학습. 이 예제가 쓰는 sim API → PhysiCar SIM.