如何在谷歌Colab中渲染OpenAI健身房?

时间:2018-04-30 20:10:39

标签: google-colaboratory openai-gym

我试图在google colab中使用OpenAI健身房。由于笔记本电脑在远程服务器上运行,我无法渲染健身房的环境。

我找到了Jupyter笔记本的一些解决方案,但是,这些解决方案不适用于colab,因为我无法访问远程服务器。

我想知道是否有人知道可以使用google Colab的解决方法?

4 个答案:

答案 0 :(得分:4)

Korakot的答案不正确。

您确实可以使用matplotlib轻松地以协作的方式渲染OpenAi Gym。

在这里:

安装 xvfb 和其他依赖项

!apt-get install -y xvfb python-opengl > /dev/null 2>&1

并安装虚拟显示器

!pip install gym pyvirtualdisplay > /dev/null 2>&1

然后导入所有库,包括 matplotlib ipythondisplay

import gym
import numpy as np
import matplotlib.pyplot as plt
from IPython import display as ipythondisplay

然后您要从虚拟屏幕中导入显示并初始化屏幕尺寸,在此示例中为400x300 ...:

from pyvirtualdisplay import Display
display = Display(visible=0, size=(400, 300))
display.start()

最后但并非最不重要的一点,是使用Gym的“ rgb_array”渲染,渲染为“ Screen”变量,然后使用Matplotlib绘制屏幕变量! (使用Ipython显示间接渲染)

env = gym.make("CartPole-v0")
env.reset()
prev_screen = env.render(mode='rgb_array')
plt.imshow(prev_screen)

for i in range(50):
  action = env.action_space.sample()
  obs, reward, done, info = env.step(action)
  screen = env.render(mode='rgb_array')

  plt.imshow(screen)
  ipythondisplay.clear_output(wait=True)
  ipythondisplay.display(plt.gcf())

  if done:
    break

ipythondisplay.clear_output(wait=True)
env.close()

链接到我正在工作的协作笔记本演示小插曲:

https://colab.research.google.com/drive/16gZuQlwxmxR5ZWYLZvBeq3bTdFfb1r_6

注意:并非所有的Gym Environments都支持“ rgb_array”渲染模式,但是大多数基本环境都支持。

答案 1 :(得分:0)

尝试一下:-

!apt-get install python-opengl -y

!apt install xvfb -y

!pip install pyvirtualdisplay

!pip install piglet


from pyvirtualdisplay import Display
Display().start()

import gym
from IPython import display
import matplotlib.pyplot as plt
%matplotlib inline

env = gym.make('CartPole-v0')
env.reset()
img = plt.imshow(env.render('rgb_array')) # only call this once
for _ in range(40):
    img.set_data(env.render('rgb_array')) # just update the data
    display.display(plt.gcf())
    display.clear_output(wait=True)
    action = env.action_space.sample()
    env.step(action)

这对我有用,所以我想它也应该对您有用。

答案 2 :(得分:0)

到目前为止,我在这个问题上花费了无数小时后发现的最佳解决方案是录制和播放视频。在UX方面,它非常接近真实的渲染功能。

这是一个可录制和呈现视频的Google colab笔记本。 https://colab.research.google.com/drive/12osEZByXOlGy8J-MSpkl3faObhzPGIrB

享受:)

答案 3 :(得分:0)

我最近不得不解决相同的问题,并用自己的解决方案写了blog post。为了便于参考,我重新发布了TLDR;版本在这里。

将此代码粘贴到Colab中的单元格中,然后运行它以安装所有依赖项。

%%bash

# install required system dependencies
apt-get install -y xvfb x11-utils

# install required python dependencies (might need to install additional gym extras depending)
pip install gym[box2d]==0.17.* pyvirtualdisplay==0.2.* PyOpenGL==3.1.* PyOpenGL-accelerate==3.1.*

然后在后台启动虚拟显示。

import pyvirtualdisplay


_display = pyvirtualdisplay.Display(visible=False,  # use False with Xvfb
                                    size=(1400, 900))
_ = _display.start()

blog post中,我还提供了一个示例仿真演示,演示了以上内容的实际作用。