グラフィックスの微分可能なレイヤ。

import numpy as np
import tensorflow as tf
import trimesh

import tensorflow_graphics.geometry.transformation as tfg_transformation
from tensorflow_graphics.notebooks import threejs_visualization

# Download the mesh.
!wget https://storage.googleapis.com/tensorflow-graphics/notebooks/index/cow.obj
# Load the mesh.
mesh = trimesh.load("cow.obj")
mesh = {"vertices": mesh.vertices, "faces": mesh.faces}
# Visualize the original mesh.
threejs_visualization.triangular_mesh_renderer(mesh, width=400, height=400)
# Set the axis and angle parameters.
axis = np.array((0., 1., 0.))  # y axis.
angle = np.array((np.pi / 4.,))  # 45 degree angle.
# Rotate the mesh.
mesh["vertices"] = tfg_transformation.axis_angle.rotate(mesh["vertices"], axis,
                                                        angle).numpy()
# Visualize the rotated mesh.
threejs_visualization.triangular_mesh_renderer(mesh, width=400, height=400)
TensorFlow Graphics は、さまざまな機械学習モデルで使用できる微分可能なグラフィックス レイヤ(例: カメラ、反射モデル、メッシュ畳み込み)と 3D ビューア機能(例: 3D TensorBoard )のセットを提供することで、便利なグラフィックス機能をコミュニティが広く利用できるようにすることを目的としています。

ここ数年、ニューラル ネットワーク アーキテクチャに挿入できる新しい微分可能なグラフィクス レイヤが増加しています。空間変換や微分可能なグラフィックス レンダリングなどのこれらの新しいレイヤでは、新しい効率的なネットワーク アーキテクチャの構築を目的としたコンピュータ ビジョンとグラフィックスに関する長年の研究で得られた知識が活用されています。幾何学的な事前分布と制約を機械学習モデルに明示的にモデル化することで、効率性と安定性を高めつつ、自己教師あり学習によるトレーニングが行えるアーキテクチャが実現しつつあります。

開始にあたっては、概要インストール ガイドAPI で詳細についてご覧ください。