●動画解析 さて、残りの時間で、最後に僕は動画について話しておきたい。僕がお見せしようとしているのは、 ビデオシステムの例 だ。 ここで、僕はいくつかモノを運んでくる。そして、今、お見せしているのはエッジ検知と動作検知だ。僕は背景を減算することで動作検知を行なっている。このようにビジョンシステムには多くの異なる操作がある。 ●モジュール そして僕は最後にこちらのセンサを紹介したい。 君たちはだいたい10ドルから15ドルの ビデオモジュール を購入することができる。これらは非常に低解像度のビデオだ。 ●ウェブカメラ しかし、今やウェブカメラをたったの数ドルで購入することができる。このようにコモディティとなったウェブカメラは高精細ビデオまで選択肢がある。しかし、これらは非常に複雑なプロトコルを用いている。 ●ライブラリ
僕は動画を扱いたいときはモジュールを使用したりはしない。動画を扱う際に僕が気に入っているのはウェブカメラと組み込みLinux基板を使用する方法だ。 ●OpenCV これらは通信することができる。通信可能な状態になると OpenCV を使用することができる。OpenCVは動画処理に使用することができるライブラリだ。 ●WebRTC しかし、カメラと通信する上で僕が気に入っている方法は、 WebRTC を用いるやり方だ。 WebRTCはウェブ上で動画を扱う際のスタンダードだ。実際のところ、僕たちは将来的にWebRTCを用いることになる。 今お見せしているWebページは、カメラが接続されていないので動画が表示されていない。しかし、このWebページを見てみるとお分かりだと思うが、JavaScriptがWebページを設定している。これはカメラへのアクセスの許可を求め、そしてこのページを更新する箇所だ。( コード を見ながら説明)そして、このように君たちは一連の分割されたルーティンを見ることができるようになる。 こちらは背景を減算するルーティン。二つ目はトラッキングを行おうとしている。こちらのルーティンはエッジ検出を行うルーティンだ。こちらは動作検知のルーティン。これらは動画を解析するJavaScriptのループなんだ。 そして、これらが更新する作法は動画からデータ構造を差し引くことだ。こうすることで僕は分析することができるようになるんだ。 さあ、 このデモクリップ をもう一度見てみたまえ。JavaScriptは、全てこれに依存しているので、非常に効率的にコンパイルされる。これはジャストインタイムで編纂され、このデモクリップの中では、先ほどお見せしたループが全てリアルタイムのメイージプロセスをWebページ上でJavaScriptとして実行しているんだ。そして、これらはブラウザ中のJavaScriptのパフォーマンスに起因して動作する。特別なビデオシステムを用いているのではないんだ。すなわち、君たちは今やハイパフォーマンスなビデオプロセスを単なるJavaScriptの中で実行することができるようになったってわけだ。 そういうわけで、僕が好むビジョンシステムというのはハードウェアから直接的にカメラにアクセスするようなやりかたじゃなくて、ウェブカメラを用いたものなんだ。なぜって、それはこれらはまさにlibuvcを組み込みLinux基板で用いたり、WebRTCによりJavaScriptを用いたイメージプロセスシステムを用いたりと、コモディティ化されたものだからなんだ。 (以下、随時更新中) (つづく) 講義の目次は 【和訳版】FabAcademy 2016 からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。