github地址
PointNet 官方使用了 tensorflow
介绍
组成
1.PointNet classification network分类网络
part segmentation network
数据集
1.point clouds sampled from 3D shapes
2.ShapeNetPart dataset.
结构
其主要分成以下三部分:
数据处理
model构建
结果选择
数据处理
将点云处理成程序可用的格式,具体实现在 provider.py 中,主要包含了数据下载、预处理(shuffle->rotate->jitter)、格式转换(hdf5->txt)
shuffle
def shuffle_data(data, labels):
""" Shuffle data and labels.
Input:
data: B,N,... numpy array
label: B,... numpy array
Return:
shuffled data, label and shuffle indices
"""
idx = np.arange(len(labels))#返回一个列表
# print('idx=',idx)#idx= [ 0 1 2 ... 2045 2046 2047]
np.random.shuffle(idx)#把idx进行shuffle
# print('idx=', idx)
return data[idx, ...], labels[idx], idx
rotate旋转处理
def rotate_point_cloud(batch_data):
# print('batch data shape=',batch_data.shape)#(32, 1024, 3)
rotated_data = np.zeros(batch_data.shape, dtype=np.float32)
for k in range(batch_data.shape[0]):
rotation_angle = np.random.uniform() * 2 * np.pi#生成一个随机数
cosval = np.cos(rotation_angle)</