🛞

自動運転ってどこまでdeep de ponできるの?

2023/12/19に公開

1.はじめに

Turingで自動運転の開発をしている猪狩と申します。現在、私達のチームは2024年末リリース予定の少量生産車に搭載される自動運転システムの開発を行っております。Turing では以前より「end-to-end deep learning modelによる自動運転システム」を謳っているわけですが、いま現在deep learningモデルがどこまで運転操作を代替できるのか、2024年末リリース予定の少量生産車に搭載されるADASシステムの開発者の視点から紹介出来ればと思います。

2.Deep vs ルールベース

まずは、Deep learning と、それを使わない場合のルールベースの手法について、簡単に解説してそれぞれの手法のメリット、デメリットについて考えていきたいと思います。

ルールベースの手法では、単純に人の手によって記述されたアルゴリズムに従ってシステムが動作します。メリットとしては、システムの仕組みが明らかになっているので、システムの挙動が予測しやすいという点があります。これは自動運転という、安全性が重視されるアプリケーションにおいて、無視できない要素です。デメリットとしては、システムが存在する環境や、システムが行うタスク、あるいはシステムの内部構造が複雑になればなるほど、要求されるシステムのアルゴリズムが複雑化していき、開発が困難になっていくことです。

Deep learningとは、このアルゴリズムそのものを自動で構築する一つの手法です。Deep learningでは、システムに入力された画像、センサ値等の情報が、ニューラルネットワークと呼ばれる数学モデルによって処理されます。ニューラルネットワークは、複数の層で構成されており、各層には多数のノードが配置されます。これらのノードは、入力を受け取り、それを組み合わせて出力を生成します。ニューラルネットワークを複数の層、多数のノードで構成することにより、システムに要求される複雑で多数の処理、条件分岐を内包することが出来ます。

ニューラルネットワークに望ましい出力をさせるためには、学習と呼ばれるプロセスを行う必要があります。学習プロセスでは、教師データと呼ばれる、ニューラルネットワークへの入力と、対応する望ましい出力のペアをニューラルネットワークに大量に与えます。そうすることにより、ニューラルネットワーク内の各ノードが行う処理が最適化されていき、ニューラルネットワーク全体として望ましい出力を出すようになります。

ニューラルネットワークのメリットは、先述した通りシステムに要求される処理が複雑になっても対応可能であることです。運転では、とくにLv5の完全自動運転を想定した場合には、システムが存在しうる環境は世界中すべてです。これはとてつもなく複雑な環境であり、どのような環境であっても動作するシステムを作るには、ニューラルネットワークによるアプローチがほぼ必須と言えます。一方でニューラルネットワークにもデメリットはあり、自動運転というアプリケーションを考えたときに大きいのは、システムの挙動が予測出来ないことです。ニューラルネットワークは学習時に、内部での処理が開発者には見えない形で最適化されていくので、その処理の中身を開発者が理解することは難しいです。そうすると、どうしても突然システムがおかしな挙動をしない、ということを証明することが難しく、ニューラルネットワークを使う場合の大きな課題になります。

3. 運転動作の切り分け

自動運転システム全体におけるdeep learningとルールベースの境界線を探っていくため、運転動作を細かく切り分けて行きましょう。運転動作では、まずは視覚によって、白線や信号機、先行車や路駐など、路面の状況を認識します。その認識の結果に基づいて、白線の真ん中を走る、路駐を避けるために少し右側にずれる、あるいは急カーブが見えるから速度を落とす、などといった経路計画を行います。そうして、ハンドルを回したり、アクセルペダル、ブレーキペダルを調整することによって計画した経路に追従します。運転動作は、大雑把にはこの「認識、経路計画、経路追従」の3要素に分けることができます。以下、この3要素それぞれについて、現状の機械学習とルールベースのどちらが強いのか考えていきます。

4.認識

Turingの自動運転システム では認識の大部分をカメラが行っていますが、認識をカメラで行う限りでは、deep learningベースの手法が圧倒的に強いと考えてよいと思います。そもそも画像とdeep learningの相性は良いです。2012年にILSVRCと呼ばれる画像認識系のコンペでdeep learningによる手法が圧勝したことが、今日のdeep learningブームの火付け役になったとも言われています。自動運転を行うためにまず認識する必要のあるものは道路の白線ですが、これは現在でもでdeep learningによるアプローチで問題なく認識できます。

また、Lv5完全自動運転を実現することを考えたとき、システムは運転中に起こりうるありとあらゆる状況を正しく認識する必要があります。認識のレイヤに要求されるアルゴリズムはきわめて複雑で、ルールベースによるアプローチは難しいでしょう。多様な道路の状況に対応するため、Turingでは大規模言語モデル(LLM)を用いるアプローチをとっています。LLMによる自動運転については、下の記事に様々なチームによる研究成果がまとめられていますので、興味のある方はご参照ください。
https://zenn.dev/turing_motors/articles/353a6e71a1444c

5.経路計画

では、白線等の認識までではなく、車が走行する経路までdeep learningモデルに出力させてみてはどうでしょうか。deep learningモデルに、画像に対応する未来の走行経路を教師ラベルとして与えて、学習させるのです。このステップに来ると、deep learningとルールベースの手法は一長一短、という具合になってきます。

経路計画といっても、普通の高速道路であれば単純に道の真ん中を走るプログラムを書けばよいのです。このような場合、ルールベースの手法による自動運転システムはビシッと道のど真ん中を走ってくれて、プログラムされた機械による安心感のようなものを感じ取ることが出来ます。

一方で、deep learningによる自動運転システムにもそれ特有の良さがあります。それは、多様な状況に対応できるという点です。そもそも高速道路以外では、白線が掠れて見えない場所にはかなり頻繁に遭遇します。また、交差点の手前の右折レーンの分岐でも、白線は途絶えます。このような場所に遭遇するたびに、ルールベースによるADASシステムは不安定な挙動を示すのですが、deep learningによる自動運転システムではごく自然に走行してくれます。また、2024年度末より少し先の話になってしまうのですが、対向車とやり取りしつつ路駐を避ける、などといった複雑な判断を伴う経路計画を行う場合は、deep learningの方が有利になっていくと考えられます。

まとめると、deep learningが有利な場面とルールベースが有利な場面があって、現在の技術レベルでは明確にどちらが有利という訳ではないが、自動運転システムに求められる機能が高度になっていけばいくほどdeep learningが有利になっていく、といった具合と思われます。

6.経路追従

では、もっと大胆に、アクセルペダルの開度や、ハンドルの角度など、ドライバーによる操作量を直接deep learningモデルに出力させてみるのはどうでしょう。deep learningモデルに、画像に対応するドライバーの操作量を教師ラベルとして与えて、学習させるのです。これが出来ればシステムへの入力から出力までのすべてをdeep learningモデルが行う、真のend-to-end自動運転AIです。実はこれ、Turingの最初期の開発で実際に行っていました。気になる方は以下の記事を参照ください。
https://zenn.dev/turing_motors/articles/budapest_tech_blog

それでどうなったのかというと、ぎこちないけど何とか既定の周回路を回ることは出来ました。ただし、この方針でひたすらにデータ量を増やせば自動運転が出来るのかというと少し厳しいと思います。まあ、この実験自体はカメラの設置が不安定だったり、普通の車のハンドル操作信号を偽装して操作しているため操作量が謎パラメータであったり、end-to-endとは関係ない部分でさまざまな問題点があったのですが、、、

経路追従の部分は、従来のルールベースの手法では、車両力学モデルを使用します。車両力学モデルとは、車の物理的な挙動を運動方程式によりモデル化したものです。車両力学モデルを用いることによって、ハンドルをこれだけ回すと、タイヤから路面からこれだけ力を受けて、車両がこれだけ曲がる、といったように、車両の挙動を予測することが出来ます。逆に、車両が特定の経路を辿るために、ハンドルをどのように回すべきか、ということも車両モデルから分かります(いわゆる逆運動学というやつです)。実際にTuringで開発している自動運転ソフトウェアでモ、linear bicycle modelと呼ばれる、タイヤを前後1輪だけとし、路面から受ける力を滑り角に対して線形化したごく単純な力学モデルを用いていますが、基本的にそれで問題なく経路に追従することができます。経路追従の部分では、基本的には車両の運動だけを考えればよく、車両の運動の複雑さは世界の複雑さと比べるとそれほどでもないため、人間が記述したモデルによる、ルールベースの手法でも対応することができます。

では、このような運動方程式で記述される力学モデルは機械学習のモデルが内包することはできないのか、というとそんなこともないようです。近年、制御のレイヤを強化学習で行う研究が盛んになされており、たとえば2021年に開催された米DARPA主催の国際ロボット競技会「DARPA Subterranean Challenge」において、標高差120mほどの自然の山道を4足ロボットで移動するタスクを、強化学習ベースのコントローラを用いて攻略したチームが優勝しました。また、2022年にヒューマノイドによる100m走でギネス記録を達成した研究チームも強化学習ベースのコントローラを用いていたようです。

ただし、自動運転車の経路追従のレイヤに実際に強化学習を適用するかを考えると、車両の運動は2足、4足ロボットよりは単純な力学モデルで記述できること、強化学習を採用した場合に、挙動が読めないレイヤから直接アクチュエータに信号が送られるのは安全性上の懸念があることを踏まえると、今年、来年の時点ではまだ、経路追従のレイヤはルールベースの手法によって実装するのが妥当な判断と言えそうです。

7.まとめ

運転動作の「認識、経路計画、経路追従」のレイヤごとに、Deep learningとルールベースの手法を比較していきました。どちらの手法を用いるかを考えるときは、要求される処理の複雑性というのが一つのポイントになりそうです。今年や来年、といった段階では、deep learningによる手法で複雑な路面状況を認識して、経路追従などの下のレイヤでは、経路に追従する簡単なタスクを、ルールベースの手法で確実に行う、といった混合型のアプローチを取るのが現実的と思われます。また、deep learningモデルによって出力された経路計画の安全性をルールベースアルゴリズムで確実にチェックする、という方法もあり得ます。数年間の間では、deep learningによる対応力とルールベースによる確実性を上手に両立して、システムとしての安全性とクオリティを高めていく、ということが自動運転システム開発の仕事になりそうです。

8.おわりに

Turing ではハイクオリティな自動運転システムを開発するエンジニアを募集しています。自動運転を開発するためには、機械学習エンジニアだけではなく車体制御系エンジニアや、組み込みエンジニアが必要です。Turingにご興味を持たれた方は、Turing公式サイト採用情報をご覧ください。TwitterのDMも解放していますので、本記事に関する質問、感想等は猪狩(@IgariKoki)までお寄せください。

Tech Blog - Turing

Discussion