【问题标题】:How to render OpenAI gym in google Colab? [closed]如何在谷歌 Colab 中渲染 OpenAI 健身房? [关闭]
【发布时间】:2018-10-10 23:06:51
【问题描述】:

我正在尝试在 google colab 中使用 OpenAI gym。由于 Notebook 在远程服务器上运行,我无法渲染健身房的环境。

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

我想知道是否有人知道适用于 google Colab 的解决方法?

【问题讨论】:

  • 我在link 找到了更好的方法。此方法创建视频!

标签: google-colaboratory openai-gym


【解决方案1】:

Korakot 的回答不正确。

您确实可以在协作中渲染 OpenAi Gym,尽管使用 matplotlib 有点慢。

方法如下:

安装 xvfb 和其他依赖项(感谢 Peter 的评论)

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

还有pyvirtual display

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

然后导入所有库,包括 ma​​tplotlibipythondisplay

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

然后您想从 pyvirtual display 导入 Display 并初始化您的屏幕尺寸,在本例中为 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()

链接到我正在使用的 Colaboratory 笔记本演示手推车:

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

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

【讨论】:

  • 您的笔记本电脑似乎不再工作了。为最新的 colab 安装 xvfb 时存在一些冲突。即使使用推荐的apt --fix-broken install,问题也不会得到解决
  • 这是一个解决方案,但却是一个糟糕的解决方案。帧率很烂
  • 它现在坏了要修复它你需要添加:!apt-get install x11-utils > /dev/null 2>&1!pip install pyglet==v1.3.2
  • 这对我有用,2020/07/21
【解决方案2】:

我最近不得不解决同样的问题,并用我的解决方案写了一个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 中,我还提供了一个示例模拟演示,证明上述方法确实有效。

【讨论】:

  • 这对我有用。我访问了博客文章并遵循了代码。
【解决方案3】:

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

这是一个用于记录和渲染视频的 Google colab notebook。 https://colab.research.google.com/drive/12osEZByXOlGy8J-MSpkl3faObhzPGIrB

享受:)

【讨论】:

【解决方案4】:

试试这个:-

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

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

【讨论】:

  • 对我不起作用,出现以下错误“NameError Traceback (最近一次调用最后一次) ... NameError: name 'base' is not defined”
猜你喜欢
  • 1970-01-01
  • 2019-10-16
  • 2022-10-08
  • 2019-02-05
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 2017-12-17
相关资源
最近更新 更多