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

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

sPacmanNoFrameskip-v4環境 は、あの有名なパックマンです。

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

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

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

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

[コマンド]

1
python3.7 -m utils.record_video --algo dqn --env sPacmanNoFrameskip-v4 -n 1000

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


実行結果


下手な人がパックマンをやっているような感じがします。

強化学習を通してパックマンがさくさくクリアするくらいになるとかなり嬉しいというか実用的なのですが、私の知識ではまだまだそこまでいきません。m(_ _ )m

Stable Baselines - TensorBoardによる学習状況の監視

TensorBoardTensorFlow のデータを可視化するツールです。

これを使うことにより、学習状況をより詳細に確認することができます。

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

TensofBoardのログを出力する

TensorBoard 用のログを出力するためには、モデルを作成する際の引数 tensorboard_log に出力先ディレクトリを指定します(15行目)。

[ソース]

tensorboard_watch.py
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
28
29
30
31
32
33
import gym
import os
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import PPO2

# ログ出力先のディレクトリを作成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)

# 環境を作成
env = gym.make('CartPole-v1')
env = DummyVecEnv([lambda: env])

# モデルを作成
model = PPO2('MlpPolicy', env, verbose=1, tensorboard_log=log_dir)

# モデルの学習
model.learn(total_timesteps=100000)

# モデルのテスト
state = env.reset()
for i in range(200):
# 環境の描画
env.render()
# モデルの推論
action, _ = model.predict(state)
# 1ステップ実行
state, rewards, done, info = env.step(action)
# エピソード完了
if done:
break
# 環境のクローズ
env.close()

上記コードを実行します。

[コマンド]

1
python3.7 tensorboard_watch.py

TensofBoardの実行

先ほど実行したログを TensorBoard で表示するために下記のコマンド実行します。

[コマンド]

1
tensorboard --logdir=./logs/.

正常に実行されると、コンソールにURLが表示されるのでそれをブラウザで開きます。

実行結果


学習による平均報酬のグラフやその他いろいろな情報を確認することができます。

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

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

EnduroNoFrameskip-v4環境 は、相手の車を抜いていく単純なカーレースゲームです。

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

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

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

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

[コマンド]

1
python3.7 -m utils.record_video --algo dqn --env EnduroNoFrameskip-v4 -n 1000

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


実行結果


相手の車を抜かすどころか抜かれまくってます。。。

後ろからくる車にぶつからないようにするゲームだと勘違いしてるんですかね。。。(;^_^A)

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

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

QbertNoFrameskip-v4環境 は、主人公の「Qバート」を操作し、敵を避けてブロックの山をジャンプして色を付けていき、全てのブロックに色をつければステージクリアとなる環境です。

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

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

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

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

[コマンド]

1
python3.7 -m utils.record_video --algo dqn --env QbertNoFrameskip-v4 -n 1000

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


実行結果


紫色の敵(?)でしょうか。この敵をうまくよけることができずクリアするところは一回も確認できませんでした・・・。

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

Stable Baselines Zoo の動画ファイル出力機能を使って BipedalWalker-v3環境 を実行する様子を動画ファイルにしてみます。

BipedalWalker-v3環境 は、2足歩行の物体をうまく前に進むようにする環境です。

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

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

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

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

[コマンド]

1
python3.7 -m utils.record_video --algo dqn --env BipedalWalker-v3 -n 1000

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


実行結果


人が走るような感じではないですが、前足と後ろ足を役割分担してつまずくことなく前に進む様子を確認できます。

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

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

MinitaurBulletEnv-v0環境 は、三角形の車輪を持つ車のような物体をうまく前に進めるようにする環境です。

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

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

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

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

[コマンド]

1
python3.7 -m utils.record_video --algo dqn --env MinitaurBulletEnv-v0 -n 1000

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


実行結果


三角形の車輪は回るわけではなく、突っついたり引っ張ったりして虫のような雰囲気(?)をかもし出しつつ前に進んでる様子を確認することができます。

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

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

BeamRiderNoFrameskip-v4環境 は、簡単なシューティングゲームです。

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

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

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

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

[コマンド]

1
python3.7 -m utils.record_video --algo dqn --env BeamRiderNoFrameskip-v4 -n 1000

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


実行結果


完全ではありませんが、それなりに敵からの攻撃をよけつつ敵を撃破できているようです。

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

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


実行結果


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