Plug-in de malha

Visão geral

Malhas e nuvens de pontos são tipos de dados importantes e poderosos para representar formas 3D e amplamente estudados na área de visão computacional e computação gráfica. Os dados 3D estão se tornando mais onipresentes e os pesquisadores desafiam novos problemas, como reconstrução de geometria 3D a partir de dados 2D, segmentação semântica de nuvem de pontos 3D, alinhamento ou transformação de objetos 3D e assim por diante. Portanto, visualizar os resultados, principalmente durante a fase de treinamento, é fundamental para entender melhor o desempenho do modelo.

Plug-in de malha no TensorBoard {largura="100%"}

Este plugin pretende exibir nuvens de pontos 3D ou malhas (nuvens de pontos trianguladas) no TensorBoard. Além disso, permite ao usuário interagir com os objetos renderizados.

API de resumo

Tanto uma malha quanto uma nuvem de pontos podem ser representadas por um conjunto de tensores. Por exemplo, pode-se ver uma nuvem de pontos como um conjunto de coordenadas 3D dos pontos e algumas cores associadas a cada ponto.

from tensorboard.plugins.mesh import summary as mesh_summary
...

point_cloud = tf.constant([[[0.19, 0.78, 0.02], ...]], shape=[1, 1064, 3])
point_colors = tf.constant([[[128, 104, 227], ...]], shape=[1, 1064, 3])

summary = mesh_summary.op('point_cloud', vertices=point_cloud, colors=point_colors)

NOTA o tensor colors é opcional neste caso, mas pode ser útil para mostrar diferentes semânticas dos pontos.

O plugin atualmente suporta apenas malhas triangulares que se diferenciam das nuvens de pontos acima apenas pela presença de faces – conjunto de vértices que representam o triângulo na malha.

mesh = tf.constant([[[0.19, 0.78, 0.02], ...]], shape=[1, 1064, 3])
colors = tf.constant([[[128, 104, 227], ...]], shape=[1, 1064, 3])
faces = tf.constant([[[13, 78, 54], ...]], shape=[1, 752, 3])

summary = mesh_summary.op('mesh', vertices=mesh, colors=colors, faces=faces)

Apenas o tensor colors é opcional para resumos de malha.

Configuração de cena

A forma como os objetos serão exibidos também depende da configuração da cena, ou seja, intensidade e cor das fontes de luz, material dos objetos, modelos de câmeras e assim por diante. Tudo isso pode ser configurado através de um parâmetro adicional config_dict . Este dicionário pode conter três chaves de alto nível: camera , lights e material . Cada chave também deve ser um dicionário com chave obrigatória cls , representando o nome válido da classe THREE.js .

camera_config = {'cls': 'PerspectiveCamera'}
summary = mesh_summary.op(
    "mesh",
    vertices=mesh,
    colors=colors,
    faces=faces,
    config_dict={"camera": camera_config},
)

camera_config do trecho acima pode ser expandido de acordo com a documentação do THREE.js . Todas as chaves de camera_config serão passadas para uma classe com o nome camera_config.cls . Por exemplo (com base na documentação da PerspectiveCamera ):

camera_config = {
  'cls': 'PerspectiveCamera',
  'fov': 75,
  'aspect': 0.9,
}
...

Lembre-se de que a configuração da cena não é uma variável treinável (ou seja, estática) e deve ser fornecida apenas durante a criação dos resumos.

Como instalar

Atualmente o plugin faz parte do build noturno do TensorBoard, portanto você deve instalá-lo antes de usar o plugin.

Colab

pip install -q -U tb-nightly

Em seguida, carregue a extensão Tensorboard e execute-a, da mesma forma que faria no Terminal:

%load_ext tensorboard
%tensorboard --logdir=/path/to/logs

Consulte o exemplo do notebook Colab para obter mais detalhes.

terminal

Se você deseja executar o build noturno do TensorBoard localmente, primeiro você precisa instalá-lo:

pip install tf-nightly

Depois é só executá-lo:

tensorboard --logdir path/to/logs