Pointnet_Pointnet2_pytorch
Pointnet_Pointnet2_pytorch copied to clipboard
`np.random.choice` in preprocess has impact prediction results?
I trained and tested myself data, I found a problem that preprocessing the data with "random. Choice" has a great impact on the results . I know that 'farthest_point_sample' function will have an impact on the seed point, but this impact on result is too great to be ignored.
preprocess_datafunction
def process_data(self, data_path):
ext = os.path.splitext(data_path)[-1]
data = None
if ext == ".txt":
data = np.loadtxt(data_path).astype(np.float32)
elif ext == ".pcd":
data = np.loadtxt(data_path, skiprows=10).astype(np.float32)
if data is None:
return
if not self.use_normal:
point_set = data[:, 0:3]
else:
point_set = data[:, 0:6]
point_set[:, 0:3] = pc_normalize(point_set[:, 0:3])
# choice = np.random.choice(range(0, len(point_set)), len(point_set), replace=False)
# point_set = point_set[choice, :]
point_set = np.expand_dims(point_set, axis=0)
return torch.from_numpy(point_set)
- the main function:
if __name__ == "__main__":
model_name = "pointnet2_part_seg_msg"
model_path = "log/part_seg/pointnet2_part_seg_msg/checkpoints/best_model.pth"
data_path = r"D:\Debug_dir\pcd_with_label_normal\test.pcd"
model_type = "part" if model_name.find("part") != -1 else "sem"
inference = InferenceClass(model_name, model_path, model_type, use_normal=False, use_gpu=True)
use_datasets = False
res = inference.inference(data_path, use_datasets, "test_all")
diff_label = np.unique(res )
print("res_label: ", diff_label)
- inference result
Comment
choiceon process_data function and the result is bad

Uncomment choice on process_data function and the rusult is good
