Google Xが研究する2つの技術
さて今回と次回は、コンピュータビジョンは他の技術分野の各種技術と組み合わせることで、様々な分野で応用が広がり始めているのを知っていただくことを目的に、いつもと少し趣向を変えて、「コンピュータビジョン以外の分野においてコンピュータビジョン技術が応用されている例」を紹介したいと思います。
ということで、「コンピュータビジョンの技術は、こんなに面白い他の分野にも使える技術なのか」ということを知っていただくことを目的に、他分野でどう応用されているかを紹介したいと思います。最近多かった難しいアルゴリズムの説明はありませんので、ぜひ肩の力は抜いて映画でも観るような気分で呼んでいただければ幸いです。
今回のお題にマッチするものとして、最近ソフトウェアだけでなくハードウェアの面でも注目を集めるGoogleにおいて研究されている2つの技術を紹介したいと思います。1つ目は、運転手の操作を一切必要としない、目的地さえ指定すれば後は全自動運転で目的地まで移動する自動車「Googleドライバーレス・カー(Google Driverless Car)」です。もう1つは、専用メガネをかけることで、現在いる場所や見ている物の情報がARにより表示される「Google Glasses」です。
これらの2つの技術はいずれも、元Stanford大学(Stanford University)のAI(人工知能)部門の教授であったSebastian Thurn氏が率いるGoogle Xという人工知能系のコンピュータサイエンス技術の研究所により産み出された成果です。2つともコンピュータビジョン技術だけで成り立っている技術ではないものの、コンピュータビジョン技術が大きな役割を果たしている技術です。それでは、2つの技術の技術を紹介していくことにしましょう。
Googleドライバーレス・カー
Google Xにおいてこのドライバーレス・カーのプロジェクトを率いているSebastian Thrun氏は、元はスタンフォード大教授であり、以前から人工知能分野では有名な研究者でした。現在の彼は、Udacityという無料授業サイトの講師・CEOとしても有名です。また、彼はスタンフォード大の人工知能部門であるSAIL(Stanford Artificial Intelligence Laboratory)の前所長で、その当時のSAILのチームがDARPAグランドチャレンジ2005という自動走行車コンテストで優勝しています。
DARPA(国防高等研究計画局)は、米国における軍事使用目的の新技術の研究開発を行う米国国防総省の機関です。DARPAグランドチャレンジはそのDARPAが開催した無人装甲車コンテストで、2004、2005、2007の3回開催されています。
そのThrun氏がスタンフォード大時代からGoogleのフェローとして、取り組んできたのが「Googleドライバーレス・カー(無人走行車)」です。
Googleドライバーレス・カーは、Google Street Viewのマップデータを、車に据え付けられている各種センサのデータ(前方カメラのビデオデータ、上部にとりつけられたLIDARセンサ、前方にとりつけられたレーダーセンサ、後輪に取り付けられた位置センサ)を合わせて処理するソフトウェアと、Google Street Viewの膨大なマップ情報を結合させることで、アクセル・ハンドル・ブレーキなどを勝手に人工知能が行い全自動運転を実現している「ロボット・カー」システムで、目的地を指定しておけば、無人の状態で勝手に目的地まで自動的に走行してくれる仕組みです。また、当然ながら走行中には各種センサにより信号の色や、障害物と自分の位置を把握しているので、人や車や障害物に衝突することなく自動運転するというシステムです。
Googleドライバーレス・カーのプロジェクトチームは、トヨタやAudiの車で実際にドライバーレス・カーシステムをテストしたそうです。以下の動画は、そのテストの様子を納めた動画です。車の上にそなえつけられて、クルクルとまわって周辺をスキャンしているLIDARセンサが目立つ車です。
(以前、この連載で自動車のコンピュータビジョン技術を紹介した際にも同様の話題を出しましたが)カメラの映像からのみでも、自動車の位置情報をある程度正確に推定することは可能です。また、レーン線検出に、信号の色判定アルゴリズムや、歩行者検出に自転車/自動車検出アルゴリズムを搭載しておくことで、カメラのみでもある程度のレベルの自動走行は実現できます(特に、高速道路などの単純構造の道路では、レーン検出と前方車両検出さえ高い精度を保てることができれば、ほとんど問題なく自動走行できることが想像できると思います)。
しかし、前方カメラの情報だけや、加速度センサや位置センサの情報を単独で用いた場合、そもそも入力データにノイズが多かったり、また天候や障害物による遮蔽などにより、カメラから十分な視覚情報が取得できない時があると、十分に安定した位置情報は得られず、その場合は安全かつ目的地まできちんとたどり着ける自律走行は実現できなくなってしまいます。
そこで、この欠点を補うために、自動車の外界センシングを行う場合は、「複数のセンサを同時に用いてそれらの情報を結合して正しい位置情報を推定する」という、Googleドライバーレス・カーでも用いられているシステム設計がよく用いられます。これはロボットの自律移動走行においてもよく取られる手段であり、技術者からするとドライバーレス・カーが運転手の居ない自律移動ロボットとみなされていると捉えることもできるでしょう。
また、同じく自律ロボットでよく取られる手段として「マップ(地図)の活用」があげられます。あらかじめ走行する場所の2次元(もしくは3次元)の地図を作っておけば、その地図上で現在ロボットがどこを移動しているかを、センサからの位置情報を元に更新・修正することができます。
もちろんロボットが地図を持たなくても、レーダーにより障害物との距離を常に測れば衝突は防げますし、カメラと位置センサの情報から自己位置を時系列的に推定し続ければ、ある程度の精度までなら誤差も少なく自分の現在の位置(座標)を推定し続ける事はできます。しかし、例えば大きな石に衝突して位置センサが故障して他のセンサだけで目的地まで到着しなくてはならない場合は、地図を保持しているとその地図情報により他のセンサの情報を元に走行を続けることができますし。また、トンネルや日陰や夜間など、カメラが苦手とする環境や場所において地図を持っておけば、他のセンサだけで切り抜けることも可能となるわけです。加えて、ロボットが地図を持っていると、地図と車の位置関係が正しいかどうかの確認が随時行えることになり、各種センサの情報から推定された自己位置の修正ができるようになるので、よりいっそう安定した走行が実現できます。
Googleは現在のところこのドライバーレス・カーを商用で売り出す考えはないそうですが、ここで使われている技術は、運転手が運転している自動車でも安全を強化してくれる技術です。個人的には、より安全な自動車が増えれば、自動車に乗っている人の安全性の向上よりも、むしろその自動車に衝突されて怪我をする可能性がある歩行者や並走するバイクの危険性が下がることに意義があると思います。各自動車メーカーはこの無人走行車(自律走行ロボットとも言えます)の安全確保のエッセンスの良いところをうまく取り入れていただき、運転手も歩行者もより安全になるような自動車を開発して頂きたいところです。