もずく@こちらのアカウントではお久しぶり…です。
最近、あまりにも記事を書いていないので、今朝見かけた自動運転の記事について軽くコメントをば。
深層学習(ディープラーニング)を使って、車に積んだ1台のカメラで正確に距離予測できる技術ができたよ…という話です。NVIDIAが発表したんだからたぶんかなりちゃんとしてると思います。
まず前提知識ですが、可視光カメラ(いわゆる普通のカメラ)で距離を予測しようとするとカメラを2台使う必要があります。これはステレオカメラといって、日本ではスバルのアイサイトが有名です。
ステレオカメラは人間の眼と同じ仕組みを使っていて、2台のカメラで撮影されたシーン内で同じ点を見つけて、その画像上での2点のズレから距離を推定します。
左右の目でウインクできる人は遠くや近くの一点を見ながらパチパチとしてもらうとわかると思いますが、近くにあるものほど、パチパチしたときに動く距離(ズレ)が大きくなります。これを両眼視差といいます。
ステレオカメラ方式の問題は、2台のカメラで撮影されたシーン内から「同じ点」を見つけ出すことです。同じ点でも視点が異なると違って見える場合もありますし、実世界は3次元空間なので片方だけ隠れてしまうこともあります。
単純な改善方法としてはカメラの台数を増やすというやり方があります。もずくさんは昔、9眼ステレオカメラ(9台のカメラを使っている)というものを研究で使っていました。むちゃ重いので、車に搭載できる類のものではないですね。
ちなみに9眼ステレオカメラは定価で600万円くらいしたらしいです。他にもいろんな種類のカメラと磁気センサなどを使った計2000万円くらいのシステムで、おもちゃのくるまを組み立てるシーンを延々と自動撮影していました。何やってんですかねぇ。
さて、話を車載カメラに戻しますが、ステレオカメラの問題はそもそもカメラを複数台使わずに1台だけにすれば生じません。
私たちも片目だけで距離感はほぼ掴めますよね。両眼視差のように物理的な情報を使うのではなく、シーンを脳で理解することで、車と道路がこのくらいの比率で写っているので、この車との距離は大体このくらいだろう…と推測します。
それを人工知能(機械学習)にさせよう…というのが今回のNVIDIAの取り組みです(NVIDIAに限らず昔からされている研究です)。
で、今回のNVIDIAの発表は、道路が平面でなくてもちゃんと距離を推測できるようになったよ…というものです。
1台のカメラで距離を推定する場合、上述したように道路と車の比率をベースにするのですが(たぶん)、道路が上下にうねっていたりすると予測に失敗するんですよね。だから道路の3次元的な形状を別のセンサーで計測して、その情報を(カメラの情報と一緒に)人工ニューラルネットワークという賢いやつに入れてやったら、そのうちカメラの情報だけで正しく認識できるようになった…という話です。
ディープニューラルネットワークは何でもありだな…
ただ、単眼カメラでのシーン理解を用いた距離推定はちょっと怖いところがあるんじゃないか…と私は思っています。
シーン理解には「錯覚」というものがつきもので、しかもそれは勘違い…とかいうレベルじゃないんです。頭ではそうじゃないことを理解していても、どうしてもそう見えてしまう。
以下のサイトの遠近感のやつをみてください。道路と車の比率でシーン理解しているとやばげな錯覚がありますよね。壁にモンスターがくっついてるやつ。
なので、カメラ1台にこだわらず、物理的な情報を計測するセンサーも援用して、安全なシステムをつくってくれたらいいなと思います。
まあ、おそらくNVIDIAも本番環境で単眼カメラによる距離推定だけを利用する…とは考えていないと思いますが。
以上、朝のニュースでした。
ん、ちょっと待って。いま投稿しようとしたんだけど、「テクノロジー」のカテゴリ消えちゃった…?!
「教育・子育て」に押し出されたのかな。う~む、この記事、「他カテゴリ」なんだ…