在健身房中,我们应该如何实现环境的渲染方法,以使 Monitor 生成的视频不是黑色的?



我们应该如何在健身房中实现环境的render方法,以便Monitor制作的视频不是黑色的(就像我现在看到的那样( 或者,在什么情况下,这些视频会是黑色的

为了提供更多的上下文,我试图使用健身房的包装Monitor。这个包装器(每隔一段时间,确切的频率是多少?(向文件夹中写入一些.json文件和一个.mp4文件,我想这代表了代理所遵循的轨迹(具体是哪个轨迹?TR

(一般来说,我们应该如何实现render,这样我们才能制作出环境的动画?当然,这个问题的答案也取决于环境的类型,但我想提供一些指导(

这可能不是一个详尽的答案,但我是这样做的。

首先,我在类的开头将rgb_array添加到元数据字典中的render.modes列表中。如果你没有这样的东西,添加字典,像这样:

class myEnv(gym.Env):
""" blah blah blah """
metadata = {'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': 2 }
...

当然,你可以更改所需的帧速率,但我不知道每个帧速率是否都能工作。

然后我改变了render的方法。根据输入参数mode,如果是rgb_array,则返回一个三维numpy数组,即只是一个"numpyed"PIL.Image()(np.asarray(im),其中imPIL.Image()(。如果modehuman,只需打印图像或做一些事情,以您喜欢的方式显示您的环境。举个例子,我的代码是

def render(self, mode='human', close=False):
# Render the environment to the screen
im = <obtain image from env>        

if mode == 'human':    
plt.imshow(np.asarray(im))
plt.axis('off')
elif mode == 'rgb_array':
return np.asarray(im)

所以基本上返回一个rgb矩阵。

看看健身房的源代码,似乎还有其他方法可以工作,但我不是视频渲染专家,所以对于其他方法我无能为力。

关于你的问题";视频究竟多久保存一次&";,我可以向你指出这个链接,它帮助了我。

最后一点要注意的是,如果你想像这个家伙一样解决这个问题,用健身房监视器包装器保存视频不会对错误缩进起作用(截至今天30/12/20,健身房版本0.18.0(。

(如果我的英语有时觉得奇怪,我很抱歉,请随意严厉纠正我(

相关内容

最新更新