def get_model(point_cloud, one_hot_vec, is_training, bn_decay=None):
    ' Frustum PointNets model. The model predict 3D object masks and\n    amodel bounding boxes for objects in frustum point clouds.\n\n    Input:\n        point_cloud: TF tensor in shape (B,N,4)\n            frustum point clouds with XYZ and intensity in point channels\n            XYZs are in frustum coordinate\n        one_hot_vec: TF tensor in shape (B,3)\n            length-3 vectors indicating predicted object type\n        is_training: TF boolean scalar\n        bn_decay: TF float scalar\n    Output:\n        end_points: dict (map from name strings to TF tensors)\n    '
    end_points = {}
    (logits, end_points) = get_instance_seg_v1_net(point_cloud, one_hot_vec, is_training, bn_decay, end_points)
    end_points['mask_logits'] = logits
    (object_point_cloud_xyz, mask_xyz_mean, end_points) = point_cloud_masking(point_cloud, logits, end_points)
    (center_delta, end_points) = get_center_regression_net(object_point_cloud_xyz, one_hot_vec, is_training, bn_decay, end_points)
    stage1_center = (center_delta + mask_xyz_mean)
    end_points['stage1_center'] = stage1_center
    object_point_cloud_xyz_new = (object_point_cloud_xyz - tf.expand_dims(center_delta, 1))
    (output, end_points) = get_3d_box_estimation_v1_net(object_point_cloud_xyz_new, one_hot_vec, is_training, bn_decay, end_points)
    end_points = parse_output_to_tensors(output, end_points)
    end_points['center'] = (end_points['center_boxnet'] + stage1_center)
    return end_points
Frustum PointNets model. The model predict 3D object masks and
amodel bounding boxes for objects in frustum point clouds.

Input:
    point_cloud: TF tensor in shape (B,N,4)
        frustum point clouds with XYZ and intensity in point channels
        XYZs are in frustum coordinate
    one_hot_vec: TF tensor in shape (B,3)
        length-3 vectors indicating predicted object type
    is_training: TF boolean scalar
    bn_decay: TF float scalar
Output:
    end_points: dict (map from name strings to TF tensors)
def get_model(point_cloud, one_hot_vec, is_training, bn_decay=None):
    ' Frustum PointNets model. The model predict 3D object masks and\n    amodel bounding boxes for objects in frustum point clouds.\n\n    Input:\n        point_cloud: TF tensor in shape (B,N,4)\n            frustum point clouds with XYZ and intensity in point channels\n            XYZs are in frustum coordinate\n        one_hot_vec: TF tensor in shape (B,3)\n            length-3 vectors indicating predicted object type\n        is_training: TF boolean scalar\n        bn_decay: TF float scalar\n    Output:\n        end_points: dict (map from name strings to TF tensors)\n    '
    end_points = {}
    (logits, end_points) = get_instance_seg_v1_net(point_cloud, one_hot_vec, is_training, bn_decay, end_points)
    end_points['mask_logits'] = logits
    (object_point_cloud_xyz, mask_xyz_mean, end_points) = point_cloud_masking(point_cloud, logits, end_points)
    (center_delta, end_points) = get_center_regression_net(object_point_cloud_xyz, one_hot_vec, is_training, bn_decay, end_points)
    stage1_center = (center_delta + mask_xyz_mean)
    end_points['stage1_center'] = stage1_center
    object_point_cloud_xyz_new = (object_point_cloud_xyz - tf.expand_dims(center_delta, 1))
    (output, end_points) = get_3d_box_estimation_v1_net(object_point_cloud_xyz_new, one_hot_vec, is_training, bn_decay, end_points)
    end_points = parse_output_to_tensors(output, end_points)
    end_points['center'] = (end_points['center_boxnet'] + stage1_center)
    return end_points