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

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

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

AirSim

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

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

The Autonomous Driving Cookbook

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


The Autonomous Driving Cookbookには、現在2つのチュートリアルが用意されており、1つが以下の記事で紹介している「Distributed Deep Reinforcement Learning for Autonomous Driving」、

もう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」を紹介しました。