tensorboard可视化点云
tensorboard可视化点云
- 用 tensorboard 自带的 add_mesh 方法:支持可视化点云和网格,参考链接:
- 用 open3d 和 tensorboard 连用的方法,支持丰富,但是好像还需要摸索一下,挖个坑,后面详细讨论
但是可视化点云倒是还有其他方法,例如:matplotlib画三维散点图
因为我在服务器上没有可视化界面,所以想着能不能用tensorboard上使用😭
add_mesh方法
add_mesh(tag, vertices, colors=None, faces=None, config_dict=None, global_step=None, walltime=None)
基于Three.js在tensorboard中实现可视化效果,支持point cloud和mesh两种,并且因为是Three.js,所以支持与用户交互,也像使用Three.js一样配置相关的参数:相机参数,光照条件等。可以参照three.js docs网页进行配置。
Parameters:
- tag(string):数据标识,用于显示本可视化内容的标签
- vertices(torch.Tensor) -所有顶点的 3D 坐标。(B,N,3). (batch, number_of_vertices, channels)
- colors(torch.Tensor) -每个顶点的颜色。(可选)(B,N,3). The values should lie in [0, 255] for type uint8 or [0, 1] for type float.
- faces(torch.Tensor) -每个mesh三角形内的顶点索引。 (可选的) (B,N,3). The values should lie in [0, number_of_vertices] for type uint8.
- config_dict-带有Three.js类名称和配置的字典。
- global_step(int) - Global step value to record 在训练过程中使用,标记进度
- walltime(float) - Optional override default walltime (time.time()) seconds after epoch of event (一般不用)
import torch from torch.utils.tensorboard import SummaryWriter import open3d as o3d import numpy as np # get point cloud data point_cloud_path = '/3DMatch_train/7-scenes-chess/01_Data/cloud_bin_0.ply' point_cloud = o3d.io.read_point_cloud(point_cloud_path) # 读取点云数据 points = torch.tensor(np.asarray(point_cloud.points)) # 转换为tensor print(points.shape) writer = SummaryWriter() # visualize the point cloud writer.add_mesh('my_pcd', vertices=points.unsqueeze(0))
效果:
open3d和tensorboard连用
但是我用不了,在服务器上的tensorboard显示不出来open3d的tensorboard插件,可能我安装的有问题
一个小例子,可视化一些简单mesh:因为如上原因没有深究了
import open3d as o3d # Monkey-patch torch.utils.tensorboard.SummaryWriter from open3d.visualization.tensorboard_plugin import summary # Utility function to convert Open3D geometry to a dictionary format from open3d.visualization.tensorboard_plugin.util import to_dict_batch from torch.utils.tensorboard import SummaryWriter cube = o3d.geometry.TriangleMesh.create_box(1, 2, 4) cube.compute_vertex_normals() cylinder = o3d.geometry.TriangleMesh.create_cylinder(radius=1.0, height=2.0, resolution=20, split=4) cylinder.compute_vertex_normals() colors = [(1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0)] logdir = "demo_logs/pytorch/small_scale" writer = SummaryWriter(logdir) for step in range(3): cube.paint_uniform_color(colors[step]) writer.add_3d('cube', to_dict_batch([cube]), step=step) cylinder.paint_uniform_color(colors[step]) writer.add_3d('cylinder', to_dict_batch([cylinder]), step=step)
本文作者:name555difficult
本文链接:https://www.cnblogs.com/name555difficult/p/17605781.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步