【参加レポート】DeepRacer League参加で感じた「実機用」モデルの鍛え方 #AWSSummit #AWSDeepRacer #AWSDeepRacerJP

せーのでございます。 只今私は千葉県は幕張に来ております。ここでは、2019年 6月 12日(水) 〜 14日(金) 幕張メッセにてAWSに関する情報交換やコラボレーション、学習を行うことができる日本最大級のカンファレンス AWS Summit Tokyo 2019が開催されています。

さて、今回のこのカンファレンスでは、ものすごい数のセッションが行われています。

これで一日分です。これが3日あるのです。
私もクラメソの一員としてこの膨大なセッションの中から行けるだけを予約し、ブログを書きまくろう、と計画しておりました。

そんな私の計画を全て吹っ飛ばすものが、そう、この「DeepRacer League」です。

基本的な情報はTTの書いたこちらの記事を見てもらうとして

【参加レポート】AWS DeepRacer リーグに参加してきました #AWSSummit

私も2日目にして、実際に体験してきました!結果は、、、、12秒19!

が、このDeepRacer League Japan, 稀に見る激戦の様相を呈しておりまして、現在TOP10はほぼ全て8秒台、中でもTop3が7秒台を叩き出している、という状況で、このくらいではランク圏内には入れるものの、まだまだ上位は遠いわけです(入った時点で29位でした。多分最終成績はもっと落ちます)。

(記事を書いてる間に順位が落ちてました)

とはいえ、完走するのも一苦労、という方も多い茨の道であるDeepRacer League、私レベルでも誰かの役に立てれば、と、現地で体験したTipsを書いていきたいと思います。

バーチャルレースとサーキットレースは違う競技と思ってもいい

さて、このDeepRacer League、実機の販売がされていない日本ではみなさん、育てたモデルをシミュレーターで試し、バーチャルリーグへサブミットさせているかと思います。

が、この実機でのレース(サーキットレースといいます)でよく聞かれるのが「シミュレーションと全く動きが違う」という声です。
シミュレーションで普通に動いていたモデルが、サーキットレースでは軒並みコースアウトしてしまう。それには色々原因が推測されます。

ノイズ

一番の原因はこれだと思います。当たり前ですがバーチャル空間は、チリ一つなく整備されています。が、実際のレース場では照明があたり、参加者やスタッフの影も入ります。レースが進めばコース上の到るところにスリップ痕も見受けられます。DeepRacerカーのカメラはそれらを全て認識して走るため、バーチャル上より判断が鈍る傾向にあります。

判断速度

DeepRacerカーは15フレーム/秒の頻度で画面をキャプチャし、それをグレースケール化して推測に回します。
後述しますが速度は最大で65%くらいがMAXです。つまり、MAXで8m/sのスピードが出ていたとすると、約53cmに1回の頻度で推測が入ることになります。例えばカメラがキャプチャした時点で40cm先にカーブがあったとすると、次にカメラがキャプチャするのは53cm後、ということになるので、コースアウトしてしまうのです。
そこを考慮に入れたスピード配慮と設計が必要になるかと思います。

速度調整

サーキットレースでは速度を参加者がマニュアルで調整します。
これがなかなかの曲者で、最初からスロットルを上げて望むと、かなりの確率でコースアウトします。
バーチャルレースでは最も適切な速度を車が自ら選択して走りますが、サーキットレースの場合はこの「人間による介入」があるため、モデルによる速度の調整があまりポイントになりません。
逆に言うとここが唯一人間がカーに対して直接指示できるポイントとなるので、もしモデルが不安定な動きをしていたら、速度を落としたりして助けてあげることができます。

サーキットレースにて気をつけるべきポイント

これらに踏まえて「サーキットレース用」のモデルを作るための(あくまで私なりの)Tipsをお伝えします。

速度ではなく、完走率優先

上に書いたように、レース場の環境はバーチャルと違って不安定要素が多いです。そのため、シミュレーションに比べて車が荒ぶることが多いです。
ですので、バーチャルレースなら奇跡を信じてサブミットするようなモデルはサーキットレースでは避けたほうが無難です。
逆に、シミュレーションではタイムがそれほど伸びていないものでも、実際のレースではスロットルを人間が操作するため、やり方によっては速いラップが見込めます。

上の画像くらいのラップタイムでも、サーキットレースに投入するとやり方によっては13秒、14秒台をたたけたりします

Action Spaceはシンプルに

サーキットレースを走る上でのポイントは「直線ではまっすぐに、カーブではきちっと曲がること」かと思います。
つまり、センターラインに沿って細かくステアリングを切り続けるような報酬関数を書いてしまうとなかなかいいタイムが出ないように感じます。

私の場合は思い切ってステアリングを3種類に絞りました。つまり「右、左、まっすぐ」しかない、ということですが、DeepRacer Leagueのレースコースであるre:InventコースはS字などの細かいRはなく、曲がるときはガッツリ曲がるものが多いので、これで充分勝負できるかと思いました。

学習時間はそんなに気にしない

モデルの学習時間ですが、バーチャルレースではややオーバーフィッティング(過学習)気味だとしても、コース特性を捉えていればいいタイムが出たりしましたが、サーキットレースの場合、シミュレーションと環境が異なる部分が多いため、あまり気合を入れて学習させ過ぎると、対応できずにコースアウトすることが多いと思いました。
学習時間は3時間くらい、少ないと2時間くらいのモデルでもきれいに走ってくれました。

まとめ

ということで、自分なりにサーキットレースの攻略Tipsをまとめてみました。
レースは明日もう一日残っています。私もがんばりますので、みなさんもぜひ楽しんでください!!