├── pcdet ├── ops │ ├── __init__.py │ ├── iou3d_nms │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── iou3d_nms_utils.cpython-37.pyc │ │ │ └── iou3d_nms_utils.cpython-38.pyc │ │ └── src │ │ │ ├── iou3d_cpu.h │ │ │ ├── iou3d_nms.h │ │ │ └── iou3d_nms_api.cpp │ ├── pointnet2 │ │ ├── __init__.py │ │ ├── pointnet2_batch │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ ├── pointnet2_utils.cpython-37.pyc │ │ │ │ ├── pointnet2_utils.cpython-38.pyc │ │ │ │ ├── pointnet2_modules.cpython-37.pyc │ │ │ │ └── pointnet2_modules.cpython-38.pyc │ │ │ └── src │ │ │ │ ├── cuda_utils.h │ │ │ │ ├── ball_query_gpu.h │ │ │ │ ├── group_points_gpu.h │ │ │ │ ├── sampling_gpu.h │ │ │ │ ├── interpolate_gpu.h │ │ │ │ ├── pointnet2_api.cpp │ │ │ │ ├── group_points.cpp │ │ │ │ ├── ball_query.cpp │ │ │ │ ├── sampling.cpp │ │ │ │ ├── interpolate.cpp │ │ │ │ └── ball_query_gpu.cu │ │ ├── pointnet2_stack │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ ├── pointnet2_utils.cpython-37.pyc │ │ │ │ ├── pointnet2_utils.cpython-38.pyc │ │ │ │ ├── pointnet2_modules.cpython-37.pyc │ │ │ │ ├── pointnet2_modules.cpython-38.pyc │ │ │ │ ├── voxel_pool_modules.cpython-37.pyc │ │ │ │ ├── voxel_pool_modules.cpython-38.pyc │ │ │ │ ├── voxel_query_utils.cpython-37.pyc │ │ │ │ └── voxel_query_utils.cpython-38.pyc │ │ │ └── src │ │ │ │ ├── cuda_utils.h │ │ │ │ ├── voxel_query_gpu.h │ │ │ │ ├── sampling_gpu.h │ │ │ │ ├── ball_query_gpu.h │ │ │ │ ├── group_points_gpu.h │ │ │ │ ├── interpolate_gpu.h │ │ │ │ ├── voxel_query.cpp │ │ │ │ ├── ball_query.cpp │ │ │ │ ├── pointnet2_api.cpp │ │ │ │ └── sampling.cpp │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ └── __init__.cpython-38.pyc │ ├── roiaware_pool3d │ │ ├── __init__.py │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── roiaware_pool3d_utils.cpython-37.pyc │ │ │ └── roiaware_pool3d_utils.cpython-38.pyc │ ├── roipoint_pool3d │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── roipoint_pool3d_utils.cpython-37.pyc │ │ │ └── roipoint_pool3d_utils.cpython-38.pyc │ │ ├── src │ │ │ └── roipoint_pool3d.cpp │ │ └── roipoint_pool3d_utils.py │ ├── knn │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── knn.cpython-38.pyc │ │ │ └── __init__.cpython-38.pyc │ │ ├── src │ │ │ └── knn.cpp │ │ └── setup.py │ ├── rotated_iou │ │ ├── cuda_op │ │ │ ├── sort_vertices.egg-info │ │ │ │ ├── dependency_links.txt │ │ │ │ ├── top_level.txt │ │ │ │ ├── PKG-INFO │ │ │ │ └── SOURCES.txt │ │ │ ├── __pycache__ │ │ │ │ ├── cuda_ext.cpython-37.pyc │ │ │ │ └── cuda_ext.cpython-38.pyc │ │ │ ├── dist │ │ │ │ ├── sort_vertices-0.0.0-py3.7-linux-x86_64.egg │ │ │ │ └── sort_vertices-0.0.0-py3.8-linux-x86_64.egg │ │ │ ├── sort_vert.h │ │ │ ├── setup.py │ │ │ ├── cuda_ext.py │ │ │ ├── sort_vert.cpp │ │ │ ├── cuda_utils.h │ │ │ └── utils.h │ │ ├── __init__.py │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── min_enclosing_box.cpython-37.pyc │ │ │ ├── min_enclosing_box.cpython-38.pyc │ │ │ ├── oriented_iou_loss.cpython-37.pyc │ │ │ ├── oriented_iou_loss.cpython-38.pyc │ │ │ ├── box_intersection_2d.cpython-37.pyc │ │ │ └── box_intersection_2d.cpython-38.pyc │ └── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── __init__.cpython-38.pyc ├── utils │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── __init__.cpython-38.pyc │ │ ├── box_utils.cpython-37.pyc │ │ ├── box_utils.cpython-38.pyc │ │ ├── iou3d_loss.cpython-37.pyc │ │ ├── iou3d_loss.cpython-38.pyc │ │ ├── loss_utils.cpython-37.pyc │ │ ├── loss_utils.cpython-38.pyc │ │ ├── common_utils.cpython-37.pyc │ │ ├── common_utils.cpython-38.pyc │ │ ├── commu_utils.cpython-37.pyc │ │ ├── commu_utils.cpython-38.pyc │ │ ├── spconv_utils.cpython-37.pyc │ │ ├── spconv_utils.cpython-38.pyc │ │ ├── box_coder_utils.cpython-37.pyc │ │ ├── box_coder_utils.cpython-38.pyc │ │ ├── object3d_kitti.cpython-37.pyc │ │ ├── object3d_kitti.cpython-38.pyc │ │ ├── transform_utils.cpython-37.pyc │ │ ├── transform_utils.cpython-38.pyc │ │ ├── calibration_kitti.cpython-37.pyc │ │ └── calibration_kitti.cpython-38.pyc │ └── spconv_utils.py ├── datasets │ ├── kitti │ │ ├── __init__.py │ │ ├── kitti_object_eval_python │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ ├── rotate_iou.cpython-37.pyc │ │ │ │ └── rotate_iou.cpython-38.pyc │ │ │ ├── evaluate.py │ │ │ ├── LICENSE │ │ │ └── README.md │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── kitti_utils.cpython-37.pyc │ │ │ ├── kitti_utils.cpython-38.pyc │ │ │ ├── kitti_dataset.cpython-37.pyc │ │ │ └── kitti_dataset.cpython-38.pyc │ ├── lyft │ │ ├── __init__.py │ │ ├── lyft_mAP_eval │ │ │ └── __init__.py │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── lyft_dataset.cpython-37.pyc │ │ │ └── lyft_dataset.cpython-38.pyc │ ├── waymo │ │ ├── __init__.py │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── waymo_dataset.cpython-37.pyc │ │ │ └── waymo_dataset.cpython-38.pyc │ ├── augmentor │ │ ├── __init__.py │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── data_augmentor.cpython-37.pyc │ │ │ ├── data_augmentor.cpython-38.pyc │ │ │ ├── augmentor_utils.cpython-37.pyc │ │ │ ├── augmentor_utils.cpython-38.pyc │ │ │ ├── database_sampler.cpython-37.pyc │ │ │ └── database_sampler.cpython-38.pyc │ ├── nuscenes │ │ ├── __init__.py │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── nuscenes_dataset.cpython-37.pyc │ │ │ └── nuscenes_dataset.cpython-38.pyc │ ├── pandaset │ │ ├── __init__.py │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── pandaset_dataset.cpython-37.pyc │ │ │ └── pandaset_dataset.cpython-38.pyc │ ├── processor │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── data_processor.cpython-37.pyc │ │ │ ├── data_processor.cpython-38.pyc │ │ │ ├── point_feature_encoder.cpython-37.pyc │ │ │ └── point_feature_encoder.cpython-38.pyc │ │ └── point_feature_encoder.py │ ├── scannet │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── scannet_dataset.cpython-37.pyc │ │ │ └── scannet_dataset.cpython-38.pyc │ │ └── scannet_object_eval_python │ │ │ └── __pycache__ │ │ │ └── eval.cpython-38.pyc │ ├── sunrgbd │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── sunrgbd_dataset.cpython-37.pyc │ │ │ └── sunrgbd_dataset.cpython-38.pyc │ │ └── sunrgbd_object_eval_python │ │ │ └── __pycache__ │ │ │ ├── eval.cpython-37.pyc │ │ │ └── eval.cpython-38.pyc │ └── __pycache__ │ │ ├── dataset.cpython-37.pyc │ │ ├── dataset.cpython-38.pyc │ │ ├── __init__.cpython-37.pyc │ │ └── __init__.cpython-38.pyc ├── models │ ├── model_utils │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── rbgnet_utils.cpython-37.pyc │ │ │ ├── rbgnet_utils.cpython-38.pyc │ │ │ ├── vote_module.cpython-37.pyc │ │ │ ├── vote_module.cpython-38.pyc │ │ │ ├── basic_block_2d.cpython-37.pyc │ │ │ ├── basic_block_2d.cpython-38.pyc │ │ │ ├── cagroup_utils.cpython-37.pyc │ │ │ ├── cagroup_utils.cpython-38.pyc │ │ │ ├── centernet_utils.cpython-37.pyc │ │ │ ├── centernet_utils.cpython-38.pyc │ │ │ ├── model_nms_utils.cpython-37.pyc │ │ │ └── model_nms_utils.cpython-38.pyc │ │ └── basic_block_2d.py │ ├── dense_heads │ │ ├── target_assigner │ │ │ ├── __init__.py │ │ │ └── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ ├── anchor_generator.cpython-37.pyc │ │ │ │ ├── anchor_generator.cpython-38.pyc │ │ │ │ ├── cagroup3d_assigner.cpython-37.pyc │ │ │ │ ├── cagroup3d_assigner.cpython-38.pyc │ │ │ │ ├── atss_target_assigner.cpython-37.pyc │ │ │ │ ├── atss_target_assigner.cpython-38.pyc │ │ │ │ ├── axis_aligned_target_assigner.cpython-37.pyc │ │ │ │ └── axis_aligned_target_assigner.cpython-38.pyc │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── rbg_head.cpython-37.pyc │ │ │ ├── rbg_head.cpython-38.pyc │ │ │ ├── cagroup_head.cpython-37.pyc │ │ │ ├── cagroup_head.cpython-38.pyc │ │ │ ├── center_head.cpython-37.pyc │ │ │ ├── center_head.cpython-38.pyc │ │ │ ├── point_head_box.cpython-37.pyc │ │ │ ├── point_head_box.cpython-38.pyc │ │ │ ├── anchor_head_multi.cpython-37.pyc │ │ │ ├── anchor_head_multi.cpython-38.pyc │ │ │ ├── point_head_simple.cpython-37.pyc │ │ │ ├── point_head_simple.cpython-38.pyc │ │ │ ├── anchor_head_single.cpython-37.pyc │ │ │ ├── anchor_head_single.cpython-38.pyc │ │ │ ├── point_head_template.cpython-37.pyc │ │ │ ├── point_head_template.cpython-38.pyc │ │ │ ├── anchor_head_template.cpython-37.pyc │ │ │ ├── anchor_head_template.cpython-38.pyc │ │ │ ├── point_intra_part_head.cpython-37.pyc │ │ │ └── point_intra_part_head.cpython-38.pyc │ │ └── __init__.py │ ├── roi_heads │ │ ├── target_assigner │ │ │ ├── __init__.py │ │ │ └── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ ├── proposal_target_layer.cpython-37.pyc │ │ │ │ ├── proposal_target_layer.cpython-38.pyc │ │ │ │ ├── cagroup_proposal_target_layer.cpython-37.pyc │ │ │ │ └── cagroup_proposal_target_layer.cpython-38.pyc │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── partA2_head.cpython-37.pyc │ │ │ ├── partA2_head.cpython-38.pyc │ │ │ ├── pvrcnn_head.cpython-37.pyc │ │ │ ├── pvrcnn_head.cpython-38.pyc │ │ │ ├── second_head.cpython-37.pyc │ │ │ ├── second_head.cpython-38.pyc │ │ │ ├── pointrcnn_head.cpython-37.pyc │ │ │ ├── pointrcnn_head.cpython-38.pyc │ │ │ ├── voxelrcnn_head.cpython-37.pyc │ │ │ ├── voxelrcnn_head.cpython-38.pyc │ │ │ ├── cagroup_roi_head.cpython-37.pyc │ │ │ ├── cagroup_roi_head.cpython-38.pyc │ │ │ ├── roi_head_template.cpython-37.pyc │ │ │ └── roi_head_template.cpython-38.pyc │ │ └── __init__.py │ ├── backbones_3d │ │ ├── vfe │ │ │ ├── image_vfe_modules │ │ │ │ ├── __init__.py │ │ │ │ ├── ffn │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── ddn_loss │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── __pycache__ │ │ │ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ │ │ │ ├── balancer.cpython-37.pyc │ │ │ │ │ │ │ ├── balancer.cpython-38.pyc │ │ │ │ │ │ │ ├── ddn_loss.cpython-37.pyc │ │ │ │ │ │ │ └── ddn_loss.cpython-38.pyc │ │ │ │ │ │ └── balancer.py │ │ │ │ │ ├── ddn │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ ├── __pycache__ │ │ │ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ │ │ │ ├── ddn_deeplabv3.cpython-37.pyc │ │ │ │ │ │ │ ├── ddn_deeplabv3.cpython-38.pyc │ │ │ │ │ │ │ ├── ddn_template.cpython-37.pyc │ │ │ │ │ │ │ └── ddn_template.cpython-38.pyc │ │ │ │ │ │ └── ddn_deeplabv3.py │ │ │ │ │ └── __pycache__ │ │ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ │ │ ├── depth_ffn.cpython-37.pyc │ │ │ │ │ │ └── depth_ffn.cpython-38.pyc │ │ │ │ ├── f2v │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── __pycache__ │ │ │ │ │ │ ├── sampler.cpython-37.pyc │ │ │ │ │ │ ├── sampler.cpython-38.pyc │ │ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ │ │ ├── frustum_to_voxel.cpython-37.pyc │ │ │ │ │ │ ├── frustum_to_voxel.cpython-38.pyc │ │ │ │ │ │ ├── frustum_grid_generator.cpython-37.pyc │ │ │ │ │ │ └── frustum_grid_generator.cpython-38.pyc │ │ │ │ │ └── sampler.py │ │ │ │ └── __pycache__ │ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ │ └── __init__.cpython-38.pyc │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ ├── image_vfe.cpython-37.pyc │ │ │ │ ├── image_vfe.cpython-38.pyc │ │ │ │ ├── mean_vfe.cpython-37.pyc │ │ │ │ ├── mean_vfe.cpython-38.pyc │ │ │ │ ├── pillar_vfe.cpython-37.pyc │ │ │ │ ├── pillar_vfe.cpython-38.pyc │ │ │ │ ├── vfe_template.cpython-37.pyc │ │ │ │ ├── vfe_template.cpython-38.pyc │ │ │ │ ├── dynamic_mean_vfe.cpython-37.pyc │ │ │ │ ├── dynamic_mean_vfe.cpython-38.pyc │ │ │ │ ├── dynamic_pillar_vfe.cpython-37.pyc │ │ │ │ └── dynamic_pillar_vfe.cpython-38.pyc │ │ │ ├── __init__.py │ │ │ ├── vfe_template.py │ │ │ └── mean_vfe.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── biresnet.cpython-37.pyc │ │ │ ├── biresnet.cpython-38.pyc │ │ │ ├── spconv_unet.cpython-37.pyc │ │ │ ├── spconv_unet.cpython-38.pyc │ │ │ ├── spconv_backbone.cpython-37.pyc │ │ │ ├── spconv_backbone.cpython-38.pyc │ │ │ ├── pointnet2_backbone.cpython-37.pyc │ │ │ ├── pointnet2_backbone.cpython-38.pyc │ │ │ ├── pointnet2_fbs_backbone.cpython-37.pyc │ │ │ └── pointnet2_fbs_backbone.cpython-38.pyc │ │ ├── pfe │ │ │ ├── __init__.py │ │ │ └── __pycache__ │ │ │ │ ├── __init__.cpython-37.pyc │ │ │ │ ├── __init__.cpython-38.pyc │ │ │ │ ├── voxel_set_abstraction.cpython-37.pyc │ │ │ │ └── voxel_set_abstraction.cpython-38.pyc │ │ └── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── __init__.cpython-38.pyc │ ├── backbones_2d │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── base_bev_backbone.cpython-37.pyc │ │ │ └── base_bev_backbone.cpython-38.pyc │ │ └── map_to_bev │ │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── conv2d_collapse.cpython-37.pyc │ │ │ ├── conv2d_collapse.cpython-38.pyc │ │ │ ├── height_compression.cpython-37.pyc │ │ │ ├── height_compression.cpython-38.pyc │ │ │ ├── pointpillar_scatter.cpython-37.pyc │ │ │ └── pointpillar_scatter.cpython-38.pyc │ │ │ ├── __init__.py │ │ │ ├── height_compression.py │ │ │ ├── conv2d_collapse.py │ │ │ └── pointpillar_scatter.py │ ├── detectors │ │ ├── __pycache__ │ │ │ ├── caddn.cpython-37.pyc │ │ │ ├── caddn.cpython-38.pyc │ │ │ ├── rbgnet.cpython-37.pyc │ │ │ ├── rbgnet.cpython-38.pyc │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── cagroup3d.cpython-37.pyc │ │ │ ├── cagroup3d.cpython-38.pyc │ │ │ ├── pv_rcnn.cpython-37.pyc │ │ │ ├── pv_rcnn.cpython-38.pyc │ │ │ ├── PartA2_net.cpython-37.pyc │ │ │ ├── PartA2_net.cpython-38.pyc │ │ │ ├── centerpoint.cpython-37.pyc │ │ │ ├── centerpoint.cpython-38.pyc │ │ │ ├── point_rcnn.cpython-37.pyc │ │ │ ├── point_rcnn.cpython-38.pyc │ │ │ ├── pointpillar.cpython-37.pyc │ │ │ ├── pointpillar.cpython-38.pyc │ │ │ ├── second_net.cpython-37.pyc │ │ │ ├── second_net.cpython-38.pyc │ │ │ ├── voxel_rcnn.cpython-37.pyc │ │ │ ├── voxel_rcnn.cpython-38.pyc │ │ │ ├── second_net_iou.cpython-37.pyc │ │ │ ├── second_net_iou.cpython-38.pyc │ │ │ ├── pv_rcnn_plusplus.cpython-37.pyc │ │ │ ├── pv_rcnn_plusplus.cpython-38.pyc │ │ │ ├── detector3d_template.cpython-37.pyc │ │ │ └── detector3d_template.cpython-38.pyc │ │ ├── point_rcnn.py │ │ ├── second_net.py │ │ ├── pointpillar.py │ │ ├── voxel_rcnn.py │ │ ├── pv_rcnn.py │ │ ├── __init__.py │ │ ├── PartA2_net.py │ │ ├── caddn.py │ │ ├── centerpoint.py │ │ └── pv_rcnn_plusplus.py │ └── __init__.py ├── version.py ├── __pycache__ │ ├── config.cpython-37.pyc │ ├── config.cpython-38.pyc │ ├── __init__.cpython-37.pyc │ ├── __init__.cpython-38.pyc │ ├── version.cpython-37.pyc │ └── version.cpython-38.pyc └── __init__.py ├── pcdet.egg-info ├── top_level.txt ├── dependency_links.txt ├── requires.txt └── PKG-INFO ├── tools ├── _init_path.py ├── __pycache__ │ ├── test.cpython-37.pyc │ ├── test.cpython-38.pyc │ ├── _init_path.cpython-37.pyc │ └── _init_path.cpython-38.pyc ├── eval_utils │ └── __pycache__ │ │ ├── eval_utils.cpython-37.pyc │ │ └── eval_utils.cpython-38.pyc ├── train_utils │ ├── __pycache__ │ │ ├── log_buffer.cpython-38.pyc │ │ ├── train_utils.cpython-37.pyc │ │ └── train_utils.cpython-38.pyc │ ├── optimization │ │ └── __pycache__ │ │ │ ├── __init__.cpython-37.pyc │ │ │ ├── __init__.cpython-38.pyc │ │ │ ├── fastai_optim.cpython-37.pyc │ │ │ ├── fastai_optim.cpython-38.pyc │ │ │ ├── learning_schedules_fastai.cpython-37.pyc │ │ │ └── learning_schedules_fastai.cpython-38.pyc │ └── log_buffer.py ├── scripts │ ├── slurm_test_single.sh │ ├── torch_train.sh │ ├── dist_test.sh │ ├── dist_train.sh │ ├── slurm_test_mgpu.sh │ └── slurm_train.sh └── cfgs │ └── dataset_configs │ ├── sunrgbd_dataset.yaml │ ├── kitti_dataset.yaml │ ├── scannet_dataset.yaml │ ├── lyft_dataset.yaml │ ├── nuscenes_dataset.yaml │ └── waymo_dataset.yaml ├── CAGroup3D.jpg ├── docs ├── demo.png ├── open_mmlab.png ├── model_framework.png ├── dataset_vs_model.png ├── multiple_models_demo.png └── INSTALL.md ├── requirements.txt └── data └── lyft └── ImageSets └── val.txt /pcdet/ops/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/datasets/kitti/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/datasets/lyft/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/datasets/waymo/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/ops/iou3d_nms/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet.egg-info/top_level.txt: -------------------------------------------------------------------------------- 1 | pcdet 2 | -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/datasets/nuscenes/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/datasets/pandaset/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/datasets/processor/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/datasets/scannet/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/datasets/sunrgbd/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/models/model_utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/ops/roiaware_pool3d/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/ops/roipoint_pool3d/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet.egg-info/dependency_links.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /pcdet/datasets/lyft/lyft_mAP_eval/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/models/roi_heads/target_assigner/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/version.py: -------------------------------------------------------------------------------- 1 | __version__ = "0.5.2+0000000" 2 | -------------------------------------------------------------------------------- /pcdet/datasets/kitti/kitti_object_eval_python/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tools/_init_path.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.insert(0, '../') -------------------------------------------------------------------------------- /pcdet/ops/knn/__init__.py: -------------------------------------------------------------------------------- 1 | from .knn import knn 2 | 3 | __all__ = ['knn'] 4 | -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/sort_vertices.egg-info/dependency_links.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /CAGroup3D.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/CAGroup3D.jpg -------------------------------------------------------------------------------- /docs/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/docs/demo.png -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/sort_vertices.egg-info/top_level.txt: -------------------------------------------------------------------------------- 1 | sort_vertices 2 | -------------------------------------------------------------------------------- /docs/open_mmlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/docs/open_mmlab.png -------------------------------------------------------------------------------- /docs/model_framework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/docs/model_framework.png -------------------------------------------------------------------------------- /docs/dataset_vs_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/docs/dataset_vs_model.png -------------------------------------------------------------------------------- /docs/multiple_models_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/docs/multiple_models_demo.png -------------------------------------------------------------------------------- /pcdet/__pycache__/config.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/__pycache__/config.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/__pycache__/config.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/__pycache__/config.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/sort_vertices.egg-info/PKG-INFO: -------------------------------------------------------------------------------- 1 | Metadata-Version: 2.1 2 | Name: sort-vertices 3 | Version: 0.0.0 4 | -------------------------------------------------------------------------------- /tools/__pycache__/test.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/__pycache__/test.cpython-37.pyc -------------------------------------------------------------------------------- /tools/__pycache__/test.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/__pycache__/test.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/__pycache__/version.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/__pycache__/version.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/__pycache__/version.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/__pycache__/version.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/knn/__pycache__/knn.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/knn/__pycache__/knn.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__init__.py: -------------------------------------------------------------------------------- 1 | from .oriented_iou_loss import cal_iou_3d, cal_giou_3d 2 | 3 | __all__ = ['cal_iou_3d', 'cal_giou_3d'] 4 | -------------------------------------------------------------------------------- /tools/__pycache__/_init_path.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/__pycache__/_init_path.cpython-37.pyc -------------------------------------------------------------------------------- /tools/__pycache__/_init_path.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/__pycache__/_init_path.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet.egg-info/requires.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | llvmlite 3 | numba 4 | tensorboardX 5 | easydict 6 | pyyaml 7 | scikit-image 8 | tqdm 9 | SharedArray 10 | -------------------------------------------------------------------------------- /pcdet/datasets/__pycache__/dataset.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/__pycache__/dataset.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/__pycache__/dataset.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/__pycache__/dataset.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/knn/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/knn/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/box_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/box_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/box_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/box_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/iou3d_loss.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/iou3d_loss.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/iou3d_loss.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/iou3d_loss.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/loss_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/loss_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/loss_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/loss_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_bev_backbone import BaseBEVBackbone 2 | 3 | __all__ = { 4 | 'BaseBEVBackbone': BaseBEVBackbone 5 | } 6 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__init__.py: -------------------------------------------------------------------------------- 1 | from .depth_ffn import DepthFFN 2 | 3 | __all__ = { 4 | 'DepthFFN': DepthFFN 5 | } 6 | -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/common_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/common_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/common_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/common_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/commu_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/commu_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/commu_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/commu_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/spconv_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/spconv_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/spconv_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/spconv_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__init__.py: -------------------------------------------------------------------------------- 1 | from .ddn_loss import DDNLoss 2 | 3 | __all__ = { 4 | "DDNLoss": DDNLoss 5 | } 6 | -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/box_coder_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/box_coder_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/box_coder_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/box_coder_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/object3d_kitti.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/object3d_kitti.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/object3d_kitti.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/object3d_kitti.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/transform_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/transform_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/transform_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/transform_utils.cpython-38.pyc -------------------------------------------------------------------------------- /tools/eval_utils/__pycache__/eval_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/eval_utils/__pycache__/eval_utils.cpython-37.pyc -------------------------------------------------------------------------------- /tools/eval_utils/__pycache__/eval_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/eval_utils/__pycache__/eval_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/kitti/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/kitti/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/lyft/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/lyft/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/lyft/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/lyft/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/waymo/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/waymo/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/waymo/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/waymo/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/caddn.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/caddn.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/caddn.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/caddn.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/rbgnet.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/rbgnet.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/rbgnet.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/rbgnet.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/iou3d_nms/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/iou3d_nms/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/iou3d_nms/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/iou3d_nms/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/calibration_kitti.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/calibration_kitti.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/utils/__pycache__/calibration_kitti.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/utils/__pycache__/calibration_kitti.cpython-38.pyc -------------------------------------------------------------------------------- /tools/train_utils/__pycache__/log_buffer.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/__pycache__/log_buffer.cpython-38.pyc -------------------------------------------------------------------------------- /tools/train_utils/__pycache__/train_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/__pycache__/train_utils.cpython-37.pyc -------------------------------------------------------------------------------- /tools/train_utils/__pycache__/train_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/__pycache__/train_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/kitti/__pycache__/kitti_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/__pycache__/kitti_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/kitti/__pycache__/kitti_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/__pycache__/kitti_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/lyft/__pycache__/lyft_dataset.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/lyft/__pycache__/lyft_dataset.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/lyft/__pycache__/lyft_dataset.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/lyft/__pycache__/lyft_dataset.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/nuscenes/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/nuscenes/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/nuscenes/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/nuscenes/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/pandaset/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/pandaset/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/pandaset/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/pandaset/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/scannet/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/scannet/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/scannet/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/scannet/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/sunrgbd/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/sunrgbd/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/sunrgbd/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/sunrgbd/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/cagroup3d.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/cagroup3d.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/cagroup3d.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/cagroup3d.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/pv_rcnn.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/pv_rcnn.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/pv_rcnn.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/pv_rcnn.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | llvmlite 3 | numba 4 | torch>=1.1 5 | tensorboardX 6 | easydict 7 | pyyaml 8 | scikit-image 9 | tqdm 10 | torchvision 11 | SharedArray -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/augmentor/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/augmentor/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/kitti/__pycache__/kitti_dataset.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/__pycache__/kitti_dataset.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/kitti/__pycache__/kitti_dataset.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/__pycache__/kitti_dataset.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/processor/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/processor/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/processor/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/processor/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/waymo/__pycache__/waymo_dataset.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/waymo/__pycache__/waymo_dataset.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/waymo/__pycache__/waymo_dataset.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/waymo/__pycache__/waymo_dataset.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/biresnet.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/biresnet.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/biresnet.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/biresnet.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/pfe/__init__.py: -------------------------------------------------------------------------------- 1 | from .voxel_set_abstraction import VoxelSetAbstraction 2 | 3 | __all__ = { 4 | 'VoxelSetAbstraction': VoxelSetAbstraction 5 | } 6 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__init__.py: -------------------------------------------------------------------------------- 1 | from .ddn_deeplabv3 import DDNDeepLabV3 2 | 3 | __all__ = { 4 | 'DDNDeepLabV3': DDNDeepLabV3 5 | } 6 | -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/rbg_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/rbg_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/rbg_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/rbg_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/PartA2_net.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/PartA2_net.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/PartA2_net.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/PartA2_net.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/centerpoint.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/centerpoint.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/centerpoint.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/centerpoint.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/point_rcnn.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/point_rcnn.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/point_rcnn.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/point_rcnn.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/pointpillar.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/pointpillar.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/pointpillar.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/pointpillar.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/second_net.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/second_net.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/second_net.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/second_net.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/voxel_rcnn.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/voxel_rcnn.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/voxel_rcnn.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/voxel_rcnn.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/partA2_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/partA2_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/partA2_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/partA2_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/pvrcnn_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/pvrcnn_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/pvrcnn_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/pvrcnn_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/second_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/second_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/second_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/second_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/roiaware_pool3d/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/roiaware_pool3d/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/roiaware_pool3d/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/roiaware_pool3d/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/roipoint_pool3d/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/roipoint_pool3d/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/roipoint_pool3d/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/roipoint_pool3d/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/spconv_unet.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/spconv_unet.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/spconv_unet.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/spconv_unet.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__init__.py: -------------------------------------------------------------------------------- 1 | from .frustum_to_voxel import FrustumToVoxel 2 | 3 | __all__ = { 4 | 'FrustumToVoxel': FrustumToVoxel 5 | } 6 | -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/cagroup_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/cagroup_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/cagroup_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/cagroup_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/center_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/center_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/center_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/center_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/second_net_iou.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/second_net_iou.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/second_net_iou.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/second_net_iou.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/rbgnet_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/rbgnet_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/rbgnet_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/rbgnet_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/vote_module.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/vote_module.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/vote_module.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/vote_module.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/pointrcnn_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/pointrcnn_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/pointrcnn_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/pointrcnn_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/voxelrcnn_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/voxelrcnn_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/voxelrcnn_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/voxelrcnn_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/iou3d_nms/__pycache__/iou3d_nms_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/iou3d_nms/__pycache__/iou3d_nms_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/iou3d_nms/__pycache__/iou3d_nms_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/iou3d_nms/__pycache__/iou3d_nms_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__pycache__/data_augmentor.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/augmentor/__pycache__/data_augmentor.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__pycache__/data_augmentor.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/augmentor/__pycache__/data_augmentor.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/processor/__pycache__/data_processor.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/processor/__pycache__/data_processor.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/processor/__pycache__/data_processor.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/processor/__pycache__/data_processor.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/scannet/__pycache__/scannet_dataset.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/scannet/__pycache__/scannet_dataset.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/scannet/__pycache__/scannet_dataset.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/scannet/__pycache__/scannet_dataset.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/sunrgbd/__pycache__/sunrgbd_dataset.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/sunrgbd/__pycache__/sunrgbd_dataset.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/sunrgbd/__pycache__/sunrgbd_dataset.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/sunrgbd/__pycache__/sunrgbd_dataset.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/pfe/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/pfe/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/pfe/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/pfe/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/image_vfe.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/image_vfe.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/image_vfe.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/image_vfe.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/mean_vfe.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/mean_vfe.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/mean_vfe.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/mean_vfe.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/point_head_box.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/point_head_box.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/point_head_box.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/point_head_box.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/pv_rcnn_plusplus.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/pv_rcnn_plusplus.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/pv_rcnn_plusplus.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/pv_rcnn_plusplus.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/basic_block_2d.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/basic_block_2d.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/basic_block_2d.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/basic_block_2d.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/cagroup_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/cagroup_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/cagroup_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/cagroup_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/cagroup_roi_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/cagroup_roi_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/cagroup_roi_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/cagroup_roi_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__pycache__/min_enclosing_box.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/__pycache__/min_enclosing_box.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__pycache__/min_enclosing_box.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/__pycache__/min_enclosing_box.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__pycache__/oriented_iou_loss.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/__pycache__/oriented_iou_loss.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__pycache__/oriented_iou_loss.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/__pycache__/oriented_iou_loss.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/__pycache__/cuda_ext.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/cuda_op/__pycache__/cuda_ext.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/__pycache__/cuda_ext.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/cuda_op/__pycache__/cuda_ext.cpython-38.pyc -------------------------------------------------------------------------------- /tools/train_utils/optimization/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/optimization/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /tools/train_utils/optimization/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/optimization/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__pycache__/augmentor_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/augmentor/__pycache__/augmentor_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__pycache__/augmentor_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/augmentor/__pycache__/augmentor_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__pycache__/database_sampler.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/augmentor/__pycache__/database_sampler.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/augmentor/__pycache__/database_sampler.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/augmentor/__pycache__/database_sampler.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/nuscenes/__pycache__/nuscenes_dataset.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/nuscenes/__pycache__/nuscenes_dataset.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/nuscenes/__pycache__/nuscenes_dataset.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/nuscenes/__pycache__/nuscenes_dataset.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/pandaset/__pycache__/pandaset_dataset.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/pandaset/__pycache__/pandaset_dataset.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/pandaset/__pycache__/pandaset_dataset.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/pandaset/__pycache__/pandaset_dataset.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/spconv_backbone.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/spconv_backbone.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/spconv_backbone.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/spconv_backbone.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/pillar_vfe.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/pillar_vfe.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/pillar_vfe.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/pillar_vfe.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/vfe_template.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/vfe_template.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/vfe_template.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/vfe_template.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/anchor_head_multi.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/anchor_head_multi.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/anchor_head_multi.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/anchor_head_multi.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/point_head_simple.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/point_head_simple.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/point_head_simple.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/point_head_simple.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/detector3d_template.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/detector3d_template.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/detectors/__pycache__/detector3d_template.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/detectors/__pycache__/detector3d_template.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/centernet_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/centernet_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/centernet_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/centernet_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/model_nms_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/model_nms_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/model_utils/__pycache__/model_nms_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/model_utils/__pycache__/model_nms_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/roi_head_template.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/roi_head_template.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__pycache__/roi_head_template.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/__pycache__/roi_head_template.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__pycache__/box_intersection_2d.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/__pycache__/box_intersection_2d.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/__pycache__/box_intersection_2d.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/__pycache__/box_intersection_2d.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/__pycache__/base_bev_backbone.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/__pycache__/base_bev_backbone.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/__pycache__/base_bev_backbone.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/__pycache__/base_bev_backbone.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/pointnet2_backbone.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/pointnet2_backbone.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/pointnet2_backbone.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/pointnet2_backbone.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/anchor_head_single.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/anchor_head_single.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/anchor_head_single.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/anchor_head_single.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/point_head_template.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/point_head_template.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/point_head_template.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/point_head_template.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_batch/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_batch/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /tools/train_utils/optimization/__pycache__/fastai_optim.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/optimization/__pycache__/fastai_optim.cpython-37.pyc -------------------------------------------------------------------------------- /tools/train_utils/optimization/__pycache__/fastai_optim.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/optimization/__pycache__/fastai_optim.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/processor/__pycache__/point_feature_encoder.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/processor/__pycache__/point_feature_encoder.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/processor/__pycache__/point_feature_encoder.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/processor/__pycache__/point_feature_encoder.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/map_to_bev/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/map_to_bev/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/dynamic_mean_vfe.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/dynamic_mean_vfe.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/dynamic_mean_vfe.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/dynamic_mean_vfe.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/anchor_head_template.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/anchor_head_template.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/anchor_head_template.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/anchor_head_template.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/point_intra_part_head.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/point_intra_part_head.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__pycache__/point_intra_part_head.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/__pycache__/point_intra_part_head.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/target_assigner/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/target_assigner/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/target_assigner/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/target_assigner/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/roiaware_pool3d/__pycache__/roiaware_pool3d_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/roiaware_pool3d/__pycache__/roiaware_pool3d_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/roiaware_pool3d/__pycache__/roiaware_pool3d_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/roiaware_pool3d/__pycache__/roiaware_pool3d_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/roipoint_pool3d/__pycache__/roipoint_pool3d_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/roipoint_pool3d/__pycache__/roipoint_pool3d_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/roipoint_pool3d/__pycache__/roipoint_pool3d_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/roipoint_pool3d/__pycache__/roipoint_pool3d_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/pointnet2_fbs_backbone.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/pointnet2_fbs_backbone.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__pycache__/pointnet2_fbs_backbone.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/__pycache__/pointnet2_fbs_backbone.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/dynamic_pillar_vfe.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/dynamic_pillar_vfe.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__pycache__/dynamic_pillar_vfe.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/__pycache__/dynamic_pillar_vfe.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__pycache__/conv2d_collapse.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/map_to_bev/__pycache__/conv2d_collapse.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__pycache__/conv2d_collapse.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/map_to_bev/__pycache__/conv2d_collapse.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/pfe/__pycache__/voxel_set_abstraction.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/pfe/__pycache__/voxel_set_abstraction.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/pfe/__pycache__/voxel_set_abstraction.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/pfe/__pycache__/voxel_set_abstraction.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/__pycache__/pointnet2_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_batch/__pycache__/pointnet2_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/__pycache__/pointnet2_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_batch/__pycache__/pointnet2_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/pointnet2_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/pointnet2_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/pointnet2_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/pointnet2_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/dist/sort_vertices-0.0.0-py3.7-linux-x86_64.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/cuda_op/dist/sort_vertices-0.0.0-py3.7-linux-x86_64.egg -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/dist/sort_vertices-0.0.0-py3.8-linux-x86_64.egg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/rotated_iou/cuda_op/dist/sort_vertices-0.0.0-py3.8-linux-x86_64.egg -------------------------------------------------------------------------------- /pcdet/datasets/kitti/kitti_object_eval_python/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/kitti_object_eval_python/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/kitti/kitti_object_eval_python/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/kitti_object_eval_python/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/scannet/scannet_object_eval_python/__pycache__/eval.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/scannet/scannet_object_eval_python/__pycache__/eval.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/datasets/sunrgbd/sunrgbd_object_eval_python/__pycache__/eval.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/sunrgbd/sunrgbd_object_eval_python/__pycache__/eval.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/sunrgbd/sunrgbd_object_eval_python/__pycache__/eval.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/sunrgbd/sunrgbd_object_eval_python/__pycache__/eval.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/__pycache__/pointnet2_modules.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_batch/__pycache__/pointnet2_modules.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/__pycache__/pointnet2_modules.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_batch/__pycache__/pointnet2_modules.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/pointnet2_modules.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/pointnet2_modules.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/pointnet2_modules.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/pointnet2_modules.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/voxel_pool_modules.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/voxel_pool_modules.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/voxel_pool_modules.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/voxel_pool_modules.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/voxel_query_utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/voxel_query_utils.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/__pycache__/voxel_query_utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/ops/pointnet2/pointnet2_stack/__pycache__/voxel_query_utils.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/sort_vert.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | #define MAX_NUM_VERT_IDX 9 5 | 6 | at::Tensor sort_vertices(at::Tensor vertices, at::Tensor mask, at::Tensor num_valid); -------------------------------------------------------------------------------- /pcdet/datasets/kitti/kitti_object_eval_python/__pycache__/rotate_iou.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/kitti_object_eval_python/__pycache__/rotate_iou.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/datasets/kitti/kitti_object_eval_python/__pycache__/rotate_iou.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/datasets/kitti/kitti_object_eval_python/__pycache__/rotate_iou.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__pycache__/height_compression.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/map_to_bev/__pycache__/height_compression.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__pycache__/height_compression.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/map_to_bev/__pycache__/height_compression.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__pycache__/pointpillar_scatter.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/map_to_bev/__pycache__/pointpillar_scatter.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__pycache__/pointpillar_scatter.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_2d/map_to_bev/__pycache__/pointpillar_scatter.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/anchor_generator.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/anchor_generator.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/anchor_generator.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/anchor_generator.cpython-38.pyc -------------------------------------------------------------------------------- /tools/train_utils/optimization/__pycache__/learning_schedules_fastai.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/optimization/__pycache__/learning_schedules_fastai.cpython-37.pyc -------------------------------------------------------------------------------- /tools/train_utils/optimization/__pycache__/learning_schedules_fastai.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/tools/train_utils/optimization/__pycache__/learning_schedules_fastai.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/sampler.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/sampler.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/sampler.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/sampler.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/cagroup3d_assigner.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/cagroup3d_assigner.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/cagroup3d_assigner.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/cagroup3d_assigner.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__pycache__/depth_ffn.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__pycache__/depth_ffn.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__pycache__/depth_ffn.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/__pycache__/depth_ffn.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/atss_target_assigner.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/atss_target_assigner.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/atss_target_assigner.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/atss_target_assigner.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/target_assigner/__pycache__/proposal_target_layer.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/target_assigner/__pycache__/proposal_target_layer.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/target_assigner/__pycache__/proposal_target_layer.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/target_assigner/__pycache__/proposal_target_layer.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/frustum_to_voxel.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/frustum_to_voxel.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/frustum_to_voxel.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/frustum_to_voxel.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/ddn_deeplabv3.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/ddn_deeplabv3.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/ddn_deeplabv3.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/ddn_deeplabv3.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/ddn_template.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/ddn_template.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/ddn_template.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/__pycache__/ddn_template.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/balancer.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/balancer.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/balancer.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/balancer.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/ddn_loss.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/ddn_loss.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/ddn_loss.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/__pycache__/ddn_loss.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/axis_aligned_target_assigner.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/axis_aligned_target_assigner.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/dense_heads/target_assigner/__pycache__/axis_aligned_target_assigner.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/dense_heads/target_assigner/__pycache__/axis_aligned_target_assigner.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/target_assigner/__pycache__/cagroup_proposal_target_layer.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/target_assigner/__pycache__/cagroup_proposal_target_layer.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/roi_heads/target_assigner/__pycache__/cagroup_proposal_target_layer.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/roi_heads/target_assigner/__pycache__/cagroup_proposal_target_layer.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/frustum_grid_generator.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/frustum_grid_generator.cpython-37.pyc -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/frustum_grid_generator.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Haiyang-W/CAGroup3D/HEAD/pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/__pycache__/frustum_grid_generator.cpython-38.pyc -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/cuda_utils.h: -------------------------------------------------------------------------------- 1 | #ifndef _STACK_CUDA_UTILS_H 2 | #define _STACK_CUDA_UTILS_H 3 | 4 | #include 5 | 6 | #define THREADS_PER_BLOCK 256 7 | #define DIVUP(m,n) ((m) / (n) + ((m) % (n) > 0)) 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /pcdet.egg-info/PKG-INFO: -------------------------------------------------------------------------------- 1 | Metadata-Version: 2.1 2 | Name: pcdet 3 | Version: 0.5.2+0 4 | Summary: OpenPCDet is a general codebase for 3D object detection from point cloud 5 | Author: Shaoshuai Shi 6 | Author-email: shaoshuaics@gmail.com 7 | License: Apache License 2.0 8 | -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/sort_vertices.egg-info/SOURCES.txt: -------------------------------------------------------------------------------- 1 | setup.py 2 | sort_vert.cpp 3 | sort_vert_kernel.cu 4 | sort_vertices.egg-info/PKG-INFO 5 | sort_vertices.egg-info/SOURCES.txt 6 | sort_vertices.egg-info/dependency_links.txt 7 | sort_vertices.egg-info/top_level.txt -------------------------------------------------------------------------------- /pcdet/ops/iou3d_nms/src/iou3d_cpu.h: -------------------------------------------------------------------------------- 1 | #ifndef IOU3D_CPU_H 2 | #define IOU3D_CPU_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int boxes_iou_bev_cpu(at::Tensor boxes_a_tensor, at::Tensor boxes_b_tensor, at::Tensor ans_iou_tensor); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/__init__.py: -------------------------------------------------------------------------------- 1 | from .height_compression import HeightCompression 2 | from .pointpillar_scatter import PointPillarScatter 3 | from .conv2d_collapse import Conv2DCollapse 4 | 5 | __all__ = { 6 | 'HeightCompression': HeightCompression, 7 | 'PointPillarScatter': PointPillarScatter, 8 | 'Conv2DCollapse': Conv2DCollapse 9 | } 10 | -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | from torch.utils.cpp_extension import BuildExtension, CUDAExtension 3 | 4 | setup( 5 | name='sort_vertices', 6 | ext_modules=[ 7 | CUDAExtension('sort_vertices', [ 8 | 'sort_vert.cpp', 9 | 'sort_vert_kernel.cu', 10 | ]), 11 | ], 12 | cmdclass={ 13 | 'build_ext': BuildExtension 14 | }) -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/cuda_utils.h: -------------------------------------------------------------------------------- 1 | #ifndef _CUDA_UTILS_H 2 | #define _CUDA_UTILS_H 3 | 4 | #include 5 | 6 | #define TOTAL_THREADS 1024 7 | #define THREADS_PER_BLOCK 256 8 | #define DIVUP(m,n) ((m) / (n) + ((m) % (n) > 0)) 9 | 10 | inline int opt_n_threads(int work_size) { 11 | const int pow_2 = std::log(static_cast(work_size)) / std::log(2.0); 12 | 13 | return max(min(1 << pow_2, TOTAL_THREADS), 1); 14 | } 15 | #endif 16 | -------------------------------------------------------------------------------- /tools/scripts/slurm_test_single.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | GPUS=1 7 | GPUS_PER_NODE=1 8 | PY_ARGS=${@:2} 9 | JOB_NAME=eval 10 | SRUN_ARGS=${SRUN_ARGS:-""} 11 | 12 | srun -p ${PARTITION} \ 13 | --job-name=${JOB_NAME} \ 14 | --gres=gpu:${GPUS_PER_NODE} \ 15 | --ntasks=${GPUS} \ 16 | --ntasks-per-node=${GPUS_PER_NODE} \ 17 | --kill-on-bad-exit=1 \ 18 | ${SRUN_ARGS} \ 19 | python -u test.py ${PY_ARGS} 20 | -------------------------------------------------------------------------------- /tools/scripts/torch_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | NGPUS=$1 5 | PY_ARGS=${@:2} 6 | 7 | while true 8 | do 9 | PORT=$(( ((RANDOM<<15)|RANDOM) % 49152 + 10000 )) 10 | status="$(nc -z 127.0.0.1 $PORT < /dev/null &>/dev/null; echo $?)" 11 | if [ "${status}" != "0" ]; then 12 | break; 13 | fi 14 | done 15 | echo $PORT 16 | 17 | torchrun --nproc_per_node=${NGPUS} --rdzv_endpoint=localhost:${PORT} train.py --launcher pytorch ${PY_ARGS} 18 | 19 | -------------------------------------------------------------------------------- /tools/scripts/dist_test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | NGPUS=$1 5 | PY_ARGS=${@:2} 6 | 7 | while true 8 | do 9 | PORT=$(( ((RANDOM<<15)|RANDOM) % 49152 + 10000 )) 10 | status="$(nc -z 127.0.0.1 $PORT < /dev/null &>/dev/null; echo $?)" 11 | if [ "${status}" != "0" ]; then 12 | break; 13 | fi 14 | done 15 | echo $PORT 16 | 17 | python -m torch.distributed.launch --nproc_per_node=${NGPUS} --rdzv_endpoint=localhost:${PORT} test.py --launcher pytorch ${PY_ARGS} 18 | 19 | -------------------------------------------------------------------------------- /tools/scripts/dist_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | NGPUS=$1 5 | PY_ARGS=${@:2} 6 | 7 | while true 8 | do 9 | PORT=$(( ((RANDOM<<15)|RANDOM) % 49152 + 10000 )) 10 | status="$(nc -z 127.0.0.1 $PORT < /dev/null &>/dev/null; echo $?)" 11 | if [ "${status}" != "0" ]; then 12 | break; 13 | fi 14 | done 15 | echo $PORT 16 | 17 | python -m torch.distributed.launch --nproc_per_node=${NGPUS} --rdzv_endpoint=localhost:${PORT} train.py --launcher pytorch ${PY_ARGS} 18 | 19 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/__init__.py: -------------------------------------------------------------------------------- 1 | from .mean_vfe import MeanVFE 2 | from .pillar_vfe import PillarVFE 3 | from .dynamic_mean_vfe import DynamicMeanVFE 4 | from .dynamic_pillar_vfe import DynamicPillarVFE 5 | from .image_vfe import ImageVFE 6 | from .vfe_template import VFETemplate 7 | 8 | __all__ = { 9 | 'VFETemplate': VFETemplate, 10 | 'MeanVFE': MeanVFE, 11 | 'PillarVFE': PillarVFE, 12 | 'ImageVFE': ImageVFE, 13 | 'DynMeanVFE': DynamicMeanVFE, 14 | 'DynPillarVFE': DynamicPillarVFE, 15 | } 16 | -------------------------------------------------------------------------------- /pcdet/ops/iou3d_nms/src/iou3d_nms.h: -------------------------------------------------------------------------------- 1 | #ifndef IOU3D_NMS_H 2 | #define IOU3D_NMS_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int boxes_overlap_bev_gpu(at::Tensor boxes_a, at::Tensor boxes_b, at::Tensor ans_overlap); 10 | int boxes_iou_bev_gpu(at::Tensor boxes_a, at::Tensor boxes_b, at::Tensor ans_iou); 11 | int nms_gpu(at::Tensor boxes, at::Tensor keep, float nms_overlap_thresh); 12 | int nms_normal_gpu(at::Tensor boxes, at::Tensor keep, float nms_overlap_thresh); 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/ball_query_gpu.h: -------------------------------------------------------------------------------- 1 | #ifndef _BALL_QUERY_GPU_H 2 | #define _BALL_QUERY_GPU_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int ball_query_wrapper_fast(int b, int n, int m, float radius, int nsample, 10 | at::Tensor new_xyz_tensor, at::Tensor xyz_tensor, at::Tensor idx_tensor); 11 | 12 | void ball_query_kernel_launcher_fast(int b, int n, int m, float radius, int nsample, 13 | const float *xyz, const float *new_xyz, int *idx); 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/vfe_template.py: -------------------------------------------------------------------------------- 1 | import torch.nn as nn 2 | 3 | 4 | class VFETemplate(nn.Module): 5 | def __init__(self, model_cfg, **kwargs): 6 | super().__init__() 7 | self.model_cfg = model_cfg 8 | 9 | def get_output_feature_dim(self): 10 | raise NotImplementedError 11 | 12 | def forward(self, **kwargs): 13 | """ 14 | Args: 15 | **kwargs: 16 | 17 | Returns: 18 | batch_dict: 19 | ... 20 | vfe_features: (num_voxels, C) 21 | """ 22 | raise NotImplementedError 23 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/__init__.py: -------------------------------------------------------------------------------- 1 | from .pointnet2_backbone import PointNet2Backbone, PointNet2MSG 2 | from .spconv_backbone import VoxelBackBone8x, VoxelResBackBone8x 3 | from .spconv_unet import UNetV2 4 | from .pointnet2_fbs_backbone import PointNet2_FBS_SSG 5 | from .biresnet import BiResNet 6 | 7 | __all__ = { 8 | 'VoxelBackBone8x': VoxelBackBone8x, 9 | 'UNetV2': UNetV2, 10 | 'PointNet2Backbone': PointNet2Backbone, 11 | 'PointNet2MSG': PointNet2MSG, 12 | 'VoxelResBackBone8x': VoxelResBackBone8x, 13 | 'PointNet2_FBS_SSG': PointNet2_FBS_SSG, 14 | 'BiResNet': BiResNet, 15 | } 16 | -------------------------------------------------------------------------------- /pcdet/__init__.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | from pathlib import Path 3 | 4 | from .version import __version__ 5 | 6 | __all__ = [ 7 | '__version__' 8 | ] 9 | 10 | 11 | def get_git_commit_number(): 12 | if not (Path(__file__).parent / '../.git').exists(): 13 | return '0000000' 14 | 15 | cmd_out = subprocess.run(['git', 'rev-parse', 'HEAD'], stdout=subprocess.PIPE) 16 | git_commit_number = cmd_out.stdout.decode('utf-8')[:7] 17 | return git_commit_number 18 | 19 | 20 | script_version = get_git_commit_number() 21 | 22 | 23 | if script_version not in __version__: 24 | __version__ = __version__ + '+py%s' % script_version 25 | -------------------------------------------------------------------------------- /pcdet/models/roi_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .partA2_head import PartA2FCHead 2 | from .pointrcnn_head import PointRCNNHead 3 | from .pvrcnn_head import PVRCNNHead 4 | from .second_head import SECONDHead 5 | from .voxelrcnn_head import VoxelRCNNHead 6 | from .roi_head_template import RoIHeadTemplate 7 | from .cagroup_roi_head import CAGroup3DRoIHead 8 | 9 | 10 | __all__ = { 11 | 'RoIHeadTemplate': RoIHeadTemplate, 12 | 'PartA2FCHead': PartA2FCHead, 13 | 'PVRCNNHead': PVRCNNHead, 14 | 'SECONDHead': SECONDHead, 15 | 'PointRCNNHead': PointRCNNHead, 16 | 'VoxelRCNNHead': VoxelRCNNHead, 17 | 'CAGroup3DRoIHead': CAGroup3DRoIHead, 18 | } 19 | -------------------------------------------------------------------------------- /pcdet/ops/iou3d_nms/src/iou3d_nms_api.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include "iou3d_cpu.h" 8 | #include "iou3d_nms.h" 9 | 10 | 11 | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { 12 | m.def("boxes_overlap_bev_gpu", &boxes_overlap_bev_gpu, "oriented boxes overlap"); 13 | m.def("boxes_iou_bev_gpu", &boxes_iou_bev_gpu, "oriented boxes iou"); 14 | m.def("nms_gpu", &nms_gpu, "oriented nms gpu"); 15 | m.def("nms_normal_gpu", &nms_normal_gpu, "nms gpu"); 16 | m.def("boxes_iou_bev_cpu", &boxes_iou_bev_cpu, "oriented boxes iou"); 17 | } 18 | -------------------------------------------------------------------------------- /tools/scripts/slurm_test_mgpu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | GPUS=$2 7 | GPUS_PER_NODE=$GPUS 8 | PY_ARGS=${@:3} 9 | JOB_NAME=eval 10 | SRUN_ARGS=${SRUN_ARGS:-""} 11 | 12 | while true 13 | do 14 | PORT=$(( ((RANDOM<<15)|RANDOM) % 49152 + 10000 )) 15 | status="$(nc -z 127.0.0.1 $PORT < /dev/null &>/dev/null; echo $?)" 16 | if [ "${status}" != "0" ]; then 17 | break; 18 | fi 19 | done 20 | echo $PORT 21 | 22 | srun -p ${PARTITION} \ 23 | --job-name=${JOB_NAME} \ 24 | --gres=gpu:${GPUS_PER_NODE} \ 25 | --ntasks=${GPUS} \ 26 | --ntasks-per-node=${GPUS_PER_NODE} \ 27 | --kill-on-bad-exit=1 \ 28 | ${SRUN_ARGS} \ 29 | python -u test.py --launcher slurm --tcp_port $PORT ${PY_ARGS} 30 | 31 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/voxel_query_gpu.h: -------------------------------------------------------------------------------- 1 | #ifndef _STACK_VOXEL_QUERY_GPU_H 2 | #define _STACK_VOXEL_QUERY_GPU_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int voxel_query_wrapper_stack(int M, int R1, int R2, int R3, int nsample, float radius, 10 | int z_range, int y_range, int x_range, at::Tensor new_xyz_tensor, at::Tensor xyz_tensor, 11 | at::Tensor new_coords_tensor, at::Tensor point_indices_tensor, at::Tensor idx_tensor); 12 | 13 | 14 | void voxel_query_kernel_launcher_stack(int M, int R1, int R2, int R3, int nsample, 15 | float radius, int z_range, int y_range, int x_range, const float *new_xyz, 16 | const float *xyz, const int *new_coords, const int *point_indices, int *idx); 17 | 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn/ddn_deeplabv3.py: -------------------------------------------------------------------------------- 1 | from .ddn_template import DDNTemplate 2 | 3 | try: 4 | import torchvision 5 | except: 6 | pass 7 | 8 | 9 | class DDNDeepLabV3(DDNTemplate): 10 | 11 | def __init__(self, backbone_name, **kwargs): 12 | """ 13 | Initializes DDNDeepLabV3 model 14 | Args: 15 | backbone_name: string, ResNet Backbone Name [ResNet50/ResNet101] 16 | """ 17 | if backbone_name == "ResNet50": 18 | constructor = torchvision.models.segmentation.deeplabv3_resnet50 19 | elif backbone_name == "ResNet101": 20 | constructor = torchvision.models.segmentation.deeplabv3_resnet101 21 | else: 22 | raise NotImplementedError 23 | 24 | super().__init__(constructor=constructor, **kwargs) 25 | -------------------------------------------------------------------------------- /tools/scripts/slurm_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME=$2 7 | GPUS=$3 8 | PY_ARGS=${@:4} 9 | 10 | GPUS_PER_NODE=${GPUS_PER_NODE:-8} 11 | CPUS_PER_TASK=${CPUS_PER_TASK:-5} 12 | SRUN_ARGS=${SRUN_ARGS:-""} 13 | 14 | while true 15 | do 16 | PORT=$(( ((RANDOM<<15)|RANDOM) % 49152 + 10000 )) 17 | status="$(nc -z 127.0.0.1 $PORT < /dev/null &>/dev/null; echo $?)" 18 | if [ "${status}" != "0" ]; then 19 | break; 20 | fi 21 | done 22 | echo $PORT 23 | 24 | srun -p ${PARTITION} \ 25 | --job-name=${JOB_NAME} \ 26 | --gres=gpu:${GPUS_PER_NODE} \ 27 | --ntasks=${GPUS} \ 28 | --ntasks-per-node=${GPUS_PER_NODE} \ 29 | --cpus-per-task=${CPUS_PER_TASK} \ 30 | --kill-on-bad-exit=1 \ 31 | ${SRUN_ARGS} \ 32 | python -u train.py --launcher slurm --tcp_port $PORT ${PY_ARGS} 33 | -------------------------------------------------------------------------------- /pcdet/models/dense_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .anchor_head_multi import AnchorHeadMulti 2 | from .anchor_head_single import AnchorHeadSingle 3 | from .anchor_head_template import AnchorHeadTemplate 4 | from .point_head_box import PointHeadBox 5 | from .point_head_simple import PointHeadSimple 6 | from .point_intra_part_head import PointIntraPartOffsetHead 7 | from .center_head import CenterHead 8 | from .rbg_head import RBGHead 9 | from .cagroup_head import CAGroup3DHead 10 | 11 | __all__ = { 12 | 'AnchorHeadTemplate': AnchorHeadTemplate, 13 | 'AnchorHeadSingle': AnchorHeadSingle, 14 | 'PointIntraPartOffsetHead': PointIntraPartOffsetHead, 15 | 'PointHeadSimple': PointHeadSimple, 16 | 'PointHeadBox': PointHeadBox, 17 | 'AnchorHeadMulti': AnchorHeadMulti, 18 | 'CenterHead': CenterHead, 19 | 'RBGHead': RBGHead, 20 | 'CAGroup3DHead': CAGroup3DHead, 21 | } 22 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/sampling_gpu.h: -------------------------------------------------------------------------------- 1 | #ifndef _SAMPLING_GPU_H 2 | #define _SAMPLING_GPU_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | 9 | int farthest_point_sampling_wrapper(int b, int n, int m, 10 | at::Tensor points_tensor, at::Tensor temp_tensor, at::Tensor idx_tensor); 11 | 12 | void farthest_point_sampling_kernel_launcher(int b, int n, int m, 13 | const float *dataset, float *temp, int *idxs); 14 | 15 | int stack_farthest_point_sampling_wrapper( 16 | at::Tensor points_tensor, at::Tensor temp_tensor, at::Tensor xyz_batch_cnt_tensor, 17 | at::Tensor idx_tensor, at::Tensor num_sampled_points_tensor); 18 | 19 | 20 | void stack_farthest_point_sampling_kernel_launcher(int N, int batch_size, 21 | const float *dataset, float *temp, int *xyz_batch_cnt, int *idxs, int *num_sampled_points); 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/ball_query_gpu.h: -------------------------------------------------------------------------------- 1 | /* 2 | Stacked-batch-data version of ball query, modified from the original implementation of official PointNet++ codes. 3 | Written by Shaoshuai Shi 4 | All Rights Reserved 2019-2020. 5 | */ 6 | 7 | 8 | #ifndef _STACK_BALL_QUERY_GPU_H 9 | #define _STACK_BALL_QUERY_GPU_H 10 | 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | int ball_query_wrapper_stack(int B, int M, float radius, int nsample, 17 | at::Tensor new_xyz_tensor, at::Tensor new_xyz_batch_cnt_tensor, 18 | at::Tensor xyz_tensor, at::Tensor xyz_batch_cnt_tensor, at::Tensor idx_tensor); 19 | 20 | 21 | void ball_query_kernel_launcher_stack(int B, int M, float radius, int nsample, 22 | const float *new_xyz, const int *new_xyz_batch_cnt, const float *xyz, const int *xyz_batch_cnt, int *idx); 23 | 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/group_points_gpu.h: -------------------------------------------------------------------------------- 1 | #ifndef _GROUP_POINTS_GPU_H 2 | #define _GROUP_POINTS_GPU_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | int group_points_wrapper_fast(int b, int c, int n, int npoints, int nsample, 11 | at::Tensor points_tensor, at::Tensor idx_tensor, at::Tensor out_tensor); 12 | 13 | void group_points_kernel_launcher_fast(int b, int c, int n, int npoints, int nsample, 14 | const float *points, const int *idx, float *out); 15 | 16 | int group_points_grad_wrapper_fast(int b, int c, int n, int npoints, int nsample, 17 | at::Tensor grad_out_tensor, at::Tensor idx_tensor, at::Tensor grad_points_tensor); 18 | 19 | void group_points_grad_kernel_launcher_fast(int b, int c, int n, int npoints, int nsample, 20 | const float *grad_out, const int *idx, float *grad_points); 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/height_compression.py: -------------------------------------------------------------------------------- 1 | import torch.nn as nn 2 | 3 | 4 | class HeightCompression(nn.Module): 5 | def __init__(self, model_cfg, **kwargs): 6 | super().__init__() 7 | self.model_cfg = model_cfg 8 | self.num_bev_features = self.model_cfg.NUM_BEV_FEATURES 9 | 10 | def forward(self, batch_dict): 11 | """ 12 | Args: 13 | batch_dict: 14 | encoded_spconv_tensor: sparse tensor 15 | Returns: 16 | batch_dict: 17 | spatial_features: 18 | 19 | """ 20 | encoded_spconv_tensor = batch_dict['encoded_spconv_tensor'] 21 | spatial_features = encoded_spconv_tensor.dense() 22 | N, C, D, H, W = spatial_features.shape 23 | spatial_features = spatial_features.view(N, C * D, H, W) 24 | batch_dict['spatial_features'] = spatial_features 25 | batch_dict['spatial_features_stride'] = batch_dict['encoded_spconv_tensor_stride'] 26 | return batch_dict 27 | -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/cuda_ext.py: -------------------------------------------------------------------------------- 1 | import torch 2 | from torch import nn 3 | from torch.autograd import Function 4 | import sort_vertices 5 | 6 | class SortVertices(Function): 7 | @staticmethod 8 | def forward(ctx, vertices, mask, num_valid): 9 | idx = sort_vertices.sort_vertices_forward(vertices, mask, num_valid) 10 | ctx.mark_non_differentiable(idx) 11 | return idx 12 | 13 | @staticmethod 14 | def backward(ctx, gradout): 15 | return () 16 | 17 | sort_v = SortVertices.apply 18 | 19 | if __name__ == "__main__": 20 | import time 21 | v = torch.rand([8, 1024, 24, 2]).float().cuda() 22 | mean = torch.mean(v, dim=2, keepdim=True) 23 | v = v - mean 24 | m = (torch.rand([8, 1024, 24]) > 0.8).cuda() 25 | nv = torch.sum(m.int(), dim=-1).int().cuda() 26 | start = time.time() 27 | result = sort_v(v, m, nv) 28 | torch.cuda.synchronize() 29 | print("time: %.2f ms"%((time.time() - start)*1000)) 30 | print(result.size()) 31 | print(result[0,0,:]) -------------------------------------------------------------------------------- /pcdet/utils/spconv_utils.py: -------------------------------------------------------------------------------- 1 | from typing import Set 2 | 3 | try: 4 | import spconv.pytorch as spconv 5 | except: 6 | import spconv as spconv 7 | 8 | import torch.nn as nn 9 | 10 | 11 | def find_all_spconv_keys(model: nn.Module, prefix="") -> Set[str]: 12 | """ 13 | Finds all spconv keys that need to have weight's transposed 14 | """ 15 | found_keys: Set[str] = set() 16 | for name, child in model.named_children(): 17 | new_prefix = f"{prefix}.{name}" if prefix != "" else name 18 | 19 | if isinstance(child, spconv.conv.SparseConvolution): 20 | new_prefix = f"{new_prefix}.weight" 21 | found_keys.add(new_prefix) 22 | 23 | found_keys.update(find_all_spconv_keys(child, prefix=new_prefix)) 24 | 25 | return found_keys 26 | 27 | 28 | def replace_feature(out, new_features): 29 | if "replace_feature" in out.__dir__(): 30 | # spconv 2.x behaviour 31 | return out.replace_feature(new_features) 32 | else: 33 | out.features = new_features 34 | return out 35 | -------------------------------------------------------------------------------- /pcdet/datasets/kitti/kitti_object_eval_python/evaluate.py: -------------------------------------------------------------------------------- 1 | import time 2 | 3 | import fire 4 | 5 | import .kitti_common as kitti 6 | from .eval import get_coco_eval_result, get_official_eval_result 7 | 8 | 9 | def _read_imageset_file(path): 10 | with open(path, 'r') as f: 11 | lines = f.readlines() 12 | return [int(line) for line in lines] 13 | 14 | 15 | def evaluate(label_path, 16 | result_path, 17 | label_split_file, 18 | current_class=0, 19 | coco=False, 20 | score_thresh=-1): 21 | dt_annos = kitti.get_label_annos(result_path) 22 | if score_thresh > 0: 23 | dt_annos = kitti.filter_annos_low_score(dt_annos, score_thresh) 24 | val_image_ids = _read_imageset_file(label_split_file) 25 | gt_annos = kitti.get_label_annos(label_path, val_image_ids) 26 | if coco: 27 | return get_coco_eval_result(gt_annos, dt_annos, current_class) 28 | else: 29 | return get_official_eval_result(gt_annos, dt_annos, current_class) 30 | 31 | 32 | if __name__ == '__main__': 33 | fire.Fire() 34 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/sampling_gpu.h: -------------------------------------------------------------------------------- 1 | #ifndef _SAMPLING_GPU_H 2 | #define _SAMPLING_GPU_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | 9 | int gather_points_wrapper_fast(int b, int c, int n, int npoints, 10 | at::Tensor points_tensor, at::Tensor idx_tensor, at::Tensor out_tensor); 11 | 12 | void gather_points_kernel_launcher_fast(int b, int c, int n, int npoints, 13 | const float *points, const int *idx, float *out); 14 | 15 | 16 | int gather_points_grad_wrapper_fast(int b, int c, int n, int npoints, 17 | at::Tensor grad_out_tensor, at::Tensor idx_tensor, at::Tensor grad_points_tensor); 18 | 19 | void gather_points_grad_kernel_launcher_fast(int b, int c, int n, int npoints, 20 | const float *grad_out, const int *idx, float *grad_points); 21 | 22 | 23 | int farthest_point_sampling_wrapper(int b, int n, int m, 24 | at::Tensor points_tensor, at::Tensor temp_tensor, at::Tensor idx_tensor); 25 | 26 | void farthest_point_sampling_kernel_launcher(int b, int n, int m, 27 | const float *dataset, float *temp, int *idxs); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /pcdet/models/detectors/point_rcnn.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class PointRCNN(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | for cur_module in self.module_list: 11 | batch_dict = cur_module(batch_dict) 12 | 13 | if self.training: 14 | loss, tb_dict, disp_dict = self.get_training_loss() 15 | 16 | ret_dict = { 17 | 'loss': loss 18 | } 19 | return ret_dict, tb_dict, disp_dict 20 | else: 21 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 22 | return pred_dicts, recall_dicts 23 | 24 | def get_training_loss(self): 25 | disp_dict = {} 26 | loss_point, tb_dict = self.point_head.get_loss() 27 | loss_rcnn, tb_dict = self.roi_head.get_loss(tb_dict) 28 | 29 | loss = loss_point + loss_rcnn 30 | return loss, tb_dict, disp_dict 31 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/f2v/sampler.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | 5 | 6 | class Sampler(nn.Module): 7 | 8 | def __init__(self, mode="bilinear", padding_mode="zeros"): 9 | """ 10 | Initializes module 11 | Args: 12 | mode: string, Sampling mode [bilinear/nearest] 13 | padding_mode: string, Padding mode for outside grid values [zeros/border/reflection] 14 | """ 15 | super().__init__() 16 | self.mode = mode 17 | self.padding_mode = padding_mode 18 | 19 | def forward(self, input_features, grid): 20 | """ 21 | Samples input using sampling grid 22 | Args: 23 | input_features: (B, C, D, H, W), Input frustum features 24 | grid: (B, X, Y, Z, 3), Sampling grids for input features 25 | Returns 26 | output_features: (B, C, X, Y, Z) Output voxel features 27 | """ 28 | # Sample from grid 29 | output = F.grid_sample(input=input_features, grid=grid, mode=self.mode, padding_mode=self.padding_mode) 30 | return output 31 | -------------------------------------------------------------------------------- /pcdet/datasets/kitti/kitti_object_eval_python/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /pcdet/models/detectors/second_net.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class SECONDNet(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | for cur_module in self.module_list: 11 | batch_dict = cur_module(batch_dict) 12 | 13 | if self.training: 14 | loss, tb_dict, disp_dict = self.get_training_loss() 15 | 16 | ret_dict = { 17 | 'loss': loss 18 | } 19 | return ret_dict, tb_dict, disp_dict 20 | else: 21 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 22 | return pred_dicts, recall_dicts 23 | 24 | def get_training_loss(self): 25 | disp_dict = {} 26 | 27 | loss_rpn, tb_dict = self.dense_head.get_loss() 28 | tb_dict = { 29 | 'loss_rpn': loss_rpn.item(), 30 | **tb_dict 31 | } 32 | 33 | loss = loss_rpn 34 | return loss, tb_dict, disp_dict 35 | -------------------------------------------------------------------------------- /pcdet/models/detectors/pointpillar.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class PointPillar(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | for cur_module in self.module_list: 11 | batch_dict = cur_module(batch_dict) 12 | 13 | if self.training: 14 | loss, tb_dict, disp_dict = self.get_training_loss() 15 | 16 | ret_dict = { 17 | 'loss': loss 18 | } 19 | return ret_dict, tb_dict, disp_dict 20 | else: 21 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 22 | return pred_dicts, recall_dicts 23 | 24 | def get_training_loss(self): 25 | disp_dict = {} 26 | 27 | loss_rpn, tb_dict = self.dense_head.get_loss() 28 | tb_dict = { 29 | 'loss_rpn': loss_rpn.item(), 30 | **tb_dict 31 | } 32 | 33 | loss = loss_rpn 34 | return loss, tb_dict, disp_dict 35 | -------------------------------------------------------------------------------- /pcdet/models/detectors/voxel_rcnn.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class VoxelRCNN(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | for cur_module in self.module_list: 11 | batch_dict = cur_module(batch_dict) 12 | 13 | if self.training: 14 | loss, tb_dict, disp_dict = self.get_training_loss() 15 | 16 | ret_dict = { 17 | 'loss': loss 18 | } 19 | return ret_dict, tb_dict, disp_dict 20 | else: 21 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 22 | return pred_dicts, recall_dicts 23 | 24 | def get_training_loss(self): 25 | disp_dict = {} 26 | loss = 0 27 | 28 | loss_rpn, tb_dict = self.dense_head.get_loss() 29 | loss_rcnn, tb_dict = self.roi_head.get_loss(tb_dict) 30 | 31 | loss = loss + loss_rpn + loss_rcnn 32 | return loss, tb_dict, disp_dict 33 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/mean_vfe.py: -------------------------------------------------------------------------------- 1 | import torch 2 | 3 | from .vfe_template import VFETemplate 4 | 5 | 6 | class MeanVFE(VFETemplate): 7 | def __init__(self, model_cfg, num_point_features, **kwargs): 8 | super().__init__(model_cfg=model_cfg) 9 | self.num_point_features = num_point_features 10 | 11 | def get_output_feature_dim(self): 12 | return self.num_point_features 13 | 14 | def forward(self, batch_dict, **kwargs): 15 | """ 16 | Args: 17 | batch_dict: 18 | voxels: (num_voxels, max_points_per_voxel, C) 19 | voxel_num_points: optional (num_voxels) 20 | **kwargs: 21 | 22 | Returns: 23 | vfe_features: (num_voxels, C) 24 | """ 25 | voxel_features, voxel_num_points = batch_dict['voxels'], batch_dict['voxel_num_points'] 26 | points_mean = voxel_features[:, :, :].sum(dim=1, keepdim=False) 27 | normalizer = torch.clamp_min(voxel_num_points.view(-1, 1), min=1.0).type_as(voxel_features) 28 | points_mean = points_mean / normalizer 29 | batch_dict['voxel_features'] = points_mean.contiguous() 30 | 31 | return batch_dict 32 | -------------------------------------------------------------------------------- /pcdet/models/model_utils/basic_block_2d.py: -------------------------------------------------------------------------------- 1 | import torch.nn as nn 2 | 3 | 4 | class BasicBlock2D(nn.Module): 5 | 6 | def __init__(self, in_channels, out_channels, **kwargs): 7 | """ 8 | Initializes convolutional block 9 | Args: 10 | in_channels: int, Number of input channels 11 | out_channels: int, Number of output channels 12 | **kwargs: Dict, Extra arguments for nn.Conv2d 13 | """ 14 | super().__init__() 15 | self.in_channels = in_channels 16 | self.out_channels = out_channels 17 | self.conv = nn.Conv2d(in_channels=in_channels, 18 | out_channels=out_channels, 19 | **kwargs) 20 | self.bn = nn.BatchNorm2d(out_channels) 21 | self.relu = nn.ReLU(inplace=True) 22 | 23 | def forward(self, features): 24 | """ 25 | Applies convolutional block 26 | Args: 27 | features: (B, C_in, H, W), Input features 28 | Returns: 29 | x: (B, C_out, H, W), Output features 30 | """ 31 | x = self.conv(features) 32 | x = self.bn(x) 33 | x = self.relu(x) 34 | return x 35 | -------------------------------------------------------------------------------- /pcdet/models/detectors/pv_rcnn.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class PVRCNN(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | for cur_module in self.module_list: 11 | batch_dict = cur_module(batch_dict) 12 | 13 | if self.training: 14 | loss, tb_dict, disp_dict = self.get_training_loss() 15 | 16 | ret_dict = { 17 | 'loss': loss 18 | } 19 | return ret_dict, tb_dict, disp_dict 20 | else: 21 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 22 | return pred_dicts, recall_dicts 23 | 24 | def get_training_loss(self): 25 | disp_dict = {} 26 | loss_rpn, tb_dict = self.dense_head.get_loss() 27 | loss_point, tb_dict = self.point_head.get_loss(tb_dict) 28 | loss_rcnn, tb_dict = self.roi_head.get_loss(tb_dict) 29 | 30 | loss = loss_rpn + loss_point + loss_rcnn 31 | return loss, tb_dict, disp_dict 32 | -------------------------------------------------------------------------------- /pcdet/models/detectors/__init__.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | from .PartA2_net import PartA2Net 3 | from .point_rcnn import PointRCNN 4 | from .pointpillar import PointPillar 5 | from .pv_rcnn import PVRCNN 6 | from .second_net import SECONDNet 7 | from .second_net_iou import SECONDNetIoU 8 | from .caddn import CaDDN 9 | from .voxel_rcnn import VoxelRCNN 10 | from .centerpoint import CenterPoint 11 | from .pv_rcnn_plusplus import PVRCNNPlusPlus 12 | from .rbgnet import RBGNet 13 | from .cagroup3d import CAGroup3D 14 | 15 | __all__ = { 16 | 'Detector3DTemplate': Detector3DTemplate, 17 | 'SECONDNet': SECONDNet, 18 | 'PartA2Net': PartA2Net, 19 | 'PVRCNN': PVRCNN, 20 | 'PointPillar': PointPillar, 21 | 'PointRCNN': PointRCNN, 22 | 'SECONDNetIoU': SECONDNetIoU, 23 | 'CaDDN': CaDDN, 24 | 'VoxelRCNN': VoxelRCNN, 25 | 'CenterPoint': CenterPoint, 26 | 'PVRCNNPlusPlus': PVRCNNPlusPlus, 27 | 'RBGNet': RBGNet, 28 | 'CAGroup3D': CAGroup3D, 29 | } 30 | 31 | 32 | def build_detector(model_cfg, num_class, dataset): 33 | model = __all__[model_cfg.NAME]( 34 | model_cfg=model_cfg, num_class=num_class, dataset=dataset 35 | ) 36 | 37 | return model 38 | -------------------------------------------------------------------------------- /pcdet/models/detectors/PartA2_net.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class PartA2Net(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | for cur_module in self.module_list: 11 | batch_dict = cur_module(batch_dict) 12 | 13 | if self.training: 14 | loss, tb_dict, disp_dict = self.get_training_loss() 15 | 16 | ret_dict = { 17 | 'loss': loss 18 | } 19 | return ret_dict, tb_dict, disp_dict 20 | else: 21 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 22 | return pred_dicts, recall_dicts 23 | 24 | def get_training_loss(self): 25 | disp_dict = {} 26 | loss_rpn, tb_dict = self.dense_head.get_loss() 27 | loss_point, tb_dict = self.point_head.get_loss(tb_dict) 28 | loss_rcnn, tb_dict = self.roi_head.get_loss(tb_dict) 29 | 30 | loss = loss_rpn + loss_point + loss_rcnn 31 | return loss, tb_dict, disp_dict 32 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/interpolate_gpu.h: -------------------------------------------------------------------------------- 1 | #ifndef _INTERPOLATE_GPU_H 2 | #define _INTERPOLATE_GPU_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | void three_nn_wrapper_fast(int b, int n, int m, at::Tensor unknown_tensor, 11 | at::Tensor known_tensor, at::Tensor dist2_tensor, at::Tensor idx_tensor); 12 | 13 | void three_nn_kernel_launcher_fast(int b, int n, int m, const float *unknown, 14 | const float *known, float *dist2, int *idx); 15 | 16 | 17 | void three_interpolate_wrapper_fast(int b, int c, int m, int n, at::Tensor points_tensor, 18 | at::Tensor idx_tensor, at::Tensor weight_tensor, at::Tensor out_tensor); 19 | 20 | void three_interpolate_kernel_launcher_fast(int b, int c, int m, int n, 21 | const float *points, const int *idx, const float *weight, float *out); 22 | 23 | 24 | void three_interpolate_grad_wrapper_fast(int b, int c, int n, int m, at::Tensor grad_out_tensor, 25 | at::Tensor idx_tensor, at::Tensor weight_tensor, at::Tensor grad_points_tensor); 26 | 27 | void three_interpolate_grad_kernel_launcher_fast(int b, int c, int n, int m, const float *grad_out, 28 | const int *idx, const float *weight, float *grad_points); 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/pointnet2_api.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "ball_query_gpu.h" 5 | #include "group_points_gpu.h" 6 | #include "sampling_gpu.h" 7 | #include "interpolate_gpu.h" 8 | 9 | 10 | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { 11 | m.def("ball_query_wrapper", &ball_query_wrapper_fast, "ball_query_wrapper_fast"); 12 | 13 | m.def("group_points_wrapper", &group_points_wrapper_fast, "group_points_wrapper_fast"); 14 | m.def("group_points_grad_wrapper", &group_points_grad_wrapper_fast, "group_points_grad_wrapper_fast"); 15 | 16 | m.def("gather_points_wrapper", &gather_points_wrapper_fast, "gather_points_wrapper_fast"); 17 | m.def("gather_points_grad_wrapper", &gather_points_grad_wrapper_fast, "gather_points_grad_wrapper_fast"); 18 | 19 | m.def("farthest_point_sampling_wrapper", &farthest_point_sampling_wrapper, "farthest_point_sampling_wrapper"); 20 | 21 | m.def("three_nn_wrapper", &three_nn_wrapper_fast, "three_nn_wrapper_fast"); 22 | m.def("three_interpolate_wrapper", &three_interpolate_wrapper_fast, "three_interpolate_wrapper_fast"); 23 | m.def("three_interpolate_grad_wrapper", &three_interpolate_grad_wrapper_fast, "three_interpolate_grad_wrapper_fast"); 24 | } 25 | -------------------------------------------------------------------------------- /pcdet/models/detectors/caddn.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class CaDDN(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | for cur_module in self.module_list: 11 | batch_dict = cur_module(batch_dict) 12 | 13 | if self.training: 14 | loss, tb_dict, disp_dict = self.get_training_loss() 15 | 16 | ret_dict = { 17 | 'loss': loss 18 | } 19 | return ret_dict, tb_dict, disp_dict 20 | else: 21 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 22 | return pred_dicts, recall_dicts 23 | 24 | def get_training_loss(self): 25 | disp_dict = {} 26 | 27 | loss_rpn, tb_dict_rpn = self.dense_head.get_loss() 28 | loss_depth, tb_dict_depth = self.vfe.get_loss() 29 | 30 | tb_dict = { 31 | 'loss_rpn': loss_rpn.item(), 32 | 'loss_depth': loss_depth.item(), 33 | **tb_dict_rpn, 34 | **tb_dict_depth 35 | } 36 | 37 | loss = loss_rpn + loss_depth 38 | return loss, tb_dict, disp_dict 39 | -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/sort_vert.cpp: -------------------------------------------------------------------------------- 1 | #include "utils.h" 2 | #include "sort_vert.h" 3 | 4 | void sort_vertices_wrapper(int b, int n, int m, const float *vertices, const bool *mask, const int *num_valid, int* idx); 5 | 6 | at::Tensor sort_vertices(at::Tensor vertices, at::Tensor mask, at::Tensor num_valid){ 7 | CHECK_CONTIGUOUS(vertices); 8 | CHECK_CONTIGUOUS(mask); 9 | CHECK_CONTIGUOUS(num_valid); 10 | CHECK_CUDA(vertices); 11 | CHECK_CUDA(mask); 12 | CHECK_CUDA(num_valid); 13 | CHECK_IS_FLOAT(vertices); 14 | CHECK_IS_BOOL(mask); 15 | CHECK_IS_INT(num_valid); 16 | 17 | int b = vertices.size(0); 18 | int n = vertices.size(1); 19 | int m = vertices.size(2); 20 | at::Tensor idx = torch::zeros({b, n, MAX_NUM_VERT_IDX}, 21 | at::device(vertices.device()).dtype(at::ScalarType::Int)); 22 | 23 | // fix issue with multi-gpu (kernel only works for cuda:0) 24 | const at::cuda::OptionalCUDAGuard device_guard(device_of(idx)); 25 | 26 | sort_vertices_wrapper(b, n, m, vertices.data_ptr(), mask.data_ptr(), 27 | num_valid.data_ptr(), idx.data_ptr()); 28 | 29 | return idx; 30 | } 31 | 32 | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m){ 33 | m.def("sort_vertices_forward", &sort_vertices, "sort vertices of a convex polygon. forward only"); 34 | } -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/group_points_gpu.h: -------------------------------------------------------------------------------- 1 | /* 2 | Stacked-batch-data version of point grouping, modified from the original implementation of official PointNet++ codes. 3 | Written by Shaoshuai Shi 4 | All Rights Reserved 2019-2020. 5 | */ 6 | 7 | 8 | #ifndef _STACK_GROUP_POINTS_GPU_H 9 | #define _STACK_GROUP_POINTS_GPU_H 10 | 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | 17 | int group_points_wrapper_stack(int B, int M, int C, int nsample, 18 | at::Tensor features_tensor, at::Tensor features_batch_cnt_tensor, 19 | at::Tensor idx_tensor, at::Tensor idx_batch_cnt_tensor, at::Tensor out_tensor); 20 | 21 | void group_points_kernel_launcher_stack(int B, int M, int C, int nsample, 22 | const float *features, const int *features_batch_cnt, const int *idx, const int *idx_batch_cnt, float *out); 23 | 24 | int group_points_grad_wrapper_stack(int B, int M, int C, int N, int nsample, 25 | at::Tensor grad_out_tensor, at::Tensor idx_tensor, at::Tensor idx_batch_cnt_tensor, 26 | at::Tensor features_batch_cnt_tensor, at::Tensor grad_features_tensor); 27 | 28 | void group_points_grad_kernel_launcher_stack(int B, int M, int C, int N, int nsample, 29 | const float *grad_out, const int *idx, const int *idx_batch_cnt, const int *features_batch_cnt, float *grad_features); 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/interpolate_gpu.h: -------------------------------------------------------------------------------- 1 | #ifndef _INTERPOLATE_GPU_H 2 | #define _INTERPOLATE_GPU_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | void three_nn_wrapper_stack(at::Tensor unknown_tensor, 11 | at::Tensor unknown_batch_cnt_tensor, at::Tensor known_tensor, 12 | at::Tensor known_batch_cnt_tensor, at::Tensor dist2_tensor, at::Tensor idx_tensor); 13 | 14 | 15 | void three_interpolate_wrapper_stack(at::Tensor features_tensor, 16 | at::Tensor idx_tensor, at::Tensor weight_tensor, at::Tensor out_tensor); 17 | 18 | 19 | 20 | void three_interpolate_grad_wrapper_stack(at::Tensor grad_out_tensor, at::Tensor idx_tensor, 21 | at::Tensor weight_tensor, at::Tensor grad_features_tensor); 22 | 23 | 24 | void three_nn_kernel_launcher_stack(int batch_size, int N, int M, const float *unknown, 25 | const int *unknown_batch_cnt, const float *known, const int *known_batch_cnt, 26 | float *dist2, int *idx); 27 | 28 | 29 | void three_interpolate_kernel_launcher_stack(int N, int channels, 30 | const float *features, const int *idx, const float *weight, float *out); 31 | 32 | 33 | 34 | void three_interpolate_grad_kernel_launcher_stack(int N, int channels, const float *grad_out, 35 | const int *idx, const float *weight, float *grad_features); 36 | 37 | 38 | 39 | #endif -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/group_points.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | batch version of point grouping, modified from the original implementation of official PointNet++ codes. 3 | Written by Shaoshuai Shi 4 | All Rights Reserved 2018. 5 | */ 6 | 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include "group_points_gpu.h" 14 | 15 | extern THCState *state; 16 | 17 | 18 | int group_points_grad_wrapper_fast(int b, int c, int n, int npoints, int nsample, 19 | at::Tensor grad_out_tensor, at::Tensor idx_tensor, at::Tensor grad_points_tensor) { 20 | 21 | float *grad_points = grad_points_tensor.data(); 22 | const int *idx = idx_tensor.data(); 23 | const float *grad_out = grad_out_tensor.data(); 24 | 25 | group_points_grad_kernel_launcher_fast(b, c, n, npoints, nsample, grad_out, idx, grad_points); 26 | return 1; 27 | } 28 | 29 | 30 | int group_points_wrapper_fast(int b, int c, int n, int npoints, int nsample, 31 | at::Tensor points_tensor, at::Tensor idx_tensor, at::Tensor out_tensor) { 32 | 33 | const float *points = points_tensor.data(); 34 | const int *idx = idx_tensor.data(); 35 | float *out = out_tensor.data(); 36 | 37 | group_points_kernel_launcher_fast(b, c, n, npoints, nsample, points, idx, out); 38 | return 1; 39 | } 40 | -------------------------------------------------------------------------------- /tools/train_utils/log_buffer.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from collections import OrderedDict 3 | 4 | import numpy as np 5 | 6 | 7 | class LogBuffer: 8 | 9 | def __init__(self): 10 | self.val_history = OrderedDict() 11 | self.n_history = OrderedDict() 12 | self.output = OrderedDict() 13 | self.ready = False 14 | 15 | def clear(self) -> None: 16 | self.val_history.clear() 17 | self.n_history.clear() 18 | self.clear_output() 19 | 20 | def clear_output(self) -> None: 21 | self.output.clear() 22 | self.ready = False 23 | 24 | def update(self, vars: dict, count: int = 1) -> None: 25 | assert isinstance(vars, dict) 26 | for key, var in vars.items(): 27 | if key not in self.val_history: 28 | self.val_history[key] = [] 29 | self.n_history[key] = [] 30 | self.val_history[key].append(var) 31 | self.n_history[key].append(count) 32 | 33 | def average(self, n: int = 0) -> None: 34 | """Average latest n values or all values.""" 35 | assert n >= 0 36 | for key in self.val_history: 37 | values = np.array(self.val_history[key][-n:]) 38 | nums = np.array(self.n_history[key][-n:]) 39 | avg = np.sum(values * nums) / np.sum(nums) 40 | self.output[key] = avg 41 | self.ready = True -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/ball_query.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | batch version of ball query, modified from the original implementation of official PointNet++ codes. 3 | Written by Shaoshuai Shi 4 | All Rights Reserved 2018. 5 | */ 6 | 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include "ball_query_gpu.h" 14 | 15 | extern THCState *state; 16 | 17 | #define CHECK_CUDA(x) do { \ 18 | if (!x.type().is_cuda()) { \ 19 | fprintf(stderr, "%s must be CUDA tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 20 | exit(-1); \ 21 | } \ 22 | } while (0) 23 | #define CHECK_CONTIGUOUS(x) do { \ 24 | if (!x.is_contiguous()) { \ 25 | fprintf(stderr, "%s must be contiguous tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 26 | exit(-1); \ 27 | } \ 28 | } while (0) 29 | #define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x) 30 | 31 | 32 | int ball_query_wrapper_fast(int b, int n, int m, float radius, int nsample, 33 | at::Tensor new_xyz_tensor, at::Tensor xyz_tensor, at::Tensor idx_tensor) { 34 | CHECK_INPUT(new_xyz_tensor); 35 | CHECK_INPUT(xyz_tensor); 36 | const float *new_xyz = new_xyz_tensor.data(); 37 | const float *xyz = xyz_tensor.data(); 38 | int *idx = idx_tensor.data(); 39 | 40 | ball_query_kernel_launcher_fast(b, n, m, radius, nsample, new_xyz, xyz, idx); 41 | return 1; 42 | } 43 | -------------------------------------------------------------------------------- /pcdet/ops/knn/src/knn.cpp: -------------------------------------------------------------------------------- 1 | // Modified from https://github.com/CVMI-Lab/PAConv/tree/main/scene_seg/lib/pointops/src/knnquery_heap 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | extern THCState *state; 10 | 11 | #define CHECK_CUDA(x) TORCH_CHECK(x.is_cuda(), #x, " must be a CUDAtensor ") 12 | #define CHECK_CONTIGUOUS(x) TORCH_CHECK(x.is_contiguous(), #x, " must be contiguous ") 13 | #define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x) 14 | 15 | 16 | void knn_kernel_launcher( 17 | int b, 18 | int n, 19 | int m, 20 | int nsample, 21 | const float *xyz, 22 | const float *new_xyz, 23 | int *idx, 24 | float *dist2, 25 | cudaStream_t stream 26 | ); 27 | 28 | void knn_wrapper(int b, int n, int m, int nsample, at::Tensor xyz_tensor, at::Tensor new_xyz_tensor, at::Tensor idx_tensor, at::Tensor dist2_tensor) 29 | { 30 | CHECK_INPUT(new_xyz_tensor); 31 | CHECK_INPUT(xyz_tensor); 32 | 33 | const float *new_xyz = new_xyz_tensor.data_ptr(); 34 | const float *xyz = xyz_tensor.data_ptr(); 35 | int *idx = idx_tensor.data_ptr(); 36 | float *dist2 = dist2_tensor.data_ptr(); 37 | 38 | cudaStream_t stream = at::cuda::getCurrentCUDAStream(); 39 | 40 | knn_kernel_launcher(b, n, m, nsample, xyz, new_xyz, idx, dist2, stream); 41 | } 42 | 43 | 44 | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { 45 | m.def("knn_wrapper", &knn_wrapper, "knn_wrapper"); 46 | } 47 | -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/cuda_utils.h: -------------------------------------------------------------------------------- 1 | #ifndef _CUDA_UTILS_H 2 | #define _CUDA_UTILS_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #define TOTAL_THREADS 512 12 | 13 | inline int opt_n_thread(int work_size){ 14 | const int pow_2 = std::log(static_cast(work_size)) / std::log(2.0); 15 | return max(min(1< (B, C*Z, Y, X) 36 | bev_features = self.block(bev_features) # (B, C*Z, Y, X) -> (B, C, Y, X) 37 | batch_dict["spatial_features"] = bev_features 38 | return batch_dict 39 | -------------------------------------------------------------------------------- /pcdet/models/__init__.py: -------------------------------------------------------------------------------- 1 | from collections import namedtuple 2 | 3 | import numpy as np 4 | import torch 5 | 6 | from .detectors import build_detector 7 | 8 | try: 9 | import kornia 10 | except: 11 | pass 12 | # print('Warning: kornia is not installed. This package is only required by CaDDN') 13 | 14 | 15 | 16 | def build_network(model_cfg, num_class, dataset): 17 | model = build_detector( 18 | model_cfg=model_cfg, num_class=num_class, dataset=dataset 19 | ) 20 | return model 21 | 22 | 23 | def load_data_to_gpu(batch_dict): 24 | for key, val in batch_dict.items(): 25 | if not isinstance(val, np.ndarray): 26 | continue 27 | elif key in ['frame_id', 'metadata', 'calib']: 28 | continue 29 | elif key in ['images']: 30 | batch_dict[key] = kornia.image_to_tensor(val).float().cuda().contiguous() 31 | elif key in ['image_shape']: 32 | batch_dict[key] = torch.from_numpy(val).int().cuda() 33 | else: 34 | batch_dict[key] = torch.from_numpy(val).float().cuda() 35 | 36 | 37 | def model_fn_decorator(): 38 | ModelReturn = namedtuple('ModelReturn', ['loss', 'tb_dict', 'disp_dict']) 39 | 40 | def model_func(model, batch_dict): 41 | load_data_to_gpu(batch_dict) 42 | ret_dict, tb_dict, disp_dict = model(batch_dict) 43 | 44 | loss = ret_dict['loss'].mean() 45 | if hasattr(model, 'update_global_step'): 46 | model.update_global_step() 47 | else: 48 | model.module.update_global_step() 49 | 50 | return ModelReturn(loss, tb_dict, disp_dict) 51 | 52 | return model_func 53 | -------------------------------------------------------------------------------- /pcdet/ops/rotated_iou/cuda_op/utils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | #define CHECK_CUDA(x) \ 7 | do { \ 8 | TORCH_CHECK(x.is_cuda(), #x " must be a CUDA tensor"); \ 9 | } while (0) 10 | 11 | #define CHECK_CONTIGUOUS(x) \ 12 | do { \ 13 | TORCH_CHECK(x.is_contiguous(), #x " must ne a contiguous tensor"); \ 14 | } while (0) 15 | 16 | #define CHECK_IS_INT(x) \ 17 | do { \ 18 | TORCH_CHECK(x.scalar_type()==at::ScalarType::Int, \ 19 | #x " must be a int tensor"); \ 20 | } while (0) 21 | 22 | #define CHECK_IS_FLOAT(x) \ 23 | do { \ 24 | TORCH_CHECK(x.scalar_type()==at::ScalarType::Float, \ 25 | #x " must be a float tensor"); \ 26 | } while (0) 27 | 28 | #define CHECK_IS_BOOL(x) \ 29 | do { \ 30 | TORCH_CHECK(x.scalar_type()==at::ScalarType::Bool, \ 31 | #x " must be a bool tensor"); \ 32 | } while (0) -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/voxel_query.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "voxel_query_gpu.h" 10 | 11 | extern THCState *state; 12 | 13 | #define CHECK_CUDA(x) do { \ 14 | if (!x.type().is_cuda()) { \ 15 | fprintf(stderr, "%s must be CUDA tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 16 | exit(-1); \ 17 | } \ 18 | } while (0) 19 | #define CHECK_CONTIGUOUS(x) do { \ 20 | if (!x.is_contiguous()) { \ 21 | fprintf(stderr, "%s must be contiguous tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 22 | exit(-1); \ 23 | } \ 24 | } while (0) 25 | #define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x) 26 | 27 | 28 | int voxel_query_wrapper_stack(int M, int R1, int R2, int R3, int nsample, float radius, 29 | int z_range, int y_range, int x_range, at::Tensor new_xyz_tensor, at::Tensor xyz_tensor, 30 | at::Tensor new_coords_tensor, at::Tensor point_indices_tensor, at::Tensor idx_tensor) { 31 | CHECK_INPUT(new_coords_tensor); 32 | CHECK_INPUT(point_indices_tensor); 33 | CHECK_INPUT(new_xyz_tensor); 34 | CHECK_INPUT(xyz_tensor); 35 | 36 | const float *new_xyz = new_xyz_tensor.data(); 37 | const float *xyz = xyz_tensor.data(); 38 | const int *new_coords = new_coords_tensor.data(); 39 | const int *point_indices = point_indices_tensor.data(); 40 | int *idx = idx_tensor.data(); 41 | 42 | voxel_query_kernel_launcher_stack(M, R1, R2, R3, nsample, radius, z_range, y_range, x_range, new_xyz, xyz, new_coords, point_indices, idx); 43 | return 1; 44 | } 45 | -------------------------------------------------------------------------------- /pcdet/models/backbones_2d/map_to_bev/pointpillar_scatter.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | 4 | 5 | class PointPillarScatter(nn.Module): 6 | def __init__(self, model_cfg, grid_size, **kwargs): 7 | super().__init__() 8 | 9 | self.model_cfg = model_cfg 10 | self.num_bev_features = self.model_cfg.NUM_BEV_FEATURES 11 | self.nx, self.ny, self.nz = grid_size 12 | assert self.nz == 1 13 | 14 | def forward(self, batch_dict, **kwargs): 15 | pillar_features, coords = batch_dict['pillar_features'], batch_dict['voxel_coords'] 16 | batch_spatial_features = [] 17 | batch_size = coords[:, 0].max().int().item() + 1 18 | for batch_idx in range(batch_size): 19 | spatial_feature = torch.zeros( 20 | self.num_bev_features, 21 | self.nz * self.nx * self.ny, 22 | dtype=pillar_features.dtype, 23 | device=pillar_features.device) 24 | 25 | batch_mask = coords[:, 0] == batch_idx 26 | this_coords = coords[batch_mask, :] 27 | indices = this_coords[:, 1] + this_coords[:, 2] * self.nx + this_coords[:, 3] 28 | indices = indices.type(torch.long) 29 | pillars = pillar_features[batch_mask, :] 30 | pillars = pillars.t() 31 | spatial_feature[:, indices] = pillars 32 | batch_spatial_features.append(spatial_feature) 33 | 34 | batch_spatial_features = torch.stack(batch_spatial_features, 0) 35 | batch_spatial_features = batch_spatial_features.view(batch_size, self.num_bev_features * self.nz, self.ny, self.nx) 36 | batch_dict['spatial_features'] = batch_spatial_features 37 | return batch_dict 38 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/sampling.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | batch version of point sampling and gathering, modified from the original implementation of official PointNet++ codes. 3 | Written by Shaoshuai Shi 4 | All Rights Reserved 2018. 5 | */ 6 | 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include "sampling_gpu.h" 14 | 15 | extern THCState *state; 16 | 17 | 18 | int gather_points_wrapper_fast(int b, int c, int n, int npoints, 19 | at::Tensor points_tensor, at::Tensor idx_tensor, at::Tensor out_tensor){ 20 | const float *points = points_tensor.data(); 21 | const int *idx = idx_tensor.data(); 22 | float *out = out_tensor.data(); 23 | 24 | gather_points_kernel_launcher_fast(b, c, n, npoints, points, idx, out); 25 | return 1; 26 | } 27 | 28 | 29 | int gather_points_grad_wrapper_fast(int b, int c, int n, int npoints, 30 | at::Tensor grad_out_tensor, at::Tensor idx_tensor, at::Tensor grad_points_tensor) { 31 | 32 | const float *grad_out = grad_out_tensor.data(); 33 | const int *idx = idx_tensor.data(); 34 | float *grad_points = grad_points_tensor.data(); 35 | 36 | gather_points_grad_kernel_launcher_fast(b, c, n, npoints, grad_out, idx, grad_points); 37 | return 1; 38 | } 39 | 40 | 41 | int farthest_point_sampling_wrapper(int b, int n, int m, 42 | at::Tensor points_tensor, at::Tensor temp_tensor, at::Tensor idx_tensor) { 43 | 44 | const float *points = points_tensor.data(); 45 | float *temp = temp_tensor.data(); 46 | int *idx = idx_tensor.data(); 47 | 48 | farthest_point_sampling_kernel_launcher(b, n, m, points, temp, idx); 49 | return 1; 50 | } 51 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/ball_query.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Stacked-batch-data version of ball query, modified from the original implementation of official PointNet++ codes. 3 | Written by Shaoshuai Shi 4 | All Rights Reserved 2019-2020. 5 | */ 6 | 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include "ball_query_gpu.h" 14 | 15 | extern THCState *state; 16 | 17 | #define CHECK_CUDA(x) do { \ 18 | if (!x.type().is_cuda()) { \ 19 | fprintf(stderr, "%s must be CUDA tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 20 | exit(-1); \ 21 | } \ 22 | } while (0) 23 | #define CHECK_CONTIGUOUS(x) do { \ 24 | if (!x.is_contiguous()) { \ 25 | fprintf(stderr, "%s must be contiguous tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 26 | exit(-1); \ 27 | } \ 28 | } while (0) 29 | #define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x) 30 | 31 | int ball_query_wrapper_stack(int B, int M, float radius, int nsample, 32 | at::Tensor new_xyz_tensor, at::Tensor new_xyz_batch_cnt_tensor, 33 | at::Tensor xyz_tensor, at::Tensor xyz_batch_cnt_tensor, at::Tensor idx_tensor) { 34 | CHECK_INPUT(new_xyz_tensor); 35 | CHECK_INPUT(xyz_tensor); 36 | CHECK_INPUT(new_xyz_batch_cnt_tensor); 37 | CHECK_INPUT(xyz_batch_cnt_tensor); 38 | 39 | const float *new_xyz = new_xyz_tensor.data(); 40 | const float *xyz = xyz_tensor.data(); 41 | const int *new_xyz_batch_cnt = new_xyz_batch_cnt_tensor.data(); 42 | const int *xyz_batch_cnt = xyz_batch_cnt_tensor.data(); 43 | int *idx = idx_tensor.data(); 44 | 45 | ball_query_kernel_launcher_stack(B, M, radius, nsample, new_xyz, new_xyz_batch_cnt, xyz, xyz_batch_cnt, idx); 46 | return 1; 47 | } 48 | -------------------------------------------------------------------------------- /data/lyft/ImageSets/val.txt: -------------------------------------------------------------------------------- 1 | host-a004-lidar0-1233080749298771736-1233080774198118416 2 | host-a004-lidar0-1232905197298264546-1232905222198133856 3 | host-a011-lidar0-1232732468299489666-1232732493199050666 4 | host-a101-lidar0-1241561147998866622-1241561172899320654 5 | host-a006-lidar0-1237322885198285226-1237322910098576786 6 | host-a004-lidar0-1233963848198981116-1233963873098642176 7 | host-a011-lidar0-1232752543198025666-1232752568099126026 8 | host-a004-lidar0-1232842367198056546-1232842392097783226 9 | host-a004-lidar0-1233615989298293586-1233616014198854636 10 | host-a011-lidar0-1233965426299054906-1233965451199121906 11 | host-a011-lidar0-1236104034298928316-1236104059198988026 12 | host-a007-lidar0-1233946614199227636-1233946639098289666 13 | host-a015-lidar0-1235423696198069636-1235423721098551296 14 | host-a004-lidar0-1233014843199117706-1233014868098023786 15 | host-a011-lidar0-1236093962299300416-1236093987199363346 16 | host-a011-lidar0-1234639296198260986-1234639321099417316 17 | host-a011-lidar0-1233524871199389346-1233524896098591466 18 | host-a011-lidar0-1235933781298838116-1235933806199517736 19 | host-a011-lidar0-1233965312298542226-1233965337198958586 20 | host-a011-lidar0-1233090567199118316-1233090592098933996 21 | host-a007-lidar0-1233621256298511876-1233621281197988026 22 | host-a007-lidar0-1233079617197863906-1233079642098533586 23 | host-a015-lidar0-1236112516098396876-1236112540999028556 24 | host-a008-lidar0-1236016333197799906-1236016358099063636 25 | host-a101-lidar0-1240710366399037786-1240710391298976894 26 | host-a102-lidar0-1242755350298764586-1242755375198787666 27 | host-a101-lidar0-1240877587199107226-1240877612099413030 28 | host-a101-lidar0-1242583745399163026-1242583770298821706 29 | host-a011-lidar0-1232817034199342856-1232817059098800346 30 | host-a004-lidar0-1232905117299287546-1232905142198246226 -------------------------------------------------------------------------------- /tools/cfgs/dataset_configs/sunrgbd_dataset.yaml: -------------------------------------------------------------------------------- 1 | DATASET: 'SunrgbdDataset' 2 | DATA_PATH: '../data/sunrgbd' 3 | PROCESSED_DATA_TAG: 'sunrgbd_processed_data_v0_5_0' 4 | 5 | POINT_CLOUD_RANGE: [-40, -40, -10, 40, 40, 10] 6 | 7 | DATA_SPLIT: { 8 | 'train': train, 9 | 'test': val 10 | } 11 | 12 | REPEAT: { 13 | 'train': 4, 14 | 'test': 1 15 | } 16 | 17 | INFO_PATH: { 18 | 'train': [sunrgbd_infos_train.pkl], 19 | 'test': [sunrgbd_infos_val.pkl], 20 | } 21 | 22 | GET_ITEM_LIST: ["points"] 23 | 24 | FILTER_EMPTY_BOXES_FOR_TRAIN: True 25 | 26 | DATA_AUGMENTOR_TRAIN: 27 | DISABLE_AUG_LIST: ['placeholder'] 28 | AUG_CONFIG_LIST: 29 | - NAME: indoor_point_sample 30 | num_points: 100000 # change to 100000 31 | 32 | - NAME: random_world_flip 33 | ALONG_AXIS_LIST: ['y'] 34 | 35 | - NAME: random_world_rotation_mmdet3d 36 | WORLD_ROT_ANGLE: [-0.523599, 0.523599] 37 | 38 | - NAME: random_world_scaling 39 | WORLD_SCALE_RANGE: [0.85, 1.15] 40 | 41 | - NAME: random_world_translation 42 | ALONG_AXIS_LIST: ['x', 'y', 'z'] 43 | NOISE_TRANSLATE_STD: 0.1 44 | 45 | DATA_AUGMENTOR_TEST: 46 | DISABLE_AUG_LIST: ['placeholder'] 47 | AUG_CONFIG_LIST: 48 | - NAME: indoor_point_sample 49 | num_points: 100000 50 | 51 | # No Use 52 | DATA_AUGMENTOR: 53 | DISABLE_AUG_LIST: ['placeholder'] 54 | AUG_CONFIG_LIST: 55 | - NAME: indoor_point_sample 56 | num_points: 50000 # 50000 57 | 58 | POINT_FEATURE_ENCODING: { 59 | encoding_type: absolute_coordinates_encoding, 60 | used_feature_list: ['x', 'y', 'z', 'r', 'g', 'b'], 61 | src_feature_list: ['x', 'y', 'z', 'r', 'g', 'b'], 62 | } 63 | 64 | 65 | DATA_PROCESSOR: 66 | - NAME: mask_points_and_boxes_outside_range 67 | REMOVE_OUTSIDE_BOXES: False 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /pcdet/models/detectors/centerpoint.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class CenterPoint(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | for cur_module in self.module_list: 11 | batch_dict = cur_module(batch_dict) 12 | 13 | if self.training: 14 | loss, tb_dict, disp_dict = self.get_training_loss() 15 | 16 | ret_dict = { 17 | 'loss': loss 18 | } 19 | return ret_dict, tb_dict, disp_dict 20 | else: 21 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 22 | return pred_dicts, recall_dicts 23 | 24 | def get_training_loss(self): 25 | disp_dict = {} 26 | 27 | loss_rpn, tb_dict = self.dense_head.get_loss() 28 | tb_dict = { 29 | 'loss_rpn': loss_rpn.item(), 30 | **tb_dict 31 | } 32 | 33 | loss = loss_rpn 34 | return loss, tb_dict, disp_dict 35 | 36 | def post_processing(self, batch_dict): 37 | post_process_cfg = self.model_cfg.POST_PROCESSING 38 | batch_size = batch_dict['batch_size'] 39 | final_pred_dict = batch_dict['final_box_dicts'] 40 | recall_dict = {} 41 | for index in range(batch_size): 42 | pred_boxes = final_pred_dict[index]['pred_boxes'] 43 | 44 | recall_dict = self.generate_recall_record( 45 | box_preds=pred_boxes, 46 | recall_dict=recall_dict, batch_index=index, data_dict=batch_dict, 47 | thresh_list=post_process_cfg.RECALL_THRESH_LIST 48 | ) 49 | 50 | return final_pred_dict, recall_dict 51 | -------------------------------------------------------------------------------- /pcdet/datasets/kitti/kitti_object_eval_python/README.md: -------------------------------------------------------------------------------- 1 | # kitti-object-eval-python 2 | **Note**: This is borrowed from [traveller59/kitti-object-eval-python](https://github.com/traveller59/kitti-object-eval-python) 3 | 4 | Fast kitti object detection eval in python(finish eval in less than 10 second), support 2d/bev/3d/aos. , support coco-style AP. If you use command line interface, numba need some time to compile jit functions. 5 | ## Dependencies 6 | Only support python 3.6+, need `numpy`, `skimage`, `numba`, `fire`. If you have Anaconda, just install `cudatoolkit` in anaconda. Otherwise, please reference to this [page](https://github.com/numba/numba#custom-python-environments) to set up llvm and cuda for numba. 7 | * Install by conda: 8 | ``` 9 | conda install -c numba cudatoolkit=x.x (8.0, 9.0, 9.1, depend on your environment) 10 | ``` 11 | ## Usage 12 | * commandline interface: 13 | ``` 14 | python evaluate.py evaluate --label_path=/path/to/your_gt_label_folder --result_path=/path/to/your_result_folder --label_split_file=/path/to/val.txt --current_class=0 --coco=False 15 | ``` 16 | * python interface: 17 | ```Python 18 | import kitti_common as kitti 19 | from eval import get_official_eval_result, get_coco_eval_result 20 | def _read_imageset_file(path): 21 | with open(path, 'r') as f: 22 | lines = f.readlines() 23 | return [int(line) for line in lines] 24 | det_path = "/path/to/your_result_folder" 25 | dt_annos = kitti.get_label_annos(det_path) 26 | gt_path = "/path/to/your_gt_label_folder" 27 | gt_split_file = "/path/to/val.txt" # from https://xiaozhichen.github.io/files/mv3d/imagesets.tar.gz 28 | val_image_ids = _read_imageset_file(gt_split_file) 29 | gt_annos = kitti.get_label_annos(gt_path, val_image_ids) 30 | print(get_official_eval_result(gt_annos, dt_annos, 0)) # 6s in my computer 31 | print(get_coco_eval_result(gt_annos, dt_annos, 0)) # 18s in my computer 32 | ``` 33 | -------------------------------------------------------------------------------- /docs/INSTALL.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | ### Requirements 4 | All the codes are tested in the following environment: 5 | * Linux (tested on Ubuntu 14.04/16.04/18.04/20.04/21.04) 6 | * Python 3.6+ 7 | * PyTorch 1.1 or higher (tested on PyTorch 1.1, 1,3, 1,5~1.10) 8 | * CUDA 9.0 or higher (PyTorch 1.3+ needs CUDA 9.2+) 9 | * [`spconv v1.0 (commit 8da6f96)`](https://github.com/traveller59/spconv/tree/8da6f967fb9a054d8870c3515b1b44eca2103634) or [`spconv v1.2`](https://github.com/traveller59/spconv) or [`spconv v2.x`](https://github.com/traveller59/spconv) 10 | 11 | 12 | ### Install `pcdet v0.5` 13 | NOTE: Please re-install `pcdet v0.5` by running `python setup.py develop` even if you have already installed previous version. 14 | 15 | a. Clone this repository. 16 | ```shell 17 | git clone https://github.com/open-mmlab/OpenPCDet.git 18 | ``` 19 | 20 | b. Install the dependent libraries as follows: 21 | 22 | [comment]: <> (* Install the dependent python libraries: ) 23 | 24 | [comment]: <> (```) 25 | 26 | [comment]: <> (pip install -r requirements.txt ) 27 | 28 | [comment]: <> (```) 29 | 30 | * Install the SparseConv library, we use the implementation from [`[spconv]`](https://github.com/traveller59/spconv). 31 | * If you use PyTorch 1.1, then make sure you install the `spconv v1.0` with ([commit 8da6f96](https://github.com/traveller59/spconv/tree/8da6f967fb9a054d8870c3515b1b44eca2103634)) instead of the latest one. 32 | * If you use PyTorch 1.3+, then you need to install the `spconv v1.2`. As mentioned by the author of [`spconv`](https://github.com/traveller59/spconv), you need to use their docker if you use PyTorch 1.4+. 33 | * You could also install latest `spconv v2.x` with pip, see the official documents of [spconv](https://github.com/traveller59/spconv). 34 | 35 | c. Install this `pcdet` library and its dependent libraries by running the following command: 36 | ```shell 37 | python setup.py develop 38 | ``` 39 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/pointnet2_api.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "ball_query_gpu.h" 5 | #include "group_points_gpu.h" 6 | #include "sampling_gpu.h" 7 | #include "interpolate_gpu.h" 8 | #include "voxel_query_gpu.h" 9 | #include "vector_pool_gpu.h" 10 | 11 | 12 | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { 13 | m.def("ball_query_wrapper", &ball_query_wrapper_stack, "ball_query_wrapper_stack"); 14 | m.def("voxel_query_wrapper", &voxel_query_wrapper_stack, "voxel_query_wrapper_stack"); 15 | 16 | m.def("farthest_point_sampling_wrapper", &farthest_point_sampling_wrapper, "farthest_point_sampling_wrapper"); 17 | m.def("stack_farthest_point_sampling_wrapper", &stack_farthest_point_sampling_wrapper, "stack_farthest_point_sampling_wrapper"); 18 | 19 | m.def("group_points_wrapper", &group_points_wrapper_stack, "group_points_wrapper_stack"); 20 | m.def("group_points_grad_wrapper", &group_points_grad_wrapper_stack, "group_points_grad_wrapper_stack"); 21 | 22 | m.def("three_nn_wrapper", &three_nn_wrapper_stack, "three_nn_wrapper_stack"); 23 | m.def("three_interpolate_wrapper", &three_interpolate_wrapper_stack, "three_interpolate_wrapper_stack"); 24 | m.def("three_interpolate_grad_wrapper", &three_interpolate_grad_wrapper_stack, "three_interpolate_grad_wrapper_stack"); 25 | 26 | m.def("query_stacked_local_neighbor_idxs_wrapper_stack", &query_stacked_local_neighbor_idxs_wrapper_stack, "query_stacked_local_neighbor_idxs_wrapper_stack"); 27 | m.def("query_three_nn_by_stacked_local_idxs_wrapper_stack", &query_three_nn_by_stacked_local_idxs_wrapper_stack, "query_three_nn_by_stacked_local_idxs_wrapper_stack"); 28 | 29 | m.def("vector_pool_wrapper", &vector_pool_wrapper_stack, "vector_pool_grad_wrapper_stack"); 30 | m.def("vector_pool_grad_wrapper", &vector_pool_grad_wrapper_stack, "vector_pool_grad_wrapper_stack"); 31 | } 32 | -------------------------------------------------------------------------------- /tools/cfgs/dataset_configs/kitti_dataset.yaml: -------------------------------------------------------------------------------- 1 | DATASET: 'KittiDataset' 2 | DATA_PATH: '../data/kitti' 3 | 4 | POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1] 5 | 6 | DATA_SPLIT: { 7 | 'train': train, 8 | 'test': val 9 | } 10 | 11 | INFO_PATH: { 12 | 'train': [kitti_infos_train.pkl], 13 | 'test': [kitti_infos_val.pkl], 14 | } 15 | 16 | GET_ITEM_LIST: ["points"] 17 | FOV_POINTS_ONLY: True 18 | 19 | DATA_AUGMENTOR: 20 | DISABLE_AUG_LIST: ['placeholder'] 21 | AUG_CONFIG_LIST: 22 | - NAME: gt_sampling 23 | USE_ROAD_PLANE: True 24 | DB_INFO_PATH: 25 | - kitti_dbinfos_train.pkl 26 | PREPARE: { 27 | filter_by_min_points: ['Car:5', 'Pedestrian:5', 'Cyclist:5'], 28 | filter_by_difficulty: [-1], 29 | } 30 | 31 | SAMPLE_GROUPS: ['Car:20','Pedestrian:15', 'Cyclist:15'] 32 | NUM_POINT_FEATURES: 4 33 | DATABASE_WITH_FAKELIDAR: False 34 | REMOVE_EXTRA_WIDTH: [0.0, 0.0, 0.0] 35 | LIMIT_WHOLE_SCENE: True 36 | 37 | - NAME: random_world_flip 38 | ALONG_AXIS_LIST: ['x'] 39 | 40 | - NAME: random_world_rotation 41 | WORLD_ROT_ANGLE: [-0.78539816, 0.78539816] 42 | 43 | - NAME: random_world_scaling 44 | WORLD_SCALE_RANGE: [0.95, 1.05] 45 | 46 | 47 | POINT_FEATURE_ENCODING: { 48 | encoding_type: absolute_coordinates_encoding, 49 | used_feature_list: ['x', 'y', 'z', 'intensity'], 50 | src_feature_list: ['x', 'y', 'z', 'intensity'], 51 | } 52 | 53 | 54 | DATA_PROCESSOR: 55 | - NAME: mask_points_and_boxes_outside_range 56 | REMOVE_OUTSIDE_BOXES: True 57 | 58 | - NAME: shuffle_points 59 | SHUFFLE_ENABLED: { 60 | 'train': True, 61 | 'test': False 62 | } 63 | 64 | - NAME: transform_points_to_voxels 65 | VOXEL_SIZE: [0.05, 0.05, 0.1] 66 | MAX_POINTS_PER_VOXEL: 5 67 | MAX_NUMBER_OF_VOXELS: { 68 | 'train': 16000, 69 | 'test': 40000 70 | } 71 | -------------------------------------------------------------------------------- /tools/cfgs/dataset_configs/scannet_dataset.yaml: -------------------------------------------------------------------------------- 1 | DATASET: 'ScannetDataset' 2 | DATA_PATH: '../data/scannet' 3 | PROCESSED_DATA_TAG: 'scannet_processed_data_v0_5_0' 4 | 5 | POINT_CLOUD_RANGE: [-40, -40, -10, 40, 40, 10] 6 | 7 | DATA_SPLIT: { 8 | 'train': train, 9 | 'test': val 10 | } 11 | 12 | REPEAT: { 13 | 'train': 10, 14 | 'test': 1 15 | } 16 | 17 | INFO_PATH: { 18 | 'train': [scannet_infos_train.pkl], 19 | 'test': [scannet_infos_val.pkl], 20 | } 21 | 22 | GET_ITEM_LIST: ["points", "instance_mask", "semantic_mask"] 23 | 24 | FILTER_EMPTY_BOXES_FOR_TRAIN: True 25 | 26 | DATA_AUGMENTOR_TRAIN: 27 | DISABLE_AUG_LIST: ['placeholder'] 28 | AUG_CONFIG_LIST: 29 | - NAME: global_alignment 30 | rotation_axis: 2 31 | 32 | - NAME: point_seg_class_mapping 33 | valid_cat_ids: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39] 34 | max_cat_id: 40 35 | 36 | - NAME: random_world_flip 37 | ALONG_AXIS_LIST: ['x', 'y'] 38 | 39 | - NAME: random_world_rotation 40 | WORLD_ROT_ANGLE: [-0.087266, 0.087266] 41 | 42 | - NAME: random_world_scaling 43 | WORLD_SCALE_RANGE: [.9, 1.1] 44 | 45 | - NAME: random_world_translation 46 | ALONG_AXIS_LIST: ['x', 'y', 'z'] 47 | NOISE_TRANSLATE_STD: 0.1 48 | 49 | DATA_AUGMENTOR_TEST: 50 | DISABLE_AUG_LIST: ['placeholder'] 51 | AUG_CONFIG_LIST: 52 | - NAME: global_alignment 53 | rotation_axis: 2 54 | 55 | # No Use 56 | DATA_AUGMENTOR: 57 | DISABLE_AUG_LIST: ['placeholder'] 58 | AUG_CONFIG_LIST: 59 | - NAME: global_alignment 60 | rotation_axis: 2 61 | 62 | 63 | 64 | 65 | POINT_FEATURE_ENCODING: { 66 | encoding_type: absolute_coordinates_encoding, 67 | used_feature_list: ['x', 'y', 'z', 'r', 'g', 'b'], 68 | src_feature_list: ['x', 'y', 'z', 'r', 'g', 'b'], 69 | } 70 | 71 | 72 | DATA_PROCESSOR: 73 | - NAME: mask_points_and_boxes_outside_range 74 | REMOVE_OUTSIDE_BOXES: True 75 | 76 | 77 | -------------------------------------------------------------------------------- /pcdet/models/backbones_3d/vfe/image_vfe_modules/ffn/ddn_loss/balancer.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | 4 | from pcdet.utils import loss_utils 5 | 6 | 7 | class Balancer(nn.Module): 8 | def __init__(self, fg_weight, bg_weight, downsample_factor=1): 9 | """ 10 | Initialize fixed foreground/background loss balancer 11 | Args: 12 | fg_weight: float, Foreground loss weight 13 | bg_weight: float, Background loss weight 14 | downsample_factor: int, Depth map downsample factor 15 | """ 16 | super().__init__() 17 | self.fg_weight = fg_weight 18 | self.bg_weight = bg_weight 19 | self.downsample_factor = downsample_factor 20 | 21 | def forward(self, loss, gt_boxes2d): 22 | """ 23 | Forward pass 24 | Args: 25 | loss: (B, H, W), Pixel-wise loss 26 | gt_boxes2d: (B, N, 4), 2D box labels for foreground/background balancing 27 | Returns: 28 | loss: (1), Total loss after foreground/background balancing 29 | tb_dict: dict[float], All losses to log in tensorboard 30 | """ 31 | # Compute masks 32 | fg_mask = loss_utils.compute_fg_mask(gt_boxes2d=gt_boxes2d, 33 | shape=loss.shape, 34 | downsample_factor=self.downsample_factor, 35 | device=loss.device) 36 | bg_mask = ~fg_mask 37 | 38 | # Compute balancing weights 39 | weights = self.fg_weight * fg_mask + self.bg_weight * bg_mask 40 | num_pixels = fg_mask.sum() + bg_mask.sum() 41 | 42 | # Compute losses 43 | loss *= weights 44 | fg_loss = loss[fg_mask].sum() / num_pixels 45 | bg_loss = loss[bg_mask].sum() / num_pixels 46 | 47 | # Get total loss 48 | loss = fg_loss + bg_loss 49 | tb_dict = {"balancer_loss": loss.item(), "fg_loss": fg_loss.item(), "bg_loss": bg_loss.item()} 50 | return loss, tb_dict 51 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_stack/src/sampling.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #include "sampling_gpu.h" 7 | 8 | extern THCState *state; 9 | #define CHECK_CUDA(x) do { \ 10 | if (!x.type().is_cuda()) { \ 11 | fprintf(stderr, "%s must be CUDA tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 12 | exit(-1); \ 13 | } \ 14 | } while (0) 15 | #define CHECK_CONTIGUOUS(x) do { \ 16 | if (!x.is_contiguous()) { \ 17 | fprintf(stderr, "%s must be contiguous tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 18 | exit(-1); \ 19 | } \ 20 | } while (0) 21 | #define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x) 22 | 23 | 24 | int farthest_point_sampling_wrapper(int b, int n, int m, 25 | at::Tensor points_tensor, at::Tensor temp_tensor, at::Tensor idx_tensor) { 26 | 27 | CHECK_INPUT(points_tensor); 28 | CHECK_INPUT(temp_tensor); 29 | CHECK_INPUT(idx_tensor); 30 | 31 | const float *points = points_tensor.data(); 32 | float *temp = temp_tensor.data(); 33 | int *idx = idx_tensor.data(); 34 | 35 | farthest_point_sampling_kernel_launcher(b, n, m, points, temp, idx); 36 | return 1; 37 | } 38 | 39 | 40 | int stack_farthest_point_sampling_wrapper(at::Tensor points_tensor, 41 | at::Tensor temp_tensor, at::Tensor xyz_batch_cnt_tensor, at::Tensor idx_tensor, 42 | at::Tensor num_sampled_points_tensor) { 43 | 44 | CHECK_INPUT(points_tensor); 45 | CHECK_INPUT(temp_tensor); 46 | CHECK_INPUT(idx_tensor); 47 | CHECK_INPUT(xyz_batch_cnt_tensor); 48 | CHECK_INPUT(num_sampled_points_tensor); 49 | 50 | int batch_size = xyz_batch_cnt_tensor.size(0); 51 | int N = points_tensor.size(0); 52 | const float *points = points_tensor.data(); 53 | float *temp = temp_tensor.data(); 54 | int *xyz_batch_cnt = xyz_batch_cnt_tensor.data(); 55 | int *idx = idx_tensor.data(); 56 | int *num_sampled_points = num_sampled_points_tensor.data(); 57 | 58 | stack_farthest_point_sampling_kernel_launcher(N, batch_size, points, temp, xyz_batch_cnt, idx, num_sampled_points); 59 | return 1; 60 | } -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/interpolate.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | batch version of point interpolation, modified from the original implementation of official PointNet++ codes. 3 | Written by Shaoshuai Shi 4 | All Rights Reserved 2018. 5 | */ 6 | 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include "interpolate_gpu.h" 17 | 18 | extern THCState *state; 19 | 20 | 21 | void three_nn_wrapper_fast(int b, int n, int m, at::Tensor unknown_tensor, 22 | at::Tensor known_tensor, at::Tensor dist2_tensor, at::Tensor idx_tensor) { 23 | const float *unknown = unknown_tensor.data(); 24 | const float *known = known_tensor.data(); 25 | float *dist2 = dist2_tensor.data(); 26 | int *idx = idx_tensor.data(); 27 | 28 | three_nn_kernel_launcher_fast(b, n, m, unknown, known, dist2, idx); 29 | } 30 | 31 | 32 | void three_interpolate_wrapper_fast(int b, int c, int m, int n, 33 | at::Tensor points_tensor, 34 | at::Tensor idx_tensor, 35 | at::Tensor weight_tensor, 36 | at::Tensor out_tensor) { 37 | 38 | const float *points = points_tensor.data(); 39 | const float *weight = weight_tensor.data(); 40 | float *out = out_tensor.data(); 41 | const int *idx = idx_tensor.data(); 42 | 43 | three_interpolate_kernel_launcher_fast(b, c, m, n, points, idx, weight, out); 44 | } 45 | 46 | void three_interpolate_grad_wrapper_fast(int b, int c, int n, int m, 47 | at::Tensor grad_out_tensor, 48 | at::Tensor idx_tensor, 49 | at::Tensor weight_tensor, 50 | at::Tensor grad_points_tensor) { 51 | 52 | const float *grad_out = grad_out_tensor.data(); 53 | const float *weight = weight_tensor.data(); 54 | float *grad_points = grad_points_tensor.data(); 55 | const int *idx = idx_tensor.data(); 56 | 57 | three_interpolate_grad_kernel_launcher_fast(b, c, n, m, grad_out, idx, weight, grad_points); 58 | } 59 | -------------------------------------------------------------------------------- /pcdet/ops/knn/setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | from torch.utils.cpp_extension import BuildExtension, CUDAExtension 3 | 4 | setup( 5 | name='KNN_OP', 6 | ext_modules=[ 7 | CUDAExtension('KNN_OP', [ 8 | 'src/knn.cpp', 9 | 'src/knn_cuda.cu' 10 | ], extra_compile_args={'cxx': ['-g'], 'nvcc': ['-O2']}) 11 | ], 12 | cmdclass={'build_ext': BuildExtension} 13 | ) 14 | 15 | 16 | # from setuptools import find_packages, setup 17 | 18 | # import os 19 | # import torch 20 | # from torch.utils.cpp_extension import (BuildExtension, CppExtension, 21 | # CUDAExtension) 22 | 23 | # def make_cuda_ext(name, 24 | # module, 25 | # sources, 26 | # sources_cuda=[], 27 | # extra_args=[], 28 | # extra_include_path=[]): 29 | 30 | # define_macros = [] 31 | # extra_compile_args = {'cxx': [] + extra_args} 32 | 33 | # if torch.cuda.is_available() or os.getenv('FORCE_CUDA', '0') == '1': 34 | # define_macros += [('WITH_CUDA', None)] 35 | # extension = CUDAExtension 36 | # extra_compile_args['nvcc'] = extra_args + [ 37 | # '-D__CUDA_NO_HALF_OPERATORS__', 38 | # '-D__CUDA_NO_HALF_CONVERSIONS__', 39 | # '-D__CUDA_NO_HALF2_OPERATORS__', 40 | # ] 41 | # sources += sources_cuda 42 | # else: 43 | # print('Compiling {} without CUDA'.format(name)) 44 | # extension = CppExtension 45 | # # raise EnvironmentError('CUDA is required to compile MMDetection!') 46 | 47 | # return extension( 48 | # name='{}.{}'.format(module, name), 49 | # sources=[os.path.join(*module.split('.'), p) for p in sources], 50 | # include_dirs=extra_include_path, 51 | # define_macros=define_macros, 52 | # extra_compile_args=extra_compile_args) 53 | 54 | # setup( 55 | # name='knn_ext', 56 | # ext_modules=[ 57 | # make_cuda_ext( 58 | # name='knn_ext', 59 | # module='pcdet.ops.knn', 60 | # sources=['src/knn.cpp'], 61 | # sources_cuda=['src/knn_cuda.cu']), 62 | # ], 63 | # cmdclass={'build_ext': BuildExtension} 64 | # ) 65 | 66 | -------------------------------------------------------------------------------- /pcdet/ops/roipoint_pool3d/src/roipoint_pool3d.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #define CHECK_CUDA(x) do { \ 5 | if (!x.type().is_cuda()) { \ 6 | fprintf(stderr, "%s must be CUDA tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 7 | exit(-1); \ 8 | } \ 9 | } while (0) 10 | #define CHECK_CONTIGUOUS(x) do { \ 11 | if (!x.is_contiguous()) { \ 12 | fprintf(stderr, "%s must be contiguous tensor at %s:%d\n", #x, __FILE__, __LINE__); \ 13 | exit(-1); \ 14 | } \ 15 | } while (0) 16 | #define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x) 17 | 18 | 19 | void roipool3dLauncher(int batch_size, int pts_num, int boxes_num, int feature_in_len, int sampled_pts_num, 20 | const float *xyz, const float *boxes3d, const float *pts_feature, float *pooled_features, int *pooled_empty_flag); 21 | 22 | 23 | int roipool3d_gpu(at::Tensor xyz, at::Tensor boxes3d, at::Tensor pts_feature, at::Tensor pooled_features, at::Tensor pooled_empty_flag){ 24 | // params xyz: (B, N, 3) 25 | // params boxes3d: (B, M, 7) 26 | // params pts_feature: (B, N, C) 27 | // params pooled_features: (B, M, 512, 3+C) 28 | // params pooled_empty_flag: (B, M) 29 | CHECK_INPUT(xyz); 30 | CHECK_INPUT(boxes3d); 31 | CHECK_INPUT(pts_feature); 32 | CHECK_INPUT(pooled_features); 33 | CHECK_INPUT(pooled_empty_flag); 34 | 35 | int batch_size = xyz.size(0); 36 | int pts_num = xyz.size(1); 37 | int boxes_num = boxes3d.size(1); 38 | int feature_in_len = pts_feature.size(2); 39 | int sampled_pts_num = pooled_features.size(2); 40 | 41 | 42 | const float * xyz_data = xyz.data(); 43 | const float * boxes3d_data = boxes3d.data(); 44 | const float * pts_feature_data = pts_feature.data(); 45 | float * pooled_features_data = pooled_features.data(); 46 | int * pooled_empty_flag_data = pooled_empty_flag.data(); 47 | 48 | roipool3dLauncher(batch_size, pts_num, boxes_num, feature_in_len, sampled_pts_num, 49 | xyz_data, boxes3d_data, pts_feature_data, pooled_features_data, pooled_empty_flag_data); 50 | 51 | 52 | 53 | return 1; 54 | } 55 | 56 | 57 | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { 58 | m.def("forward", &roipool3d_gpu, "roipool3d forward (CUDA)"); 59 | } 60 | 61 | -------------------------------------------------------------------------------- /pcdet/models/detectors/pv_rcnn_plusplus.py: -------------------------------------------------------------------------------- 1 | from .detector3d_template import Detector3DTemplate 2 | 3 | 4 | class PVRCNNPlusPlus(Detector3DTemplate): 5 | def __init__(self, model_cfg, num_class, dataset): 6 | super().__init__(model_cfg=model_cfg, num_class=num_class, dataset=dataset) 7 | self.module_list = self.build_networks() 8 | 9 | def forward(self, batch_dict): 10 | batch_dict = self.vfe(batch_dict) 11 | batch_dict = self.backbone_3d(batch_dict) 12 | batch_dict = self.map_to_bev_module(batch_dict) 13 | batch_dict = self.backbone_2d(batch_dict) 14 | batch_dict = self.dense_head(batch_dict) 15 | 16 | batch_dict = self.roi_head.proposal_layer( 17 | batch_dict, nms_config=self.roi_head.model_cfg.NMS_CONFIG['TRAIN' if self.training else 'TEST'] 18 | ) 19 | if self.training: 20 | targets_dict = self.roi_head.assign_targets(batch_dict) 21 | batch_dict['rois'] = targets_dict['rois'] 22 | batch_dict['roi_labels'] = targets_dict['roi_labels'] 23 | batch_dict['roi_targets_dict'] = targets_dict 24 | num_rois_per_scene = targets_dict['rois'].shape[1] 25 | if 'roi_valid_num' in batch_dict: 26 | batch_dict['roi_valid_num'] = [num_rois_per_scene for _ in range(batch_dict['batch_size'])] 27 | 28 | batch_dict = self.pfe(batch_dict) 29 | batch_dict = self.point_head(batch_dict) 30 | batch_dict = self.roi_head(batch_dict) 31 | 32 | if self.training: 33 | loss, tb_dict, disp_dict = self.get_training_loss() 34 | 35 | ret_dict = { 36 | 'loss': loss 37 | } 38 | return ret_dict, tb_dict, disp_dict 39 | else: 40 | pred_dicts, recall_dicts = self.post_processing(batch_dict) 41 | return pred_dicts, recall_dicts 42 | 43 | def get_training_loss(self): 44 | disp_dict = {} 45 | loss_rpn, tb_dict = self.dense_head.get_loss() 46 | if self.point_head is not None: 47 | loss_point, tb_dict = self.point_head.get_loss(tb_dict) 48 | else: 49 | loss_point = 0 50 | loss_rcnn, tb_dict = self.roi_head.get_loss(tb_dict) 51 | 52 | loss = loss_rpn + loss_point + loss_rcnn 53 | return loss, tb_dict, disp_dict 54 | -------------------------------------------------------------------------------- /tools/cfgs/dataset_configs/lyft_dataset.yaml: -------------------------------------------------------------------------------- 1 | DATASET: 'LyftDataset' 2 | DATA_PATH: '../data/lyft' 3 | 4 | VERSION: 'trainval' 5 | SET_NAN_VELOCITY_TO_ZEROS: True 6 | FILTER_MIN_POINTS_IN_GT: 1 7 | MAX_SWEEPS: 5 8 | EVAL_LYFT_IOU_LIST: [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95] 9 | 10 | DATA_SPLIT: { 11 | 'train': train, 12 | 'test': val 13 | } 14 | 15 | INFO_PATH: { 16 | 'train': [lyft_infos_train.pkl], 17 | 'test': [lyft_infos_val.pkl], 18 | } 19 | 20 | POINT_CLOUD_RANGE: [-80.0, -80.0, -5.0, 80.0, 80.0, 3.0] 21 | 22 | DATA_AUGMENTOR: 23 | DISABLE_AUG_LIST: ['placeholder'] 24 | AUG_CONFIG_LIST: 25 | - NAME: gt_sampling 26 | DB_INFO_PATH: 27 | - lyft_dbinfos_10sweeps.pkl 28 | PREPARE: { 29 | filter_by_min_points: [ 30 | 'car:5','pedestrian:5', 'motorcycle:5', 'bicycle:5', 'other_vehicle:5', 31 | 'bus:5', 'truck:5', 'emergency_vehicle:5', 'animal:5' 32 | ], 33 | } 34 | 35 | SAMPLE_GROUPS: [ 36 | 'car:3','pedestrian:3', 'motorcycle:6', 'bicycle:6', 'other_vehicle:4', 37 | 'bus:4', 'truck:3', 'emergency_vehicle:7', 'animal:3' 38 | ] 39 | 40 | NUM_POINT_FEATURES: 5 41 | DATABASE_WITH_FAKELIDAR: False 42 | REMOVE_EXTRA_WIDTH: [0.0, 0.0, 0.0] 43 | LIMIT_WHOLE_SCENE: True 44 | 45 | - NAME: random_world_flip 46 | ALONG_AXIS_LIST: ['x', 'y'] 47 | 48 | - NAME: random_world_rotation 49 | WORLD_ROT_ANGLE: [-0.3925, 0.3925] 50 | 51 | - NAME: random_world_scaling 52 | WORLD_SCALE_RANGE: [0.95, 1.05] 53 | 54 | 55 | POINT_FEATURE_ENCODING: { 56 | encoding_type: absolute_coordinates_encoding, 57 | used_feature_list: ['x', 'y', 'z', 'intensity', 'timestamp'], 58 | src_feature_list: ['x', 'y', 'z', 'intensity', 'timestamp'], 59 | } 60 | 61 | 62 | DATA_PROCESSOR: 63 | - NAME: mask_points_and_boxes_outside_range 64 | REMOVE_OUTSIDE_BOXES: True 65 | 66 | - NAME: shuffle_points 67 | SHUFFLE_ENABLED: { 68 | 'train': True, 69 | 'test': True 70 | } 71 | 72 | - NAME: transform_points_to_voxels 73 | VOXEL_SIZE: [0.1, 0.1, 0.2] 74 | MAX_POINTS_PER_VOXEL: 10 75 | MAX_NUMBER_OF_VOXELS: { 76 | 'train': 80000, 77 | 'test': 80000 78 | } -------------------------------------------------------------------------------- /pcdet/datasets/processor/point_feature_encoder.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | class PointFeatureEncoder(object): 5 | def __init__(self, config, point_cloud_range=None): 6 | super().__init__() 7 | self.point_encoding_config = config 8 | assert list(self.point_encoding_config.src_feature_list[0:3]) == ['x', 'y', 'z'] 9 | self.used_feature_list = self.point_encoding_config.used_feature_list 10 | self.src_feature_list = self.point_encoding_config.src_feature_list 11 | self.point_cloud_range = point_cloud_range 12 | 13 | @property 14 | def num_point_features(self): 15 | return getattr(self, self.point_encoding_config.encoding_type)(points=None) 16 | 17 | def forward(self, data_dict): 18 | """ 19 | Args: 20 | data_dict: 21 | points: (N, 3 + C_in) 22 | ... 23 | Returns: 24 | data_dict: 25 | points: (N, 3 + C_out), 26 | use_lead_xyz: whether to use xyz as point-wise features 27 | ... 28 | """ 29 | data_dict['points'], use_lead_xyz = getattr(self, self.point_encoding_config.encoding_type)( 30 | data_dict['points'] 31 | ) 32 | data_dict['use_lead_xyz'] = use_lead_xyz 33 | 34 | if self.point_encoding_config.get('filter_sweeps', False) and 'timestamp' in self.src_feature_list: 35 | max_sweeps = self.point_encoding_config.max_sweeps 36 | idx = self.src_feature_list.index('timestamp') 37 | dt = np.round(data_dict['points'][:, idx], 2) 38 | max_dt = sorted(np.unique(dt))[min(len(np.unique(dt))-1, max_sweeps-1)] 39 | data_dict['points'] = data_dict['points'][dt <= max_dt] 40 | 41 | return data_dict 42 | 43 | def absolute_coordinates_encoding(self, points=None): 44 | if points is None: 45 | num_output_features = len(self.used_feature_list) 46 | return num_output_features 47 | 48 | point_feature_list = [points[:, 0:3]] 49 | for x in self.used_feature_list: 50 | if x in ['x', 'y', 'z']: 51 | continue 52 | idx = self.src_feature_list.index(x) 53 | point_feature_list.append(points[:, idx:idx+1]) 54 | point_features = np.concatenate(point_feature_list, axis=1) 55 | 56 | return point_features, True 57 | -------------------------------------------------------------------------------- /tools/cfgs/dataset_configs/nuscenes_dataset.yaml: -------------------------------------------------------------------------------- 1 | DATASET: 'NuScenesDataset' 2 | DATA_PATH: '../data/nuscenes' 3 | 4 | VERSION: 'v1.0-trainval' 5 | MAX_SWEEPS: 10 6 | PRED_VELOCITY: True 7 | SET_NAN_VELOCITY_TO_ZEROS: True 8 | FILTER_MIN_POINTS_IN_GT: 1 9 | 10 | DATA_SPLIT: { 11 | 'train': train, 12 | 'test': val 13 | } 14 | 15 | INFO_PATH: { 16 | 'train': [nuscenes_infos_10sweeps_train.pkl], 17 | 'test': [nuscenes_infos_10sweeps_val.pkl], 18 | } 19 | 20 | POINT_CLOUD_RANGE: [-51.2, -51.2, -5.0, 51.2, 51.2, 3.0] 21 | 22 | BALANCED_RESAMPLING: True 23 | 24 | DATA_AUGMENTOR: 25 | DISABLE_AUG_LIST: ['placeholder'] 26 | AUG_CONFIG_LIST: 27 | - NAME: gt_sampling 28 | DB_INFO_PATH: 29 | - nuscenes_dbinfos_10sweeps_withvelo.pkl 30 | PREPARE: { 31 | filter_by_min_points: [ 32 | 'car:5','truck:5', 'construction_vehicle:5', 'bus:5', 'trailer:5', 33 | 'barrier:5', 'motorcycle:5', 'bicycle:5', 'pedestrian:5', 'traffic_cone:5' 34 | ], 35 | } 36 | 37 | SAMPLE_GROUPS: [ 38 | 'car:2','truck:3', 'construction_vehicle:7', 'bus:4', 'trailer:6', 39 | 'barrier:2', 'motorcycle:6', 'bicycle:6', 'pedestrian:2', 'traffic_cone:2' 40 | ] 41 | 42 | NUM_POINT_FEATURES: 5 43 | DATABASE_WITH_FAKELIDAR: False 44 | REMOVE_EXTRA_WIDTH: [0.0, 0.0, 0.0] 45 | LIMIT_WHOLE_SCENE: True 46 | 47 | - NAME: random_world_flip 48 | ALONG_AXIS_LIST: ['x', 'y'] 49 | 50 | - NAME: random_world_rotation 51 | WORLD_ROT_ANGLE: [-0.3925, 0.3925] 52 | 53 | - NAME: random_world_scaling 54 | WORLD_SCALE_RANGE: [0.95, 1.05] 55 | 56 | 57 | POINT_FEATURE_ENCODING: { 58 | encoding_type: absolute_coordinates_encoding, 59 | used_feature_list: ['x', 'y', 'z', 'intensity', 'timestamp'], 60 | src_feature_list: ['x', 'y', 'z', 'intensity', 'timestamp'], 61 | } 62 | 63 | 64 | DATA_PROCESSOR: 65 | - NAME: mask_points_and_boxes_outside_range 66 | REMOVE_OUTSIDE_BOXES: True 67 | 68 | - NAME: shuffle_points 69 | SHUFFLE_ENABLED: { 70 | 'train': True, 71 | 'test': True 72 | } 73 | 74 | - NAME: transform_points_to_voxels 75 | VOXEL_SIZE: [0.1, 0.1, 0.2] 76 | MAX_POINTS_PER_VOXEL: 10 77 | MAX_NUMBER_OF_VOXELS: { 78 | 'train': 60000, 79 | 'test': 60000 80 | } 81 | -------------------------------------------------------------------------------- /pcdet/ops/pointnet2/pointnet2_batch/src/ball_query_gpu.cu: -------------------------------------------------------------------------------- 1 | /* 2 | batch version of ball query, modified from the original implementation of official PointNet++ codes. 3 | Written by Shaoshuai Shi 4 | All Rights Reserved 2018. 5 | */ 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | #include "ball_query_gpu.h" 12 | #include "cuda_utils.h" 13 | 14 | 15 | __global__ void ball_query_kernel_fast(int b, int n, int m, float radius, int nsample, 16 | const float *__restrict__ new_xyz, const float *__restrict__ xyz, int *__restrict__ idx) { 17 | // new_xyz: (B, M, 3) 18 | // xyz: (B, N, 3) 19 | // output: 20 | // idx: (B, M, nsample) 21 | int bs_idx = blockIdx.y; 22 | int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; 23 | if (bs_idx >= b || pt_idx >= m) return; 24 | 25 | new_xyz += bs_idx * m * 3 + pt_idx * 3; 26 | xyz += bs_idx * n * 3; 27 | idx += bs_idx * m * nsample + pt_idx * nsample; 28 | 29 | float radius2 = radius * radius; 30 | float new_x = new_xyz[0]; 31 | float new_y = new_xyz[1]; 32 | float new_z = new_xyz[2]; 33 | 34 | int cnt = 0; 35 | for (int k = 0; k < n; ++k) { 36 | float x = xyz[k * 3 + 0]; 37 | float y = xyz[k * 3 + 1]; 38 | float z = xyz[k * 3 + 2]; 39 | float d2 = (new_x - x) * (new_x - x) + (new_y - y) * (new_y - y) + (new_z - z) * (new_z - z); 40 | if (d2 < radius2){ 41 | if (cnt == 0){ 42 | for (int l = 0; l < nsample; ++l) { 43 | idx[l] = k; 44 | } 45 | } 46 | idx[cnt] = k; 47 | ++cnt; 48 | if (cnt >= nsample) break; 49 | } 50 | } 51 | } 52 | 53 | 54 | void ball_query_kernel_launcher_fast(int b, int n, int m, float radius, int nsample, \ 55 | const float *new_xyz, const float *xyz, int *idx) { 56 | // new_xyz: (B, M, 3) 57 | // xyz: (B, N, 3) 58 | // output: 59 | // idx: (B, M, nsample) 60 | 61 | cudaError_t err; 62 | 63 | dim3 blocks(DIVUP(m, THREADS_PER_BLOCK), b); // blockIdx.x(col), blockIdx.y(row) 64 | dim3 threads(THREADS_PER_BLOCK); 65 | 66 | ball_query_kernel_fast<<>>(b, n, m, radius, nsample, new_xyz, xyz, idx); 67 | // cudaDeviceSynchronize(); // for using printf in kernel function 68 | err = cudaGetLastError(); 69 | if (cudaSuccess != err) { 70 | fprintf(stderr, "CUDA kernel failed : %s\n", cudaGetErrorString(err)); 71 | exit(-1); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /pcdet/ops/roipoint_pool3d/roipoint_pool3d_utils.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | from torch.autograd import Function 4 | 5 | from ...utils import box_utils 6 | from . import roipoint_pool3d_cuda 7 | 8 | 9 | class RoIPointPool3d(nn.Module): 10 | def __init__(self, num_sampled_points=512, pool_extra_width=1.0): 11 | super().__init__() 12 | self.num_sampled_points = num_sampled_points 13 | self.pool_extra_width = pool_extra_width 14 | 15 | def forward(self, points, point_features, boxes3d): 16 | """ 17 | Args: 18 | points: (B, N, 3) 19 | point_features: (B, N, C) 20 | boxes3d: (B, M, 7), [x, y, z, dx, dy, dz, heading] 21 | 22 | Returns: 23 | pooled_features: (B, M, 512, 3 + C) 24 | pooled_empty_flag: (B, M) 25 | """ 26 | return RoIPointPool3dFunction.apply( 27 | points, point_features, boxes3d, self.pool_extra_width, self.num_sampled_points 28 | ) 29 | 30 | 31 | class RoIPointPool3dFunction(Function): 32 | @staticmethod 33 | def forward(ctx, points, point_features, boxes3d, pool_extra_width, num_sampled_points=512): 34 | """ 35 | Args: 36 | ctx: 37 | points: (B, N, 3) 38 | point_features: (B, N, C) 39 | boxes3d: (B, num_boxes, 7), [x, y, z, dx, dy, dz, heading] 40 | pool_extra_width: 41 | num_sampled_points: 42 | 43 | Returns: 44 | pooled_features: (B, num_boxes, 512, 3 + C) 45 | pooled_empty_flag: (B, num_boxes) 46 | """ 47 | assert points.shape.__len__() == 3 and points.shape[2] == 3 48 | batch_size, boxes_num, feature_len = points.shape[0], boxes3d.shape[1], point_features.shape[2] 49 | pooled_boxes3d = box_utils.enlarge_box3d(boxes3d.view(-1, 7), pool_extra_width).view(batch_size, -1, 7) 50 | 51 | pooled_features = point_features.new_zeros((batch_size, boxes_num, num_sampled_points, 3 + feature_len)) 52 | pooled_empty_flag = point_features.new_zeros((batch_size, boxes_num)).int() 53 | 54 | roipoint_pool3d_cuda.forward( 55 | points.contiguous(), pooled_boxes3d.contiguous(), 56 | point_features.contiguous(), pooled_features, pooled_empty_flag 57 | ) 58 | 59 | return pooled_features, pooled_empty_flag 60 | 61 | @staticmethod 62 | def backward(ctx, grad_out): 63 | raise NotImplementedError 64 | 65 | 66 | if __name__ == '__main__': 67 | pass 68 | -------------------------------------------------------------------------------- /tools/cfgs/dataset_configs/waymo_dataset.yaml: -------------------------------------------------------------------------------- 1 | DATASET: 'WaymoDataset' 2 | DATA_PATH: '../data/waymo' 3 | PROCESSED_DATA_TAG: 'waymo_processed_data_v0_5_0' 4 | 5 | POINT_CLOUD_RANGE: [-75.2, -75.2, -2, 75.2, 75.2, 4] 6 | 7 | DATA_SPLIT: { 8 | 'train': train, 9 | 'test': val 10 | } 11 | 12 | SAMPLED_INTERVAL: { 13 | 'train': 5, 14 | 'test': 1 15 | } 16 | 17 | FILTER_EMPTY_BOXES_FOR_TRAIN: True 18 | DISABLE_NLZ_FLAG_ON_POINTS: True 19 | 20 | USE_SHARED_MEMORY: False # it will load the data to shared memory to speed up (DO NOT USE IT IF YOU DO NOT FULLY UNDERSTAND WHAT WILL HAPPEN) 21 | SHARED_MEMORY_FILE_LIMIT: 35000 # set it based on the size of your shared memory 22 | 23 | DATA_AUGMENTOR: 24 | DISABLE_AUG_LIST: ['placeholder'] 25 | AUG_CONFIG_LIST: 26 | - NAME: gt_sampling 27 | USE_ROAD_PLANE: False 28 | DB_INFO_PATH: 29 | - waymo_processed_data_v0_5_0_waymo_dbinfos_train_sampled_1.pkl 30 | 31 | USE_SHARED_MEMORY: False # set it to True to speed up (it costs about 15GB shared memory) 32 | DB_DATA_PATH: 33 | - waymo_processed_data_v0_5_0_gt_database_train_sampled_1_global.npy 34 | 35 | PREPARE: { 36 | filter_by_min_points: ['Vehicle:5', 'Pedestrian:5', 'Cyclist:5'], 37 | filter_by_difficulty: [-1], 38 | } 39 | 40 | SAMPLE_GROUPS: ['Vehicle:15', 'Pedestrian:10', 'Cyclist:10'] 41 | NUM_POINT_FEATURES: 5 42 | REMOVE_EXTRA_WIDTH: [0.0, 0.0, 0.0] 43 | LIMIT_WHOLE_SCENE: True 44 | 45 | - NAME: random_world_flip 46 | ALONG_AXIS_LIST: ['x', 'y'] 47 | 48 | - NAME: random_world_rotation 49 | WORLD_ROT_ANGLE: [-0.78539816, 0.78539816] 50 | 51 | - NAME: random_world_scaling 52 | WORLD_SCALE_RANGE: [0.95, 1.05] 53 | 54 | 55 | POINT_FEATURE_ENCODING: { 56 | encoding_type: absolute_coordinates_encoding, 57 | used_feature_list: ['x', 'y', 'z', 'intensity', 'elongation'], 58 | src_feature_list: ['x', 'y', 'z', 'intensity', 'elongation'], 59 | } 60 | 61 | 62 | DATA_PROCESSOR: 63 | - NAME: mask_points_and_boxes_outside_range 64 | REMOVE_OUTSIDE_BOXES: True 65 | 66 | - NAME: shuffle_points 67 | SHUFFLE_ENABLED: { 68 | 'train': True, 69 | 'test': True 70 | } 71 | 72 | - NAME: transform_points_to_voxels 73 | VOXEL_SIZE: [0.1, 0.1, 0.15] 74 | MAX_POINTS_PER_VOXEL: 5 75 | MAX_NUMBER_OF_VOXELS: { 76 | 'train': 150000, 77 | 'test': 150000 78 | } 79 | --------------------------------------------------------------------------------