voxelization
接口原型
mx_driving.Voxelization(Tensor points, List[float] voxel_size, List[float] coors_range, int max_points=-1, int max_voxels=-1, bool deterministic=True, str layout="XYZ") -> Tensor
功能描述
将点云数据进行体素化。
参数说明
points(Tensor):点云数据,数据类型为float32。shape为[N, F]。其中N为点的数量,F分别代表每个点的特征维度,其中N > 0, F >= 3。voxel_size(List[float]):体素大小,数据类型为float32。shape为[3]。其中3分别代表x, y, z。coors_range(List[float]):体素范围,数据类型为float32。shape为[6]。其中6分别代表x_min, y_min, z_min, x_max, y_max, z_max。max_points(int):每个体素的最大点数。默认值为-1。max_points<=1000。max_voxels(int):最大体素数。默认值为-1。deterministic(bool):是否确定性。默认值为True。layout(str): 体素坐标的排序方式,默认值为XYZ。替换MMCV算子时使用ZYX,替换mmdetection3d算子时使用XYZ。
API语义
当max_points=-1或max_voxels=-1时,进行dynamic_voxelize计算,否则进行hard_voxelize。
返回值
进行dynamic_voxelize计算时:
coors(Tensor):每个点所属的体素坐标,数据类型为int32。shape为[N, 3]。
进行hard_voxelize计算时:
voxel_num(int):去重后的体素数量。vox_points(Tensor):每个体素对应的点云数据,数据类型为float32。shape为[voxel_num, max_points, F]。coors(Tensor):去重后的体素坐标,数据类型为int32。shape为[voxel_num, 3]。num_points_per_voxel(Tensor):每个体素的点云数量,数据类型为int32。shape为[voxel_num]。
支持的型号
Atlas A2 训练系列产品
调用示例
import torch, torch_npu
from mx_driving import Voxelization
voxel_size = [0.5, 0.5, 0.5]
point_cloud_range = [0, -40, -3, 70.4, 0, 9]
max_num_points = -1
max_voxels = 3500
vlz = Voxelization(voxel_size, point_cloud_range, max_num_points, max_voxels)
points = torch.rand(16, 3, dtype = torch.float32).npu()
results = vlz(points)