🛤️

自動運転AI開発:学習からシミュレーション、実車テストまで

2023/10/12に公開

Turingの自動運転・AIモデル開発チームの塩塚です。Turingは2030年までに完全自動運転の達成を目指しています。その未来のためにTuringでは2つの機械学習チームで研究開発を進めています。一つはBrain Researchチームで、マルチモーダル学習ライブラリ「Heron」を公開したりと2030年の完全自動運転に向けて研究を行っています。もう一つは自動運転・AIモデル開発チームで、こちらは2024、2025年にTuringから発売される電気自動車の自動運転システムを開発しています。このチームの目標は国内の市販車に搭載されている自動運転の中で最もよいものを作ることです。


開発したモデルをテストしている様子

この記事では、そんな自動運転・AIモデル開発チームがどのようにして自動運転を作っているのか、主に評価プロセスについてお話したいと思います。

自動運転・AIモデル開発チームについて

突然ですが皆さんは市販車の自動運転機能をどのくらい使っていますか?そもそも自動車に乗っていないという人も一定数いると思いますが、実は結構すごいです。着実に進歩しています。ADAS(先進運転支援システム)が搭載されている市販車の多くの車には、前方車に合わせて速度を調整する前方車追従機能と車線をはみ出さずに走行する車線逸脱防止機能が搭載されており、かなり快適かつ安全に高速道路などを走行することができます。最近私が試乗した日産プロパイロット2.0では前の車を追い越してくれたり、ナビと連携して高速の出口へ案内してくれました。まだ市販車の最新の自動運転に乗ったことが無い方は、レンタカーなどで体験してみると衝撃を受けると思います。

そんな市販車の自動運転を超えることは非常に困難です。これまでの多くの技術者の努力によって実現されている技術だとひしひしと感じます。しかし、その困難に挑戦するのがスタートアップであり、Turingの存在意義です。そして、その機能を開発するのが私たち自動運転チームであり、その機械学習モデルを作るのがAIモデル開発チームの役割です。

AIモデル開発チームが作っているモデルは色んな出力を持っているのですが、例えば以下の画像のように進行方向の経路や白線を出力します。また、前方車を検出して前方車追従や停止に使ったりしています。

このように私達は機械学習モデルによってEnd-to-Endで自動運転を行おうとしています。

Kaggle化したら開発が爆速に

Turingでは創業当初から「課題をKaggle化できればこっちのもん」という思想を持っています。課題に対して適切に評価サイクルを回せれば後は社内の優秀なMLエンジニアなら解けるという考えです。

機械学習モデル開発に着手の際、経路や白線、前方車などそれぞれ個別のタスクについては適切にデータを用意すればそれなりに精度が出るだろうとは考えていました。一方でそれぞれのタスクについては検証データによる評価で順位付けはできても、結局、どのモデルがいいのかわからないと思いました。そこで機械学習モデルの学習を始める前に評価プロセスを準備することにしました。

オフライン評価とオンライン評価

自動運転の文脈では、しばしばオフライン評価とオンライン評価というものが用いられます。オフライン評価とは教師データとの最小二乗誤差などあらかじめ定義された指標による数値的評価です。一方、オンライン評価とは実際に車を走らせてその走行性能を実世界で測るためのものです。

基本的にはなんらかのオフライン評価をもとに学習を行い、その中で良かったモデルを実車にデプロイしてテストコースでオンライン評価を行うことになります。しかし、ここで起こる問題がオフライン評価とオンライン評価の乖離です。

Turingでは創業初期に機械学習モデルで私有地をぐるぐるするプロジェクトを行いました。このときもオフライン評価で良かったものを優先的に車両にデプロイしていたのですが、必ずしもオフライン評価で良かったものがうまく走れるわけではなく、モデルの評価に苦戦しました。
https://zenn.dev/turing_motors/articles/budapest_tech_blog

また、ECCV2018でもEnd-to-Endな自動運転モデルにおいてオフライン評価とオンライン評価が必ずしも相関しないことが報告されています。
https://openaccess.thecvf.com/content_ECCV_2018/papers/Felipe_Codevilla_On_Offline_Evaluation_ECCV_2018_paper.pdf

つまり真の評価は実車にデプロイするまでわからないということです。とはいえ、モデルの学習のたびに実車でテストすれば開発速度を大きく落としますし、そもそも危険です。そのため自動運転モデルの開発では、できるだけオンライン評価に相関するオフライン評価パイプラインを構築すること、継続的なオンライン評価手法の確立が必要となりました。

オンライン評価に相関したオフライン評価

良いオフライン評価の前に、オフライン評価のパイプラインについてお話します。Turingの機械学習チームではWandBを使って学習の可視化を行っています。我々のチームでも積極的に活用し、毎日複数のモデルの学習結果を同時に確認しています。

また、学習の過程で行っているセグメンテーションなどの途中結果もWandB上で可視化し、モデルの学習経過を簡単に確認できるようになっています。

さて、オフライン評価の管理体制ができたので実際によりよいオフライン評価方法を考えます。実車での評価(オンライン評価)に相関した指標を用意するには、検証データと評価関数の両方の工夫が必要です。評価関数については先に紹介した論文の中で提案された評価関数なども用いつつ今でも試行錯誤の途中です(オンライン評価に完全に相関したオフライン指標はないので今後も継続的に取り組む課題です)。一方検証データを適切に作成することは機械学習モデルを評価する上で重要です。

直線はすごく得意だけどカーブが苦手なモデル、晴れた日は問題ないが雨の日は苦手なモデル、昼や夜は得意なのに夕方だけ苦手なモデル。ルールベースではなくEnd-to-Endで自動運転を行う場合、このようなモデルが発生する可能性があります。そのため、データの検索システムを開発し様々なシーンごとに検証できるようにしました。

この検索システムは文章で動画を検索することができ、例えば「雨」や「夜」、「赤信号の交差点」などキーワードをいれるとそれに関連した動画データを提供してくれます。これにより、検証したいシーンごとに検証データを作成することができ、また学習データについてもバランス良くデータをサンプリングすることができます。

実際に、学習データや検証データをランダムにサンプリングした場合に比べ、データバランスを意識して学習した場合はオンライン評価において多様なシーンにおいてロバスト性が高まり、うまく走行ができるようになりました。

オフライン評価の工夫で実車での走行性能を向上することができました。しかし、やはりオフライン評価のみで実車での性能を完全に評価することはできません。とはいっても、開発したモデルごとに実車でテストするわけにもいきません。それでは開発は爆速にはなりません。そこでシミュレーターを使った擬似オンライン評価を行っています。

シミュレーターを使った擬似オンライン評価

我々のチームでは自動運転モデルの評価にCARLAシミュレーターを使っています。CARLAとはオープンソースで開発されている自動運転用のシミュレーターです。これを用いることで実車に行かずともシミュレーター空間内でモデルをデプロイすることができます。

しかし、やはりモデルの学習の評価に使うとなると結構大変です。1 epoch(学習データを一周する単位)ごとに人の手でシミュレーターに載せて動かすのは面倒ですしいいつか絶対やらなくなります。そこで、自動で1 epochごとにシミュレーターで走らせてSlackにポストされる仕組みを用意しました。以下は弊社Slackのモデルデプロイ専用channelの様子です。

同時進行で動いているモデルが1 epochごとに自動でシミュレーター空間上を走行し、その結果が非同期でSlackに送信されます。こうすることで実車でのテストに近いオンライン評価を人手を使わず安全に行うことができます。実際に我々のチームのMLエンジニアはこの走行動画を見ながら一喜一憂したり、改善案を話し合ったりしています。

実車での走行性能との相関ですが、オフライン評価だけを使ってモデルを選んだ場合に比べて格段によい結果を得られています。例えば、シミュレーターできついカーブを安定して曲がれるモデルは実車でも安定して曲がることができています。また、最小二乗誤差などのオフライン評価でベストスコアだったものもシミュレーターでうまくいかないと実車でもうまく行きません。

このようにシミュレーターによる疑似オンライン評価をepoch単位で行って可視化し、みんなが見えるようにSlackに送ることでチーム全員で、もっといえば会社全体で確認し開発状況を共有・改善させています。

また、End-to-Endで自動運転を行うにあたり安全性は非常に重要です。機械学習の場合は新しい損失関数やパラメータを試した時に大きく出力が崩れることがよくあります。特に損失関数は下がっているのに良くない設計になっていて想定しないモデルが作成されるのは非常に危険です。そういった意味でも学習中のシミュレーターでの評価は非常に重要です。

バグがあってもすぐに気付ける
バグがあってもすぐに気付ける

最後は実車でテスト!

オフラインとオンライン双方の評価を受けて、いくつかのモデルを選んで実車でテストしています。実車テストは月に一度、私有地のテストコースで行っており、この日のためにより良いモデルを学習・選択します。自分たちで作ったモデルが実車を動かし、それが思い通りに動いたときはかなり興奮します。


この日は大雨でしたがデータサンプリングなどの工夫もあり問題なく走行できました

最後に

本記事では2024,2025年にTuringから発売する電気自動車の自動運転モデルについてお話しました。今回はモデルの評価について紹介しましたが、Turingの自動運転はどこまでやれるのかというモデルの機能面についてもまたどこかで紹介できたらと思います。

また自動運転チームでは機械学習だけでなく、カメラや計算機などのハードウェア、組み込みLinuxなどの低レイヤ、制御アルゴリズムなど幅広く人材を求めています。ぜひ興味を持ってくれた方はまずはカジュアル面談からでもお話しましょう!待ってます!

Tech Blog - Turing

Discussion