본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 20. 16:27

Luca96/carla-driving-rl-agent

요약

CARLA 시뮬레이터를 활용하여 심층 강화학습(PPO) 기반의 자율 주행 에이전트를 훈련하는 연구 프로젝트입니다. 커리큘럼 학습 방식을 도입하여 단계별로 난이도를 높이며 학습하며, 관련 연구는 ICIP 2021 컨퍼런스에 채택되었습니다.

핵심 포인트

  • PPO(Proximal Policy Optimization) 알고리즘을 사용한 자율 주행 에이전트 훈련
  • 커리큘럼 학습(Curriculum Learning)을 통한 단계적 난이도 구성
  • CARLA 0.9.9 시뮬레이터 환경 기반의 연구 및 구현
  • ICIP 2021 컨퍼런스 채택 및 오픈 액세스 저널 논문 공개

**자율 주행 에이전트 (autonomous driving agent)**를 훈련하기 위해 **심층 강화학습 (deep reinforcement learning)**을 활용한 저의 석사 학위 논문 프로젝트의 후속 연구입니다. 특히, 주행 에이전트는 CARLA 시뮬레이터 (논문)에서 제공하는 시뮬레이션 주행 환경 내에서 근사 정책 최적화 (Proximal Policy Optimization, PPO) 알고리즘을 사용하여 훈련됩니다. 강화학습 단계는 커리큘럼 학습 (Curriculum Learning) 아이디어를 따라 점진적으로 어려워지는 *단계 (stages)*로 구성됩니다.

이 연구는 국제 이미지 처리 컨퍼런스 (International Conference on Image Processing, ICIP 2021)에 채택되었습니다. 컨퍼런스 논문은 여기에서 확인할 수 있습니다. 또한 오픈 액세스 저널 버전의 논문도 공개하였습니다: 여기에서 찾을 수 있습니다.

요구 사항, 설치 지침 및 결과는 아래에 나열되어 있습니다.

소프트웨어:

  • Python 3.7
  • CARLA 0.9.9
  • 라이브러리: requirements.txt에서 설치

하드웨어 (최소):

  • CPU: 최소 쿼드 코어 또는 옥타 코어.
  • GPU: 전용 GPU, 메모리가 많을수록 좋음.
  • RAM: 최소 16 또는 32 Gb.

이 저장소의 코드를 실행하기 전에 반드시 다음을 수행해야 합니다:

  • 이 저장소 복제 (Clone this repo): git clone https://github.com/Luca96/carla-driving-rl-agent.git

  • CARLA 0.9.9 다운로드: 바로 사용할 수 있는 사전 컴파일된 바이너리를 찾을 수 있는 해당 GitHub 저장소에서 다운로드하십시오. 자세한 내용은 carla-quickstart를 참조하십시오.

  • CARLA Python 바인딩 (Python bindings) 설치: Python 코드에서 CARLA를 관리할 수 있도록 설치합니다. 터미널을 열고 다음을 입력하십시오:
    Windows: cd your-path-to-carla/CARLA_0.9.9.4/WindowsNoEditor/PythonAPI/carla/dist/

Linux: cd your-path-to-carla/CARLA_0.9.9.4/PythonAPI/carla/dist/

  • carla-0.9.9-py3.7-XXX-amd64.egg 파일을 추출하십시오. 여기서 XXX는 운영 체제에 따라 다릅니다 (예: Windows의 경우 win).

  • 추출된 폴더 내에 setup.py 파일을 생성하고 다음과 같이 작성하십시오:

from distutils.core import setup
setup(name='carla', version='0.9.9', py_modules=['carla'])
  • pip를 통해 설치: pip install -e ~/CARLA_0.9.9.4/PythonAPI/carla/dist/carla-0.9.9-py3.7-XXX-amd64

저장소의 코드를 실행하기 전에 반드시 CARLA를 먼저 시작해야 합니다:

Windows:your-path-to/CARLA_0.9.9.4/WindowsNoEditor/CarlaUE4.exe

Linux:your-path-to/CARLA_0.9.9.4/./CarlaUE4.sh

  • [선택 사항] 리소스를 적게 사용하려면 이전 명령에 다음 플래그(flags)를 추가하세요:
    -windowed -ResX=32 -ResY=32 --quality-level=Low

. 예시: ./CarlaUE4.sh --quality-level=Low

.

에이전트의 네트워크 아키텍처(network architecture) 확인하기 (CARLA를 실행하지 않고):

from core import CARLAgent, FakeCARLAEnvironment
agent = CARLAgent(FakeCARLAEnvironment(), batch_size=1, log_mode=None)
agent.summary()

CARLA 환경에서 플레이하기 (CARLA 실행 필요):

from core import CARLAEnv
from rl import CARLAPlayWrapper
# 프레임 레이트(framerate)가 매우 낮다면 `debug=False`로 설정하세요.
...

강화학습 (Reinforcement learning) 예시:

from core import learning
learning.stage_s1(episodes=5, timesteps=256, gamma=0.999, lambda_=0.995, save_every='end', stage_name='stage',
seed=42, polyak=0.999, aug_intensity=0.0, repeat_action=1, load_full=False)\
...

전체 학습 절차는 main.py에 나와 있습니다.

각 단계(stage)를 완료하는 데 오랜 시간이 걸릴 수 있으므로, 필요하지 않은 부분은 주석 처리하세요!

참고: 에이전트를 로드할 때, 예를 들어

stage_s1에서

stege_s2

로드하는 경우, 저장된 에이전트의 가중치(weights)를 반드시 "수동으로" 복사하고 이름을 변경해야 합니다. 그렇지 않다면 각 단계에 대해 동일한 stage_name을 사용하세요.

에이전트는 다음과 같은 신경망 아키텍처(neural network architecture)를 활용합니다:

  • 각 타임스텝 (timestep) $t$에서 에이전트는 관측값 (observation) $o_t={ o_t^1, ext{...},o_t^4 }$를 수신하며, 여기서 각 $o_t^i=[ exttt{image}, exttt{road}, exttt{vehicle}, exttt{navigation}]$입니다. - 따라서 $o_t^i$의 각 구성 요소는 각각 ShuffleNet v2와 피드포워드 신경망 (feed-forward neural networks)에 의해 처리됩니다. 레이어(layers)가 복사되지 않으므로, 동일한 레이어가 각 $o_t^i$에 적용되며, 이를 통해 얻은 네 개의 출력은 게이트 순환 유닛 (Gated Recurrent Units, GRUs)에 의해 하나의 출력으로 통합됩니다. - 각 GRU의 출력은 이후 하나의 벡터로 연결 (concatenated)되며, 이는 512개의 유닛으로 선형 결합 (즉, 선형 활성화 함수 (linear activation function))됩니다. - 이러한 연산의 결과값이 가치 (value)정책 (policy) 브랜치 모두의 입력이 됩니다.

더 자세한 내용은 core/networks.py, 특히 dynamics_layers 함수와 CARLANetwork 클래스를 참조하십시오.

모든 실험은 다음과 같은 사양의 머신에서 수행되었습니다:

  • CPU: Intel i9-10980XE 3.00Ghz 18C/36T,
  • RAM: 128Gb RAM,
  • GPU: Nvidia Quadro RTX 6000 24Gb.

모든 에이전트는 여섯 가지 지표 (충돌률 (collision rate), 유사도 (similarity), 속도 (speed), 웨이포인트 거리 (waypoint distance), 총 보상 (total reward), 타임스텝 (timesteps)), 두 개의 분리된 날씨 세트 (훈련 중에는 하나만 사용됨)에 대해, 모든 CARLA 타운 (Town01부터 Town10까지)에서 평가되었으나, 오직 Town03에서만 훈련되었습니다.

Town01, 낮:
Town02, 낮:
Town07, 저녁:
Town07, 밤:

다음 표는 세 가지 에이전트의 성능을 보여줍니다: 커리큘럼 (curriculum) (C), 표준 (standard) (S), 그리고 미훈련 (untrained) (U). 커리큘럼 에이전트 (C)는 PPO를 커리큘럼 학습 (curriculum learning)과 결합한 반면, 표준 에이전트 (S)는 어떠한 커리큘럼도 사용하지 않습니다. 마지막으로, 미훈련 에이전트 (U)는 다른 두 에이전트와 동일한 아키텍처를 갖지만 가중치 (weights)가 무작위이며, 따라서 비교 목적으로 (사소하지 않은) 베이스라인 성능만을 제공합니다.

각 평가 시나리오에 대한 상세한 결과는 광범위한 평가 표인 src\extensive_evaluation_table을 참조하십시오.

이 작업이 귀하의 연구에 유용하다면, 논문을 인용하거나 이 저장소 (repository)를 언급해 주시기 바랍니다:

이 작업에 대한 인용(Citation) 정보는 다음과 같습니다.

학회 논문 버전 (Conference Proceedings):

@inproceedings{anzalone2021reinforced,
title={Reinforced Curriculum Learning For Autonomous Driving In Carla},
author={Anzalone, Luca and Barra, Silvio and Nappi, Michele},
...}

저널 버전 (Journal):

@article{anzalone2022end,
title={An End-to-End Curriculum Learning Approach for Autonomous Driving Scenarios},
author={Anzalone, Luca and Barra, Paola and Barra, Silvio and Castiglione, Aniello and Nappi, Michele},
...}

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0