该数据集的目的是提供一种简单的方法来开始3D计算机视觉问题,如3D形状识别。
该数据集包含从MNIST数据集的原始图像生成的3D点云,以便为用于处理2D数据集(图像)的人员提供熟悉的3D介绍。
在3D_from_2D笔记本中,您可以找到用于生成数据集的代码。
您可以使用笔记本中的代码从原始数据集生成更大的3D数据集。
内容
full_dataset_vectors.h5
整个数据集存储为从所有3D点云的体素化(x:16,y:16,z:16)获得的4096-D向量。
在原始点云的作用下,它包含带噪声的随机旋转副本。
完整数据集被拆分为数组:
- X_train(10000,4096)
- y_train(10000)
- X_test(2000,4096)
- y_test(2000)
读取完整数据集的示例python代码:
with h5py.File("../input/train_point_clouds.h5", "r") as hf: X_train = hf["X_train"][:] y_train = hf["y_train"][:] X_test = hf["X_test"][:] y_test = hf["y_test"][:]
train_point_clouds.h5&test_point_clouds.h5
5000(火车)和1000(测试)3D点云以HDF5文件格式存储。点云的平均值为零,最大维度范围为1。
每个文件分为HDF5组
每个组在原始mnist数据集中被命名为其对应的数组索引,它包含:
- “点”数据集:x, y, z点云中每个3D点的坐标。
- “法线”数据集:nx, ny, nz单位正常的组件与每个点相关联。
- “img”数据集:原始的mnist图像。
- “label”属性:原始的mnist标签。
示例python代码读取2位数并将一些组内容存储在元组中:
with h5py.File("../input/train_point_clouds.h5", "r") as hf: a = hf["0"] b = hf["1"] digit_a = (a["img"][:], a["points"][:], a.attrs["label"]) digit_b = (b["img"][:], b["points"][:], b.attrs["label"])
voxelgrid.py
简单的Python类,从3D点云生成体素网格。检查内核是否使用。
plot3D.py
具有在jupyter笔记本内绘制点云和voxelgrid的功能的模块。由于Kaggle的笔记本缺乏对呈现Iframe的支持,你必须在本地运行。
功能包括:
-
array_to_color 将1D数组转换为rgb值,color在plot_points()中用作kwarg
-
plot_points(xyz, colors=None, size=0.1, axis=False)
-
plot_voxelgrid(v_grid, cmap="Oranges", axis=False)