AirSimにおける自動運転のための深層強化学習

airsim-deep-reinforcement-learning

AirSimは、Microsoftが開発しているドローンと自動車のためのオープンソースシミュレーターです。
この記事では、AirSimを用いた自動運転のチュートリアル「Distributed Deep Reinforcement Learning for Autonomous Driving」の中から、分散ではなく1台のWindowsマシンによる深層強化学習を紹介します。

AirSim

AirSimは、Microsoft AI and Research Groupが開発しているドローンと自動車のためのオープンソースシミュレーターです。
AirSimの詳細は、以下のサイトをご覧ください。

https://github.com/Microsoft/AirSim

The Autonomous Driving Cookbook

The Autonomous Driving Cookbookは、MicrosoftがGitHubに公開している自動運転のチュートリアルです。
The Autonomous Driving Cookbookの詳細は、以下のサイトをご覧ください。

https://github.com/Microsoft/AutonomousDrivingCookbook

The Autonomous Driving Cookbookには、現在2つのチュートリアルが用意されており、1つが以下の記事で紹介している「Autonomous Driving using End-to-End Deep Learning: an AirSim tutorial」、

AirSimにおける自動運転のためのエンドツーエンド・ディープラーニング

もう1つがこの記事で紹介する「Distributed Deep Reinforcement Learning for Autonomous Driving」です。

Distributed Deep Reinforcement Learning for Autonomous Driving

Distributed Deep Reinforcement Learning for Autonomous Drivingは、分散深層強化学習によって、フロントカメラ画像からステアリング角を推定するチュートリアルです。
チュートリアルのタイトルは、分散深層強化学習となっていますが、デモの目的で、1台のマシンでトレーニングできるようにもなっています。
この記事では、分散ではなく、1台のWindowsマシンによる深層強化学習について紹介します。

チュートリアルは、Jupyter Notebook上で、以下の3つのNotebookを実行するスタイルとなっています。

環境セットアップ

以下の記事で紹介した環境セットアップをそのまま利用することができます。

AirSimにおける自動運転のためのエンドツーエンド・ディープラーニング

ただし、足りないパッケージがあるので、以下のコマンドでインストールします。

pip install requests==2.18.4

Explore the algorithm

Explore the algorithmでは、報酬関数とネットワークアーキテクチャの説明があります。

Launch the local training job

Launch the local training jobは、トレーニング用バッチファイルtrain.batを作成します。
なお、Notebook内のairsim_path='E:\\AD_Cookbook_AirSim\\'の部分は、自分の環境に合わせて変更する必要があります。
作成されたバッチファイル\path\to\AutonomousDrivingCookbook\DistributedRL\Share\scripts_downpour\app\train.batは、以下のようにパラメータを指定してdistributed_agent.pyを実行することにより、トレーニングを行います。

python distributed_agent.py batch_update_frequency=10 ...

README.mdには、以下のように書かれているので、

For demonstration purposes, the model can also be trained on a single machine (see instructions below). The model can take up to 5 days to train from scratch, but can train in a few hours using transfer learning. To train the model locally, a machine with a GPU is required.

転移学習を用いて3時間トレーニングしてみたのですが、参考として提供されているsample_model.jsonと似たような挙動でした。
転移学習を用いたマルチノードで6時間と書かれているので、10時間以上のトレーニングは、覚悟したほうが良いと思います。

Run the model

Run the modelは、neighborhood環境で起動したAirSimからフロントカメラ画像とステート(速度)を入力し、steeringを含むcar_controlsをAirSimに出力します。
AirSimを起動するためには、AirSimシミュレーターを解凍したディレクトリーで、以下のPowerShellコマンドを実行します。

.\AD_Cookbook_Start_AirSim.ps1 neighborhood

また、Notebook内のMODEL_FILENAME='sample_model.json'の部分は、自分がトレーニングしたモデルに合わせて変更する必要があります。

Summary

この記事では、AirSimを用いた自動運転のチュートリアル「Distributed Deep Reinforcement Learning for Autonomous Driving」の中から、分散ではなく1台のWindowsマシンによる深層強化学習について紹介しました。