Skip to content

learning-to-drive-in-5-minutes

Repo

https://github.com/araffin/learning-to-drive-in-5-minutes

Git clone

1
git clone https://github.com/araffin/learning-to-drive-in-5-minutes

必要なパッケージ

https://github.com/araffin/learning-to-drive-in-5-minutes/blob/master/requirements.txt

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
PyYAML
mpi4py
numpy
# tensorflow==1.10.1
pillow
gym
stable-baselines>=2.4.0
pytablewriter
# -e git+git@github.com:tawnkramer/donkey.git@faa4a32b2aff452c6b46474029ea9e4b3168843d#egg=donkeycar
opencv-python
cloudpickle
pygame
joblib
tqdm

環境構築

mac.ymlを新規で作成する

mac.ymlを新規作成

 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
34
35
36
37
38
39
40
41
42
name: donkey-rl
channels:
- conda-forge
- defaults
dependencies:
- mkl=2017.0.3=0
- numpy=1.13.1=py36_0
- openssl=1.0.2l=0
- python=3.6.2=0
- readline=6.2=2
- setuptools=27.2.0=py36_0
- sqlite=3.13.0=0
- tk=8.5.18=0
- wheel=0.29.0=py36_0
- xz=5.2.3=0
- zlib=1.2.11=0
- pip:
  - bleach==1.5.0
  - certifi==2017.7.27.1
  - chardet==3.0.4
  - docopt==0.6.2
  - h5py==2.7.1
  - html5lib==0.9999999
  - idna==2.6
  - markdown==2.6.9
  - olefile==0.44
  - pillow==4.2.1
  - pyyaml==3.12
  - requests==2.18.4
  - scipy==0.19.1
  - six==1.10.0
  - tornado==4.5.1
  - urllib3==1.22
  - werkzeug==0.12.2
  - tensorflow==1.12.0
  - numpy==1.15.4
  - protobuf==3.6.1
  - keras==2.2.4
  - stable-baselines==2.4.0
  - pygame==1.9.4
  - cloudpickle==0.7.0
  - joblib==0.13.1 

Condaの環境構築

1
2
conda env create --file mac.yml
source activate donkey-rl

OpenCVは手動でインストール

1
conda install opencv

VAE用データの作成

エミュレータを起動して10K枚の画像を作成。

学習はColabで実施。 https://colab.research.google.com/drive/1mF2abRb_yi4UNqYXVBF-t4FuCy6fl1c1#scrollTo=9bIR_N7R11XI

VAEデータの確認

Colabで作成したvae64.pklをSliderで表示。

1
python -m vae.enjoy_latent -vae vae64.pkl

Warning

python-opencvがあるとうまく起動しない

misc_util.py を修正

viで開く

1
vi /Users/akira/miniconda3/envs/donkey-rl/lib/python3.6/site-packages/stable_baselines/common/misc_util.py

gym.spaces.prng.seedが存在しないので、一時的にコメントアウト

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def set_global_seeds(seed):
    """
    set the seed for python random, tensorflow, numpy and gym spaces

    :param seed: (int) the seed
    """
    tf.set_random_seed(seed)
    np.random.seed(seed)
    random.seed(seed)
    #gym.spaces.prng.seed(seed)

Soft Actor-Critic(SAC)

SACを使用して8000ステップで強化学習

1
python train.py --algo sac -n 8000 -vae vae64.pkl

エージェントによる自動走行

--exp-idは、 logs/sac/DonkeyVae-v0-level-0_* の最後の数値を指定。

1
python enjoy.py --algo sac -vae vae64.pkl --exp-id 0 -n 2000

車から見えている画像を動画にする

1
python -m utils.record_video --algo sac --vae-path vae64.pkl -n 1000 --exp-id 7