以下のドキュメントは、 GitHub 上の Learning to Drive Smoothly in Minuts の再現用リポジトリのREADME.md を翻訳したものです。
-----
Donkey Carシミュレータ、強化学習アルゴリズムである Soft Actor-Critic(SAC) と Variational AutoEncoder(VAE) を使用して、数分でスムーズな運転を学習します。
0. シミュレータをここからダウンロード、もしくは ソースからビルド
1. 関連パッケージのインストール (cf requirements.txt)
2. (オプションだが推奨) 事前学習済み VAEのダウンロード:VAEレベル0 / VAEレベル1
3. Soft Actor-Critic (SAC) コントロールポリシを5000ステップトレーニング
4. 2000ステップのトレーニングを受けたエージェントをエンジョイ
別のレベルでトレーニングするには、config.py内のLEVEL=0をLEVEL=1に変更する必要があります。
1. 遠隔操作モードを使って画像を収集
2. VAEをトレーニング
ビデオに表示されている結果を再現するには、 `config.py` でさまざまな値を確認する必要があります。
レベル0
config.py :
通常モード(なめらかな操作)でトレーニング、5~10分かかる
通常モード(非常になめらかな操作、MAX_STEERING_DIFF = 0.1を指定)でトレーニング、~20分かかる
遠隔モード(非常になめらかな操作、MAX_CTE_ERROR = 10.0を指定)でトレーニング、5~10分かかる
レベル1
config.py :
遠隔操作モードでトレーニング、~10分かかる
トレーニングを受けたモデルが必要です。たとえば、最後のトレーニングを受けたSACエージェントで1000ステップを記録する場合は、次のようになります。
このリポジトリを引用するには:
関連論文: Learn to Drive in a Day]() / 日本語訳
-----
最初てっきり Learn to Drive in a Dayの作者のリポジトリだと思っていたのだけど、読んでいるうちに別人と判明した。
こっちは in Minuts になってるのね...
関連論文に紹介されているってことは、あきらかにオマージュということかな..
でも Smoothlyが入ってるところが、お前よりぬるぬる動くし学習も速いぜ、とドヤ顔でいいたいのかもなあ..
-----
Learning to Drive Smoothly in Minuts
Donkey Carシミュレータ、強化学習アルゴリズムである Soft Actor-Critic(SAC) と Variational AutoEncoder(VAE) を使用して、数分でスムーズな運転を学習します。
- 媒体上のブログ記事:リンク
- ビデオ
VAE レベル0 | VAE レベル1 |
---|---|
|
|
VAEをダウンロード | VAEをダウンロード |
事前トレーニング済みエージェントをダウンロード | 事前トレーニング済みエージェントをダウンロード |
注意 : 事前トレーニング済みのエージェントは logs/sac/ フォルダに保存する必要があります(事前トレーニング済みのエージェントを使用するには --exp-id 6 (フォルダのインデックス) を渡す必要があります)。
クイックスタート
0. シミュレータをここからダウンロード、もしくは ソースからビルド
1. 関連パッケージのインストール (cf requirements.txt)
2. (オプションだが推奨) 事前学習済み VAEのダウンロード:VAEレベル0 / VAEレベル1
3. Soft Actor-Critic (SAC) コントロールポリシを5000ステップトレーニング
python train.py --algo sac -vae path-to-vae.pkl -n 5000
4. 2000ステップのトレーニングを受けたエージェントをエンジョイ
python enjoy.py --algo sac -vae path-to-vae.pkl --exp-id 0 -n 2000
別のレベルでトレーニングするには、config.py内のLEVEL=0をLEVEL=1に変更する必要があります。
Variational AutoEncoder(VAE) のトレーニング
1. 遠隔操作モードを使って画像を収集
python -m teleop.teleop_client --record-folder path-to-record/folder/
2. VAEをトレーニング
python -m vae.train --n-epochs 50 --verbose 0 --z-size 64 -f path-to-record/folder/
遠隔操作モードでのトレーニング
python train.py --algo sac -vae logs/vae.pkl -n 5000 --teleop
遠隔操作モードでのテスト
python -m teleop.teleop_client --algo sac -vae logs/vae.pkl --exp-id 0
潜在空間を探索
python -m vae.enjoy_latent -vae logs/level-0/vae-8.pkl
結果の再現
ビデオに表示されている結果を再現するには、 `config.py` でさまざまな値を確認する必要があります。
レベル0
config.py :
MAX_STEERING_DIFF = 0.15 # 非常になめらかな操作の場合は0.1を指定、ただしより多くのステップが必要
MAX_THROTTLE = 0.6 # MAX_THROTTLE = 0.5でもよいが高速走行のために
MAX_CTE_ERROR = 2.0 #通常モードのみで使用される、遠隔操作モード使用時は10.0に設定
LEVEL = 0
通常モード(なめらかな操作)でトレーニング、5~10分かかる
python train.py --algo sac -n 800.,0 -vae logs/vae-level-0-dim-32.pkl
通常モード(非常になめらかな操作、MAX_STEERING_DIFF = 0.1を指定)でトレーニング、~20分かかる
python train.py --algo sac -n 20000 -vae logs/vae-level-0-dim-32.pkl
遠隔モード(非常になめらかな操作、MAX_CTE_ERROR = 10.0を指定)でトレーニング、5~10分かかる
python train.py --algo sac -n 8000 -vae logs/vae-level-0-dim-32.pkl --teleop
レベル1
注意 : レベル1では、遠隔モードのみ有効
config.py :
MAX_STEERING_DIFF = 0.15
MAX_THROTTLE = 0.5 # MAX_THROTTLE = 0.6 でも動作するが最も急なターンであるためトレーニングが難しい
LEVEL = 1
遠隔操作モードでトレーニング、~10分かかる
python train.py --algo sac -n 15000 -vae logs/vae-level-1-dim-64.pkl --teleop
注意 : VAEのサイズはレベル0と1で異なりますが、これは重要な要素ではありません。
オンボードカメラでビデオ録画
トレーニングを受けたモデルが必要です。たとえば、最後のトレーニングを受けたSACエージェントで1000ステップを記録する場合は、次のようになります。
python -m utils.record_video --algo sac --vae-path logs/level-0/vae-32-2.pkl -n 1000
プロジェクトの引用
このリポジトリを引用するには:
@misc{drive-smoothly-in-minutes,
author = {Raffin, Antonin and Sokolkov, Roma},
title = {Learning to Drive Smoothly in Minutes},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/araffin/learning-to-drive-in-5-minutes/}},
}
クレジット
関連論文: Learn to Drive in a Day]() / 日本語訳
- r7vme オリジナル実装の作者
- Wayve.ai よりインスピレーションを受けた
- Tawn Kramer Donkey シミュレータおよびDonkey Gymを提供
- Stable-Baselines DDPG/SAC および PPO 実装を提供
- RL Baselines Zoo トレーニング/エンジョイスクリプトの提供
- S-RL Toolbox データローダの提供
- Racing robot 遠隔操作の提供
- World Models Experiments VAE実装の提供
-----
最初てっきり Learn to Drive in a Dayの作者のリポジトリだと思っていたのだけど、読んでいるうちに別人と判明した。
こっちは in Minuts になってるのね...
関連論文に紹介されているってことは、あきらかにオマージュということかな..
でも Smoothlyが入ってるところが、お前よりぬるぬる動くし学習も速いぜ、とドヤ顔でいいたいのかもなあ..
0 件のコメント:
コメントを投稿