Дифференцируемые слои для графики.

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 TensorBoard), которые можно использовать в ваших моделях машинного обучения. выбор.

В последние несколько лет наблюдается рост новых дифференцируемых графических слоев, которые можно вставлять в архитектуры нейронных сетей. Эти новые уровни, от пространственных преобразователей до дифференцируемых графических рендереров, используют знания, полученные за годы исследований компьютерного зрения и графики, для создания новых и более эффективных сетевых архитектур. Явное моделирование геометрических априорных значений и ограничений в моделях машинного обучения открывает двери для архитектур, которые можно обучать надежно, эффективно и, что более важно, с самоконтролем.

Для начала ознакомьтесь с более подробным обзором , руководством по установке и API .