Google I/O 2019でのプレゼンテーションで、GoogleはTensorFlow Graphicsを発表した。TensorFlow Graphicsは、コンピュータビジョンにおける教師なしの学習タスクのためのディープニューラルネットワークを構築するためのライブラリである。このライブラリには、TensorFlowで記述された3Dレンダリング機能と、非矩形メッシュベースの入力データで学習するためのツールが含まれている。
コンピュータビジョンのためのディープラーニングモデルは、物体認識や位置認識などのタスクにおいて大きな進歩を遂げており、これは自律走行車を含む多くの分野にとって重要な技術である。ただし、これらのモデルはラベル付きイメージの大規模データセットの存在に依存する。ラベル付きイメージとは、つまり、ソース画像内で人間がオブジェクトを識別して特定した画像である。何百万もの画像を含むデータセットにとって、これは控えめに言っても労働集約的なプロセスである。さらに、ある視覚的なタスクにおいては、画像内のオブジェクトの単なる存在する・しないだけでは十分ではない。物や人の位置や向き、さらには姿勢を検出することが目標である。
この問題に対する1つの解決策は、「合成による分析」と呼ばれる教師なし学習技法である。この技術では、オートエンコーダと同様に、目的はニューラルネットワークが入力を中間表現に変換するエンコーダと、その中間表現を理想的には入力とまったく同じ出力に変換するデコーダを同時に学習することである。もちろん、モデルがトレーニングされるまで正確ではない。入力と出力の差、つまり損失が、バックプロパゲーションと呼ばれるトレーニングアルゴリズムによってネットワークパラメータの調整に使用される。システム全体のトレーニングが完了すると、エンコーダそれ自体をコンピュータビジョンシステムとして使用できる。
エンコーダが一連のオブジェクトとそれらの3D位置および方向からなる画像の表現を学習する場合、この表現を高品質の画像に戻すことができるOpenGLなどの多くの3Dグラフィックライブラリがある。コンピュータビジョンエンコーダを3Dグラフィックスレンダリングデコーダでチェーニングすると、ラベルなしデータセットを使用してコンピュータビジョンの教師なし学習の機会が得られる。
ソース: https://github.com/tensorflow/graphics
問題は、どの3Dグラフィックライブラリに対してもシンプルに投入することができないということである。ニューラルネットワークをトレーニングするための鍵はバックプロパゲーションであり、これにはネットワーク内のすべての層が自動微分をサポートすることが必要である。
良いニュースは、3Dグラフィックスレンダリングは、TensorFlowが最適化のために書いたのと同じ線形代数演算に基づいているということである。結局、ディープラーニングを大きく後押しする理由がグラフィックスプロセッシングユニット、つまりGPUということである。GPUは、3Dグラフィックレンダリングを高速化するために作成された特殊なハードウェアである。TensorFlow Graphicsライブラリは、TensorFlow線形代数コードを使用して実装されたいくつかのレンダリング関数を提供し、それによって「無料で」微分できるようになっている。これらの関数は次のとおりである。
- オリジナルの3D位置からのオブジェクトの回転と移動を定義する変換
- 光がオブジェクトと相互作用して外観を変更する方法を定義する材料モデル
- 画像平面へのオブジェクトの投影を定義するカメラモデル
デコーダ用のグラフィックレンダリング機能に加えて、ライブラリにはエンコーダセクション用の新しいツールも含まれている。すべての認識タスクが画像の長方形グリッドで機能するわけではない。LIDARなどの多くの3Dセンサーは、「点群」または接続された点のメッシュとしてデータを提供する。これは、入力データが点の長方形グリッドのマップであることを期待する、畳み込みニューラルネットワーク(CNN)のような一般的なコンピュータビジョンニューラルネットワークアーキテクチャにとっては困難である。TensorFlow Graphicsは、メッシュ入力用の新しい畳込みレイヤを提供する。開発者がモデルをデバッグするのを助けるために、点群とメッシュを視覚化するための新しいTensorBoardプラグインもある。
ハッカーニュースのコメント投稿者はポジティブに反応した。
いいね!私は数年前にOpenDR(http://files.is.tue.mpg.de/black/papers/OpenDR.pdf)で遊びましたが、本当に興奮しました。残念ながら、それは他のディープラーニングライブラリと統合することを難しくしたカスタムautodiff実装を使います。Pytorchはまだこの分野で遅れをとっているようですが、githubに興味深いリポジトリがいくつかあります(例:https://github.com/daniilidis-group/neural_renderer)。
Oculusの研究者Dimitri DiakopoulosはTwitterで次のように述べている。
このコードベースは、Tzu-Mao Liが最近発表した微分ビジュアルコンピューティングに関する博士論文を完全に補完するものです。彼の作品は、最近の最先端技術を通じた微分可能レンダリング理論の基礎を通して読者を引き寄せます。https://arxiv.org/abs/1904.12228
TensorFlow GraphicsはGitHubで利用できる。