LoginSignup
0
0

gymnasiumでの動画ファイル出力(google colab)

Last updated at Posted at 2024-01-17

概要

警告
初めての投稿なので読みにくい記事かもしれませんがご容赦ください。

本記事ではcolab上でgymnasiumを使って動画ファイルを出力する方法を簡単にまとめています。正直gymnasiumの公式ドキュメントを探せば見つかるのですが、不備もあったりするので、一応差別化は出来ているかなと思います。
英文読みたくない人もいるだろうし...
ある程度勉強している人を読者の対象として考えているので、基本的なことの解説は省略したいと思います(gymとは何かみたいな)。

環境

・google colab
・Python 3.10.12

本題

早速コードを見ていきましょう。まずはgymnasiumのインストール

!pip install gymnasium

次に今回LunarLander-v2を環境として使うためgymnasium[box2d]をインストールするのですが、それだけではエラーが出るので下記のサイトを参考にswigを追加

!pip install -q swig
!pip install -q gymnasium[box2d]

本体

以下のサイトにあるものを少し変えたものです。

from gymnasium.wrappers import RecordVideoは公式のドキュメントにはなかったのですが、必須です。
video_folder="./"も公式のものとは少し変えています。どっちでもいいと思います。

import os
import gymnasium as gym
from gymnasium.wrappers import RecordVideo 
env = gym.make("LunarLander-v2", render_mode="rgb_array")
trigger = lambda t: t % 10 == 0 #動画を保存をするエピソードの指定
env = gym.wrappers.RecordVideo(env, video_folder="./", episode_trigger=trigger, disable_logger=True)
for i in range(50):
  termination, truncation = False, False
  _ = env.reset(seed=123)
  while not (termination or truncation):
    obs, rew, termination, truncation, info = env.step(env.action_space.sample()) #policyはランダム

env.close()

こうすることで以下のように出力を得ます。本当はダウンロードせずに動画を見たかったのですが、関数が分かりませんでした。(追記(1/18):以下のgithubにディスプレイで表示させる方法が載ってました。今後また更新します)

スクリーンショット 2024-01-17 12.32.31.png
ゲーム画面はこんな感じです
スクリーンショット 2024-01-17 12.32.00.png

gymとの変更点

いくつかあると思いますが、記事下部の参考文献のコードと、今回載せているコードを比較した上での変更点を一部紹介していきます。

  • close()の必要化
    公式のサンプルコードを見ているとenv.close()が必ず入っています。
    colab上で試したところ、なくても動きますが、たった1行ですし、入れるにこしたことはない気がします。
    公式のドキュメントでは以下のように述べられています。

Closes the environment, important when external software is used, i.e. pygame for rendering, databases

  • stepの返り値の数が増加
    以前はobservation, reward, done, infoと4つでしたが、donetermination, truncationに分けられています。今まではとりあえず終わったらdoneに返り値を渡していたが、終わり方によって返り値を渡すものを変えようといった取り組みでしょうか。
    僕の解釈違いの可能性もあるので詳しくは公式を見てもらうのがいいと思います。

終わりに

私自身まだまだ公式のドキュメントの読み込みが足りないので、とても簡単な解説の記事になってしまいましたが、いかがだったでしょうか?今後も学習し、適宜改善しようとは思っていますが、記事の不備、補足、書き方の改善点など意見、アドバイスがあればコメントで教えていただけると幸いです。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0