티스토리 뷰
sinanju06/딥러닝 환경 셋팅 및 코드 분석
강화학습 실습 1편 : OpenAI GYM-Atari 환경 셋팅 (Window 10, anaconda)
hanyangrobot 2021. 9. 29. 16:45작성자 : 한양대학원 융합로봇시스템학과 유승환 석사과정 (CAI LAB)
한양대학교 로봇공학과 홍윤기 학부생 (CAI LAB)
안녕하세요~~ 딥러닝 실습과 관련된 글은 정말 오랜만에 작성을 해보네요 ㅎㅎ 작년의 저는 Computer Vision 분야를 연구했다면, 올해의 저는 Reinforcement Learning 분야를 연구하고 있습니다!! 그래서 앞으로는 RL과 관련된 논문, 실습(github 코드) 게시물을 많이 많이 업로드하겠습니다~!!
강화학습 환경으로 OpenAI-GYM이 엄청 유명한데요, 그 중 Atari 2600 게임을 사용할 수 있는 gym 환경을 생성할 수 있는 환경 셋팅을 진행해보겠습니다! 저희는 Ubnutu보다 Window 환경을 선호해서, Window 10에서 설정하는 방법을 소개해드리겠습니다!! 자 그럼 시작합니다~!
참고 링크 1 (OpenAI GYM의 Atari 환경 목록) : https://gym.openai.com/envs/#atari
참고 링크 2 (OpenAI Baseline3 - Pytorch) : https://github.com/DLR-RM/stable-baselines3
참고 링크 3 (atari-py) : https://github.com/openai/atari-py
1-1. Anaconda3 설치
- 저는 로컬 환경보다 가상 환경을 선호합니다! 그래서 cmd(명령 프롬포트) 대신 anaconda3 가상 환경에서 작업을 진행할겁니다ㅎㅎ
- Anaconda3 설치 링크 (Window 10) : https://www.anaconda.com/products/individual
1-2. Anaconda3 가상환경 설정
- Anaconda 가상 환경을 만들어줄겁니다!
- atrai 셋팅은 python 3.6을 사용하므로, python 3.6 기반 환경을 생성해줄겁니다~
- 아래의 atari_test는 저의 가상환경 이름입니다! 환경 이름은 각자 원하는 이름으로 생성하면 됩니다 ㅎㅎ
# create env conda create -n atari_test python=3.6 # turn on the env conda activate atari_test
2. 필요한 라이브러리 설치
2-1. Conda Lib 설치
- atari에 필요한 라이브러리들을 설치해줄겁니다!
- 1. pytorch : 버전 1.8.1 이상이면 됩니다. cpu와 gpu 버전에 따라 설치 명령어가 다르니, 자신의 환경에 맞게 설치해주세요!.
- 2-1. openAI GYM : openai에서 제공해주는 GYM 라이브러리입니다.
- 2-2. stabale-baseline3 : openai에서 제공해주는 RL 학습 알고리즘들에 대한 코드입니다.
- 2-3. atarip_py : gym에서 atari-py를 사용할 수 있게 도와주는 라이브러리 입니다.
- 2-4. opencv : atari 게임의 이미지로 학습하기 때문에, 영상처리 라이브러리인 opencv를 사용합니다.
# 1-1. pytorch (cpu version)
conda install pytorch torchvision torchaudio cpuonly -c pytorch
# 1-2. pytorch (GPU-Cuda 10.2 versino)
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
# 1-3. pytorch (GPU-Cuda 11.1 version)
conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge
# 2-1. OpenAI-GYM
conda install -c conda-forge gym
# 2-2. OpenAI-Baseline3
conda install -c conda-forge stable-baselines3
# 2-3. atari_py
conda install -c conda-forge atari_py
# 2-4. opencv
conda install -c conda-forge opencv
2-2. Roms 설치 및 실행
- atari_py를 실행하기 위해선 Roms 파일이 필요합니다! 먼저 아래의 링크에 들어가서 Roms을 설치합니다.
- Roms 다운로드 링크 : http://www.atarimania.com/rom_collection_archive_atari_2600_roms.html
- 다운로드가 완료되면, Roms.rar 파일이 생겼을겁니다. 이를 압축해제 합니다. (저는 알집을 사용했습니다!)
- Roms.rar을 압축해제 하면, 'HC Roms'와 'Roms'이라는 2개의 압축 파일이 나올겁니다. 그 중 'Roms'를 한번 더 압축 해제 합니다.
- 거의 다 왔습니다!! 이제 아나콘다 명령프롬포트에서 아래의 명령어를 입력해줍니다.
- <path to folder>는 압축해제된 roms 파일 경로를 입력하면 됩니다.
- ex) C:\Users\my_pc\ROMS
# import atari_py.import_roms
python -m atari_py.import_roms <path to folder>
3. openAI BaseLine을 이용해서 Atari-Game 학습하기
- 이제 거의 다 왔습니다 ㅎㅎ 아래의 코드를 이용해서 Atari 학습을 진행하면 됩니다!!
- * 아래의 코드를 py 형태의 파일로 저장 후, 아나콘다 프롬포트에서 python <저장한 코드 이름>.py를 실행하면 됩니다~!
- 이 코드는 윤기가 작성한 간단한 예제 코드로, Breakout-v0 게임을 A2C 모델로 25,000 step만큼 학습하는 겁니다!
- 25,000 step의 학습이 완료된 후, 학습된 A2C 모델이 Breakout 게임을 진행하는 것을 볼 수 있습니다!!
from stable_baselines3.common.env_util import make_atari_env
from stable_baselines3.common.vec_env import VecFrameStack
from stable_baselines3 import A2C
# There already exists an environment generator
# that will make and wrap atari environments correctly.
# Here we are also multi-worker training (n_envs=4 => 4 environments)
env = make_atari_env('Breakout-v0', n_envs=4, seed=0)
# Frame-stacking with 4 frames
env = VecFrameStack(env, n_stack=4)
model = A2C('CnnPolicy', env, verbose=1)
model.learn(total_timesteps=25000)
obs = env.reset()
while True:
action, _states = model.predict(obs)
obs, rewards, dones, info = env.step(action)
env.render()
- 만약에 다른 Atari 게임을 하고 싶으면, env = make_atari_env('Breakout-v0', n_envs=4, seed=0)에서 'Braekout-V0'를 다른 atari 게임 이름을 사용하시면 됩니다!
- 다른 게임들도 잘 작동되는 것을 확인할 수 있습니다!!
- 여기까지 따라오느라 고생하셨습니다 ㅎㅎ 다음 2편에서는 openai GYM 환경에 관한 설명을 하겠습니다! (위 코드의 env, env.step, env.render 함수 등등)
'sinanju06 > 딥러닝 환경 셋팅 및 코드 분석' 카테고리의 다른 글
강화학습 실습 2편 : OpenAI GYM 기반 환경(env) 코드 분석 (6) | 2021.10.15 |
---|---|
Text To Speech 실습 1편 : Window 10에서 한국어 GLOW-TTS 모델 학습하기 (작성 중) (2) | 2021.10.04 |
OMOROBOT : R1-Mini + ORB SLAM 2로 지도 그려보기 (6) | 2021.04.11 |
NVIDIA Jeston 환경 셋팅 5편 (ORB SLAM 2 설치 및 실행 on Nano) (16) | 2021.02.23 |
NVIDIA Jeston 환경 셋팅 1-2편 (JetPack 설치 On Jeston Nano) (10) | 2021.02.19 |