BLOG
Python

구글 코랩(Colaboratory)에서 OpenAI gym 사용하기, colabgymrender


June 23, 2022, 10:59 p.m.



OpenAI gym에서 환경을 렌더링하려면 화면이 필요합니다. 만약 환경을 출력할 화면이 없다면 어떡할까요? 프롬프트 환경이나 대화형 쉘 같은 경우에 말이죠.

이번 포스트에서는 대표적인 웹 파이썬 에디터인 구글 코랩에서 OpenAI gym의 환경을 렌더링 하는 방법을 알아보도록 하겠습니다.

바로 colabgymrender를 사용하는 것입니다. 코랩을 실행하고 가장 맨 위에 아래의 코드를 입력하고 실행해줍니다.

!apt-get install -y xvfb x11-utils
!pip install PyOpenGL
!pip install PyOpenGL-accelerate
!pip install gym[all]==0.17.*
!apt-get install -y xvfb python-opengl ffmpeg > /dev/null 2>&1
!pip install colabgymrender
!pip install pyvirtualdisplay

gym을 설치하고 렌더링에 필요한 opengl과 colabgymrender, 그리고 pyvirtualdisplay를 설치합니다. 의존성 이슈 때문에 꼭 위의 순서대로 설치하세요.

설치가 완료되었다면 임포트를 진행합니다.

import os
import sys
import gym
import pylab
import pyglet
from colabgymrender.recorder import Recorder
from pyvirtualdisplay import Display

코랩에서 가상 디스플레이를 생성해주고 여기에 화면을 렌더링 한다음 이것을 녹화하는 방식으로 진행됩니다.

아래의 예시 코드를 보겠습니다.

_display = Display(visible=False, size=(1400, 900))
_ = _display.start()
DQN_Agent = Agent(state_size, action_size)
envs = gym.make('Acrobot-v1')
envs = Recorder(envs, './video')
done = False
state = envs.reset()
state = np.reshape(state, [1, state_size])
while not done:
  envs.render()
  action = DQN_Agent.get_action(state)
  next_state, reward, done, info = envs.step(action)
  next_state = np.reshape(next_state, [1, state_size])
  state = next_state

envs.play()
  1. 먼저 가상 디스플레이를 만들어줍니다. 그리고 .start()를 통해 시작해주고요.
  2. 그 다음 에이전트를 생성해주고,
  3. gym.make()를 통해 gym에서 원하는 환경을 가져옵니다.
  4. 이것을 Recorder로 씌웁니다. 이제 gym.render()로 렌더링하면 녹화됩니다.
  5. while문을 돌면서 에피소드가 진행되고 매 타임스텝마다 env.render로 렌더링하며 녹화하고 있습니다.
  6. 에피소드가 종료되면 envs.play()를 통해 녹화된 영상을 볼 수 있습니다.

위와같이 영상이 뜹니다. 영상 우측하단을 눌러 다운로드 할 수도 있답니다.

gym opengl


kmoupress   

TypeError: VideoClip.write_videofile() got an unexpected keyword argument 'progress_bar' 에러때문에 비디오 생성이 불가하네요.

June 7, 2023, 10:27 p.m.



Search