티스토리 뷰

작성자 : 한양대학원 융합로봇시스템학과 유승환 석사과정 (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

 

Gym: A toolkit for developing and comparing reinforcement learning algorithms

Open source interface to reinforcement learning tasks. The gym library provides an easy-to-use suite of reinforcement learning tasks. import gym env = gym.make("CartPole-v1") observation = env.reset() for _ in range(1000): env.render() action = env.action_

gym.openai.com

 

참고 링크 2 (OpenAI Baseline3 - Pytorch) : https://github.com/DLR-RM/stable-baselines3

 

GitHub - DLR-RM/stable-baselines3: PyTorch version of Stable Baselines, reliable implementations of reinforcement learning algor

PyTorch version of Stable Baselines, reliable implementations of reinforcement learning algorithms. - GitHub - DLR-RM/stable-baselines3: PyTorch version of Stable Baselines, reliable implementatio...

github.com

참고 링크 3 (atari-py) : https://github.com/openai/atari-py

 

GitHub - openai/atari-py: A packaged and slightly-modified version of https://github.com/bbitmaster/ale_python_interface

A packaged and slightly-modified version of https://github.com/bbitmaster/ale_python_interface - GitHub - openai/atari-py: A packaged and slightly-modified version of https://github.com/bbitmaster/...

github.com


1-1. Anaconda3 설치

  • 저는 로컬 환경보다 가상 환경을 선호합니다! 그래서 cmd(명령 프롬포트) 대신 anaconda3 가상 환경에서 작업을 진행할겁니다ㅎㅎ
  • Anaconda3 설치 링크 (Window 10) : https://www.anaconda.com/products/individual
 

Anaconda | Individual Edition

Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com


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 2600 VCS ROM Collection

Dear guest,Having been an avid Atari 2600 game player in the eighties, I was more than happy to discover that the games I used to play as a kid could be re-experienced on my PC by downloading the proper ROMs and playing them on an emulator. For me, it was

www.atarimania.com

위 링크에서 빨간 부분 : Download V16.0을 클릭하여 다운받습니다.

  • 다운로드가 완료되면, 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>

이렇게 알 수 없는 출력값들이 나오면, Roms을 import 하는 데에 성공한 겁니다!ㅎㅎ


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()

학습 중인 모습
학습이 완료되면 BreakOut 게임의 모습이 나옵니다! 4개의 화면이 나오는 이유는 추후 코드 분석을 통해 알아보겠습니다~!

  • 만약에 다른 Atari 게임을 하고 싶으면, env = make_atari_env('Breakout-v0', n_envs=4, seed=0)에서 'Braekout-V0'를 다른 atari 게임 이름을 사용하시면 됩니다!

참고 링크 1에서 openai GYM 환경 목록들을 볼 수 있습니다! 저는 'Assault-v0' 게임을 실행해보겠습니다~
학습된 Assault-v0 환경 모습

  • 다른 게임들도 잘 작동되는 것을 확인할 수 있습니다!!
  • 여기까지 따라오느라 고생하셨습니다 ㅎㅎ 다음 2편에서는 openai GYM 환경에 관한 설명을 하겠습니다! (위 코드의 env, env.step, env.render 함수 등등)

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31