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

airsim-e2e-deep-learning

AirSimは、Microsoftが開発しているドローンと自動車のためのオープンソースシミュレーターです。
この記事では、AirSimを用いた自動運転のチュートリアル「Autonomous Driving using End-to-End Deep Learning: an AirSim tutorial」を紹介します。

チュートリアルは、以下のビデオ(15秒および90秒版)のような自動運転を目指しています。

video (15s ver.)

AirSim

AirSimは、Microsoft AI and Research Groupが開発しているドローンと自動車のためのオープンソースシミュレーターです。
前回の記事のCARLAと同じく、Unreal Engine 4をベースにしています。
AirSimの詳細は、以下のサイトをご覧ください。

https://github.com/Microsoft/AirSim

Windows OS用には、バイナリーも提供されています。
この記事では、GitHubから入手できるバイナリーではなく、The Autonomous Driving Cookbookからリンクされているバイナリーを利用します。

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つが以下の記事で紹介している「Distributed Deep Reinforcement Learning for Autonomous Driving」、

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

もう1つがこの記事で紹介する「Autonomous Driving using End-to-End Deep Learning: an AirSim tutorial」です。

Autonomous Driving using End-to-End Deep Learning

Autonomous Driving using End-to-End Deep Learningは、エンドツーエンドのディープラーニングによって、フロントカメラ画像からステアリング角を推定するチュートリアルです。チュートリアルでは、このタスクを自動運転の”hello world”と呼んでいます。
チュートリアルは、Jupyter Notebook上で、以下の3つのNotebookを実行するスタイルとなっています。

環境セットアップ

詳細は省略しますが、Windows 10のMinicondaを用いてAirSim用にPython 3.6の仮想環境を作成し、condaを用いてtensorflow-gpu(1.8.0)とkeras-gpu(2.1.2)をインストールします。
そして、The Autonomous Driving Cookbook(https://github.com/Microsoft/AutonomousDrivingCookbook/archive/master.zip)をダウンロードし解凍します。
依存パッケージをインストールするために、AutonomousDrivingCookbook-master.zipを解凍したときに作成されるAirSimE2EDeepLearningディレクトリーでInstallPackages.pyを実行します。
さらに、データセット(https://aka.ms/AirSimTutorialDataset、約3GB)をダウンロードし、AirSimE2EDeepLearningディレクトリーに解凍します。
また、AirSimシミュレーター(https://airsimtutorialdataset.blob.core.windows.net/e2edl/AD_Cookbook_AirSim.7z、Windows用バイナリー、約7GB)をダウンロードし解凍します。
なお、AirSimシミュレーターとデータセットは7zフォーマットになっていますので、解凍には7zフォーマットに対応したソフトが必要となります。

DataExplorationAndPreparation

DataExplorationAndPreparationは、data_rawディレクトリーのデータセットを可視化するとともに、data_cookedディレクトリーにh5フォーマットのtrain/eval/testデータセットを生成します。

TrainModel

TrainModelは、data_cookedディレクトリーのtrain/evalデータセットを用いて、フロントカメラ画像からステアリング角を推定するモデルをトレーニング・評価します。
トレーニングのエポック数が500に設定されているため、予想トレーニング時間が10時間位と表示されますが、アーリーストッピングも設定されているため、30-40エポック(45分くらい)でトレーニングが終了します。

TestModel

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

.\AD_Cookbook_Start_AirSim.ps1 landscape

AirSimを指定したウインドウサイズ(たとえば640 x 480)で起動したい場合、以下のコマンドを実行します。

.\Landscape_Neighborhood\JustAssets.exe landscape -windowed -ResX=640 -ResY=480

まとめ

この記事では、AirSimを用いた自動運転のチュートリアル「Autonomous Driving using End-to-End Deep Learning: an AirSim tutorial」を紹介しました。