●高速画像処理技術で機械が根底から変わる
では、今日はビジョン、しかも「高速ビジョン」を使って新しいシステムを作る話をしたいと思います。
ビジョンというのは、カメラで映像を撮り、その映像情報を処理して機械を動かす、あるいは何かを認識をする機能のことです。多くの人は、デジタルカメラなどでは、キレイに撮影するために必要な画素数、つまり空間的な分解能や、暗いところでもキレイに撮るために必要な感度に興味を持っています。しかし、われわれはそういった方向性ではなく、いかに速く映像を撮り、いかに速く処理できるかを追求し、その情報をフィードバックしてモノを動かそうという新しいシステムの開発をしてきました。どれだけキレイな映像が撮れるかという「空間的な密度」よりも、いかに速く映像が撮れるか、いかに速く機械を動かせるかといった「時間的な密度」に焦点があるのです。
実は、通常のビデオカメラのレートは1秒間に30枚で、これは、人間の目のスピードに合わせて創ったレートです。このスピードで間に合う工学的な対象は、それほど多くありません。例えば、自動車やロボットのビジョンは、このスピードでは間に合いません。それらに画像処理システムを組み入れた瞬間、同時に1秒間に30枚の遅い制御サイクルが導入されてしまいます。それでは、自動車やロボットが正常に動きません。もっと速く動かす必要があるのです。そのためには、画像処理も速くする必要がある。速い画像処理を実現すれば、自動車、飛行機、ロボットを速く動かすことができるようになるのです。
多くの技術者にとって、この高速ビジョン技術は1秒間30枚の画像処理の壁を乗り越えるもので、大きなブレークスルーです。今までの画像処理技術に不満をもっていた人たちが、現在、高速画像処理技術を使い、機械を根底から変えようとしています。今日は、そのことについて、基本的なところからお話しししたいと思います。
●システム全体を速くする必要がある
実は、カメラの撮影機能が速くなっただけでは、システムは速くなりません。なぜかというと、カメラセンサーの先には、それを動かすコンピュータやアクチュエータの問題があるからです。つまり、人間の感覚系に相当するセンサー、頭脳に相当するコンピュータ、それから筋肉に相当するアクチュエータの3つをともに速くする必要があります。センサーが速くなってもコンピュータが遅ければ、全体は遅い方に合わせる他ありませんから、全ての性能を高める必要があるのです。
今までは画像処理が遅く、全体のスピードを制限していたのですが、これが速くなったとき、今度は他に全体のシステムを制限するものが出てきます。アクチュエータを今までより速くする必要がありますし、コンピュータも並列処理を導入して速くする必要があります。そうした技術の進化が全体のブレークスルーになるのです。
●並列分解でシステムは速くなる
さらに、もう一つのブレークスルーが必要です。システム全体の設計段階で、下位層のセンサー直後、アクチュエータ直前の情報処理などは、信号レベルでの処理を必要とするのですが、その一方で、上位層では認識や判断、タスクの切り替えといった処理をする必要があります。この2種類の処理は質的に違います。質的に違う処理を、一つのシステムでうまく動かす技術が重要となるのです。世の中の人たちは、「人工知能」を往々にして上位の認識判断、タスクの切り替えをうまく処理する技術と捉えていますが、実際はそれだけでは足りません。上位層が行う認識・判断、時間のかかるロジックレベルの処理と、下位層のリアルタイムでシグナルレベルの処理を、全体で合わせていくシステムが今、求められているのです。
システム全体のタスクを上位層、下位層、あるいは並列モジュールに分解していくことを「タスク分解」といいます。システムの性能を高めるには、このタスク分解をうまくやる必要があります。これまでは多くの場合、センサーの情報を処理して、その結果を上位層に伝え、そこで認識判断を行って、その結果を制御系に落とし、実際のモーターを動かすというタスク分解をしていました。センサーから感覚系で情報を取り、脳で処理して筋肉へ出す。こうした従来の方法を「直列分解」といいます。
この直列分解の場合には、センサーとアクチュエータのど真ん中にコンピュータの認識判断という遅い処理が入ることになりますから、センサーからアクチュエータまでの時間がかかる。これではシステムは速く動きません。
それに対して、「並列分解」という考え方があります。この仕組みでは、通常時はセンサーからアクチュエータへと、コンピュータを通さずに直接フィードバックをかけてしまいます。このフィードバックループが下位層で並列...