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の詳細は、以下のサイトをご覧ください。
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」、
もう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」を紹介しました。