Stable Baselines Zoo - 学習済みモデルを動画ファイルに出力(AntBulletEnv-v0)

Stable Baselines Zoo には、学習済みモデルを実行している様子を動画ファイルに保存する機能があります。

この機能を使って AntBulletEnv-v0環境 を実行する様子を動画ファイルに出力します。

AntBulletEnv-v0環境 はアリっぽい形をした4本足の模型がうまく歩けるように調整する環境です。

(Ubuntu 19.10で動作確認しています。)

学習済みモデルの動画ファイル出力(AntBulletEnv-v0)

次の条件で、学習済みモデルを実行している様子を動画ファイルに出力します。

  • 環境
    AntBulletEnv-v0
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo ppo2 --env AntBulletEnv-v0 -n 1000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


きちんと(?)虫っぽい動きで歩く様子を確認することができます。

Stable Baselines Zoo - 学習済みモデルを動画ファイルに出力(HumanoidBulletEnv-v0)

Stable Baselines Zoo には、学習済みモデルを実行している様子を動画ファイルに保存する機能があります。

この機能を使って HumanoidBulletEnv-v0環境 を実行する様子を動画ファイルに出力します。

HumanoidBulletEnv-v0環境 は人の形をした模型がうまく歩けるように調整する環境です。

(Ubuntu 19.10で動作確認しています。)

学習済みモデルの動画ファイル出力(HumanoidBulletEnv-v0)

次の条件で、学習済みモデルを実行している様子を動画ファイルに出力します。

  • 環境
    HumanoidBulletEnv-v0
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo ppo2 --env HumanoidBulletEnv-v0 -n 1000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


足を引きずってるような感じはしますが、転ばずにうまく歩けている様子を確認することができます。

Stable Baselines Zoo - 学習済みモデルを動画ファイルに出力(MinitaurBulletDuckEnv-v0)

Stable Baselines Zoo には、学習済みモデルを実行している様子を動画ファイルに保存する機能があります。

この機能を使って MinitaurBulletDuckEnv-v0環境 を実行する様子を動画ファイルに出力します。

MinitaurBulletDuckEnv-v0環境 は車輪が3角形の車の上にアヒルが乗っていて、それを落とさないように進まなければいけないちょっと変わった環境です。

(Ubuntu 19.10で動作確認しています。)

学習済みモデルの動画ファイル出力(MinitaurBulletDuckEnv-v0)

次の条件で、学習済みモデルを実行している様子を動画ファイルに出力します。

  • 環境
    MinitaurBulletDuckEnv-v0
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo ppo2 --env MinitaurBulletDuckEnv-v0 -n 1000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


頑張ってるような気もしますが、アヒルは結構落ちてしまっていてもう少し改善してほしい感じです。

Stable Baselines Zoo - 学習済みモデルを動画ファイルに出力(BreakoutNoFrameskip-v4)

Stable Baselines Zoo には、学習済みモデルを実行している様子を動画ファイルに保存する機能があります。

この機能を使って BreakoutNoFrameskip-v4環境 を実行する様子を動画ファイルに出力します。

BreakoutNoFrameskip-v4環境 は昔懐かしのブロック崩しゲームです。

(Ubuntu 19.10で動作確認しています。)

学習済みモデルの動画ファイル出力(BreakoutNoFrameskip-v4)

次の条件で、学習済みモデルを実行している様子を動画ファイルに出力します。

  • 環境
    BreakoutNoFrameskip-v4
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo ppo2 --env BreakoutNoFrameskip-v4 -n 1000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


なかなか的確にブロックを崩している様子を確認することができます。

Stable Baselines Zoo - 学習済みモデルのビデオ録画(Walker2DBulletEnv-v0)

Stable Baselines Zoo の学習済みモデルを実行した様子を、動画ファイルに保存する機能を使って Walker2DBulletEnv-v0環境 を実行します。

Walker2DBulletEnv-v0環境 は2次元の下半身(Walker2D)がまっすぐ歩く(Bullet)環境です。

(Ubuntu 19.10で動作確認しています。)

学習済みモデルのビデオ録画(Walker2DBulletEnv-v0)

次の条件で学習済みモデルのビデオ録画を実行します。

  • 環境
    Walker2DBulletEnv-v0
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo ppo2 --env Walker2DBulletEnv-v0 -n 1000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


下半身だけの物体がまっすぐ歩いている様子を確認できます。

Stable Baselines Zoo - 学習済みモデルのビデオ録画(HopperBulletEnv-v0)

Stable Baselines Zoo の学習済みモデルを実行した様子を動画ファイルに保存する機能を使って HopperBulletEnv-v0環境 を実行します。

HopperBulletEnv-v0環境 は何かがぴょんぴょん(Hopper)とまっすぐ進む(Bullet)環境です。(?)

(Ubuntu 19.10で動作確認しています。)

学習済みモデルのビデオ録画(HopperBulletEnv-v0)

次の条件で学習済みモデルのビデオ録画を実行します。

  • 環境
    HopperBulletEnv-v0
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo ppo2 --env HopperBulletEnv-v0 -n 1000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


片足の物体がぴょんぴょんとまっすぐ進んでいる様子を確認できます。

Stable Baselines Zoo - 学習済みモデルのビデオ録画(HalfCheetahBulletEnv-v0)

Stable Baselines Zoo の学習済みモデルを実行した様子を動画ファイルに保存する機能を使って HalfCheetahBulletEnv-v0環境 を実行します。

HalfCheetahBulletEnv-v0環境 は半分(Half)のチータ(Cheetah)が弾丸(Bullet)みたいに走る環境です。(!?)

(Ubuntu 19.10で動作確認しています。)

学習済みモデルのビデオ録画(HalfCheetahBulletEnv-v0)

次の条件で学習済みモデルのビデオ録画を実行します。

  • 環境
    HalfCheetahBulletEnv-v0
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo ppo2 --env HalfCheetahBulletEnv-v0 -n 1000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


チータ(!?)に見えなくもない物体が、きちんと弾丸みたい(!?)走っている様子が確認できます。

Stable Baselines Zoo - 学習済みモデルのビデオ録画

Stable Baselines Zoo には、学習済みモデルを実行した様子を動画ファイルに保存する機能があります。

(Ubuntu 19.10で動作確認しています。)

前準備

動画ファイルを保存するために必要な ffmpeg コマンドをインストールしておきます。

1
sudo apt-get install ffmpeg

学習済みモデルのビデオ録画

次の条件で学習済みモデルのビデオ録画を実行します。

  • 環境
    MountainCar-v0
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

1
python -m utils.record_video --algo ppo2 --env MountainCar-v0 -n 1000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果

Stable Baselines Zoo - 学習済みモデルの実行

Stable Baselines Zoo とは、学習済みのモデルを集めたものです。

これを利用することで、学習やパラメータの試行錯誤をすることなく、環境の攻略を試してみることができます。

Stable Baselines Zoo - https://stable-baselines.readthedocs.io/en/master/guide/rl_zoo.html


Stable Baselines Zooのクローン

Stable Baselines Zoo を使うためには、以下のコマンドでリポジトリをクローンします。

1
git clone https://github.com/araffin/rl-baselines-zoo

「rl-baselines-zoo」というフォルダが作成されます。


学習済みモデルによる動作確認

学習済みモデルの動作確認を行うには、「rl-baselines-zoo」フォルダに移動し次のコマンドを実行します。

[コマンド]

1
python enjoy.py --algo ppo2 --env CartPole-v1 --folder trained_agents -n 5000

パラメータの意味は次の通りです。

  • algo
    強化学習アルゴリズム
  • env
    環境ID
  • folder
    ログフォルダ
  • n
    ステップ数

実行すると下記のようなウィンドウが表示され、うまく棒のバランスがとれていることが分かります。

実行結果

OpenAI Gym - 利用できる環境IDの一覧

前回 OpenAI Gym で利用できる環境IDの一覧を表示させてみました。

しかし、いくつか試してみると追加で設定を行わないと利用できない環境があることが分かりました。

そこで今回は、利用可能な環境IDだけを一覧表示してみます。

利用できる環境IDの一覧取得

環境IDの一覧を取得しつつ gym.make関数 で正常に環境を作成できるかどうかをチェックしていきます。

[コード]

1
2
3
4
5
6
7
8
9
from gym import envs
import gym

for spec in envs.registry.all():
try:
env = gym.make(spec.id)
print(spec.id)
except:
pass

上記のコードを実行すると下記のように一覧が表示されます。

[実行結果]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Copy-v0
RepeatCopy-v0
ReversedAddition-v0
ReversedAddition3-v0
DuplicatedInput-v0
Reverse-v0
CartPole-v0
CartPole-v1
MountainCar-v0
MountainCarContinuous-v0
Pendulum-v0
Acrobot-v1
Blackjack-v0
KellyCoinflip-v0
KellyCoinflipGeneralized-v0
FrozenLake-v0
FrozenLake8x8-v0
CliffWalking-v0
NChain-v0
Roulette-v0
Taxi-v3
GuessingGame-v0
HotterColder-v0
CubeCrash-v0
CubeCrashSparse-v0
CubeCrashScreenBecomesBlack-v0
MemorizeDigits-v0

前回の一覧に比べるとだいぶ減りましたが、デフォルトでもこれだけの環境で強化学習の動作確認ができるのは勉強する上で大変助かります。