TensorFlow Graphicsは3Dメッシュに対してCNNを適用できるようにするフレームワークです。従来、TensorFlowで3Dメッシュを扱う場合は、ボクセルに変換して扱っていました。TensorFlow Graphicsでは、新たに、微分可能レンダラと、メッシュに対するGraph Convolutionを実装することで、3Dメッシュをそのまま扱えるようにしています。mesh_segmentationによる3Dメッシュの各ポリゴンへのラベリングなど、今までできなかった処理が可能になります。
従来のコンボリューションは2D画像に対して適用していました。

グラフコンボリューションでは、3Dメッシュの頂点に連結している頂点に対して重みをかけて畳み込みを行います。畳み込みを行うと、チャンネル方向に3Dメッシュが増殖していくイメージになります。

グラフコンボリューションによって、3Dメッシュの部位ラベルの付与が可能になります。

頂点と頂点の接続関係はマトリックスで定義します。頂点iと頂点jが接続されている場合、A[i,j]に値が入ります。性質上、対角には必ず値が入ります。
モデルデータは、頂点列とポリゴンを構成する頂点ID、頂点の接続情報から構成され、tfrecordsに格納されます。fbxなどからの変換ツールはまだリリースされていません。(3D format to .tfrecords)
それでは、MacにTensorFlow Graphicsをインストールしてみます。
TensorFlow Graphicsをインストールします。
Jupyter Notebookをインストールします。
Colabtoolsをインストールします。
Colabtoolsをインストールしていない場合は、threejsを使ったモデルビューワで下記のエラーが発生します。
サンプルをcloneします。
サンプルを実行します。
notebooks/mesh_segmentation_demo.ipynbがmesh_segmentationの推論サンプルです。まだ学習側のコードは公開されていませんが、ディープラーニングの応用例が3Dにまで広がっていく未来が楽しみです。
notebooks/spherical harmonics optimization.ipynbが球面調和ライティングの環境マップを計算するサンプルです。TensorFlow Graphicsに含まれる微分可能レンダラーを使用することで、与えられた画像から、環境マップテクスチャを推定します。
学習の推移です。

学習結果のテクスチャです。

TensorFlow Graphicsの概要動画です。
従来のコンボリューションは2D画像に対して適用していました。

グラフコンボリューションでは、3Dメッシュの頂点に連結している頂点に対して重みをかけて畳み込みを行います。畳み込みを行うと、チャンネル方向に3Dメッシュが増殖していくイメージになります。

グラフコンボリューションによって、3Dメッシュの部位ラベルの付与が可能になります。

頂点と頂点の接続関係はマトリックスで定義します。頂点iと頂点jが接続されている場合、A[i,j]に値が入ります。性質上、対角には必ず値が入ります。
A[i, j] = w[i,j] if vertex i and vertex j share an edge, A[i, i] = w[i,i] for each vertex i, A[i, j] = 0 otherwise. where, w[i, j] = 1/(degree(vertex i)), and sum(j)(w[i,j]) = 1
モデルデータは、頂点列とポリゴンを構成する頂点ID、頂点の接続情報から構成され、tfrecordsに格納されます。fbxなどからの変換ツールはまだリリースされていません。(3D format to .tfrecords)
それでは、MacにTensorFlow Graphicsをインストールしてみます。
TensorFlow Graphicsをインストールします。
pip3 install tensorflow-graphics
Jupyter Notebookをインストールします。
pip3 install jupyter
Colabtoolsをインストールします。
git clone https://github.com/googlecolab/colabtools.git cd colabtools python setup.py install
Colabtoolsをインストールしていない場合は、threejsを使ったモデルビューワで下記のエラーが発生します。
--------------------------------------------------------------------------- NameError Traceback (most recent call last)in 19 'vertex_colors': mesh_viewer.SEGMENTATION_COLORMAP[test_labels[0, ...]], 20 } ---> 21 input_viewer = mesh_viewer.Viewer(input_mesh_data) /usr/local/lib/python3.7/site-packages/tensorflow_graphics/notebooks/mesh_viewer.py in __init__(self, source_mesh_data) 56 57 def __init__(self, source_mesh_data): ---> 58 context = threejs_visualization.build_context() 59 self.context = context 60 light1 = context.THREE.PointLight.new_object(0x808080) /usr/local/lib/python3.7/site-packages/tensorflow_graphics/notebooks/threejs_visualization.py in build_context() 72 """Builds a javascript context.""" 73 threejs_url = 'https://www.gstatic.com/external_hosted/threejs-r98/' ---> 74 _publish.javascript(url=threejs_url + 'three.min.js') 75 _publish.javascript(url=threejs_url + 'examples/js/controls/OrbitControls.js') 76 return _js_builder.Js(mode=_js_builder.PERSISTENT) NameError: name '_publish' is not defined
サンプルをcloneします。
git clone https://github.com/tensorflow/graphics.git
サンプルを実行します。
cd tensorflow_graphics cd notebooks jupyer notebook
notebooks/mesh_segmentation_demo.ipynbがmesh_segmentationの推論サンプルです。まだ学習側のコードは公開されていませんが、ディープラーニングの応用例が3Dにまで広がっていく未来が楽しみです。
notebooks/spherical harmonics optimization.ipynbが球面調和ライティングの環境マップを計算するサンプルです。TensorFlow Graphicsに含まれる微分可能レンダラーを使用することで、与えられた画像から、環境マップテクスチャを推定します。
学習の推移です。

学習結果のテクスチャです。

TensorFlow Graphicsの概要動画です。
コメント