归一化的作用:
数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解
点云的归一化:
参考自pointnet的源码,增加了注释:
def pc_normalize(pc):
"""
对点云数据进行归一化
:param pc: 需要归一化的点云数据
:return: 归一化后的点云数据
"""
# 求质心,也就是一个平移量,实际上就是求均值
centroid = np.mean(pc, axis=0)
pc = pc - centroid
m = np.max(np.sqrt(np.sum(pc ** 2, axis=1)))
# 对点云进行缩放
pc = pc / m
return pc
参数解析(参考自numpy源码):
def np.mean(a, axis=None, dtype=None, out=None, keepdims=np._NoValue, *,
where=np._NoValue):
"""
沿指定轴计算算术平均值
Parameters:
a:需要计算的点云数据
axis:指定轴
axis=0:对a数组的每列求平均值
axis=1:对a数组的每行求平均值
"""
点云的反归一化:
由于点云的归一化操作,会使得PointNet预测的结果比原始点云尺寸不同,为了恢复原始大小,可以将预测得到的点云进行反归一化,即使得到的点云乘上缩放尺寸m,再加上平移尺寸centroid。
ret = pred × m + centroid
效果展示
引用: