Commit 63d6540c authored by Shaoshuai Shi's avatar Shaoshuai Shi
Browse files

update README.md

parent b32fbddb
# OpenLidarPerceptron <img src="docs/open_mmlab.png" align="right" width="30%">
# OpenPCDet
## Introduction ## Introduction
`OpenLidarPerceptron` is an open source project for LiDAR-based 3D scene perception. `OpenPCDet` is an open source project for LiDAR-based 3D scene perception.
As of now, it mainly consists of `PCDet` toolbox for 3D object detection from point cloud, As of now, it mainly consists of `PCDet` toolbox for 3D object detection from point cloud.
and we are going to support LiDAR segmentation and odometry in the next phase.
### What does `PCDet` toolbox do? ### What does `PCDet` toolbox do?
...@@ -22,9 +23,21 @@ It is also the official code release of [`[Part-A^2 net]`](https://arxiv.org/abs ...@@ -22,9 +23,21 @@ It is also the official code release of [`[Part-A^2 net]`](https://arxiv.org/abs
We are actively updating this repo currently, and more datasets and models will be supported soon. We are actively updating this repo currently, and more datasets and models will be supported soon.
Contributions are also welcomed. Contributions are also welcomed.
### `PCDet` design pattern
* Data-Model separation with unified point cloud coordinate for easily extending to custom datasets:
<p align="center">
<img src="docs/dataset_vs_model.png" width="95%" height="320">
</p>
* Flexible and clear model structure to easily support various 3D detection models:
<p align="center">
<img src="docs/model_framework.png" width="95%">
</p>
### Currently Supported Features ### Currently Supported Features
- [x] Unified point cloud coordinate and clear code structure and for supporting lots of datasets and approaches
- [x] Support both one-stage and two-stage 3D object detection frameworks - [x] Support both one-stage and two-stage 3D object detection frameworks
- [x] Support distributed training & testing with multiple GPUs and multiple machines - [x] Support distributed training & testing with multiple GPUs and multiple machines
- [x] Support multiple heads on different scales to detect different classes - [x] Support multiple heads on different scales to detect different classes
...@@ -33,6 +46,7 @@ Contributions are also welcomed. ...@@ -33,6 +46,7 @@ Contributions are also welcomed.
- [x] Support RoI-aware point cloud pooling & RoI-grid point cloud pooling - [x] Support RoI-aware point cloud pooling & RoI-grid point cloud pooling
- [x] Support GPU version 3D IoU calculation and rotated NMS - [x] Support GPU version 3D IoU calculation and rotated NMS
## Model Zoo ## Model Zoo
### KITTI 3D Object Detection Baselines ### KITTI 3D Object Detection Baselines
...@@ -48,6 +62,9 @@ All models are trained with 8 GPUs and are available for download. ...@@ -48,6 +62,9 @@ All models are trained with 8 GPUs and are available for download.
| [SECOND-MultiHead](tools/cfgs/kitti_models/second_multihead.yaml) | 32 | - | - | - | ongoing | | [SECOND-MultiHead](tools/cfgs/kitti_models/second_multihead.yaml) | 32 | - | - | - | ongoing |
| PointRCNN | 32 | - | - | - | ongoing| | PointRCNN | 32 | - | - | - | ongoing|
### Other datasets
More datasets are on the way.
## Installation ## Installation
Please refer to [INSTALL.md](docs/INSTALL.md) for installation and dataset preparation. Please refer to [INSTALL.md](docs/INSTALL.md) for installation and dataset preparation.
...@@ -59,10 +76,10 @@ Please refer to [GETTING_STARTED.md](docs/GETTING_STARTED.md) to learn more usag ...@@ -59,10 +76,10 @@ Please refer to [GETTING_STARTED.md](docs/GETTING_STARTED.md) to learn more usag
## License ## License
`OpenLidarPerceptron` is released under the [Apache 2.0 license](LICENSE). `OpenPCDet` is released under the [Apache 2.0 license](LICENSE).
## Acknowledgement ## Acknowledgement
`OpenLidarPerceptron` is an open source project for LiDAR-based 3D scene perception that supports multiple `OpenPCDet` is an open source project for LiDAR-based 3D scene perception that supports multiple
LiDAR-based perception models as shown above. Some parts of `PCDet` are learned from the official released codes of the above supported methods. LiDAR-based perception models as shown above. Some parts of `PCDet` are learned from the official released codes of the above supported methods.
We would like to thank for their proposed methods and the official implementation. We would like to thank for their proposed methods and the official implementation.
......
...@@ -14,7 +14,7 @@ NOTE: Please re-install `pcdet v0.2` by running `python setup.py develop` if you ...@@ -14,7 +14,7 @@ NOTE: Please re-install `pcdet v0.2` by running `python setup.py develop` if you
a. Clone this repository. a. Clone this repository.
```shell ```shell
git clone https://github.com/open-mmlab/OpenLidarPerceptron.git git clone https://github.com/open-mmlab/OpenPCDet.git
``` ```
b. Install the dependent libraries as follows: b. Install the dependent libraries as follows:
......
...@@ -46,7 +46,6 @@ class DataAugmentor(object): ...@@ -46,7 +46,6 @@ class DataAugmentor(object):
data_dict['points'] = points data_dict['points'] = points
return data_dict return data_dict
def random_world_rotation(self, data_dict=None, config=None): def random_world_rotation(self, data_dict=None, config=None):
if data_dict is None: if data_dict is None:
return partial(self.random_world_rotation, config=config) return partial(self.random_world_rotation, config=config)
...@@ -61,7 +60,6 @@ class DataAugmentor(object): ...@@ -61,7 +60,6 @@ class DataAugmentor(object):
data_dict['points'] = points data_dict['points'] = points
return data_dict return data_dict
def random_world_scaling(self, data_dict=None, config=None): def random_world_scaling(self, data_dict=None, config=None):
if data_dict is None: if data_dict is None:
return partial(self.random_world_scaling, config=config) return partial(self.random_world_scaling, config=config)
......
...@@ -14,7 +14,6 @@ class DataProcessor(object): ...@@ -14,7 +14,6 @@ class DataProcessor(object):
cur_processor = getattr(self, cur_cfg.NAME)(config=cur_cfg) cur_processor = getattr(self, cur_cfg.NAME)(config=cur_cfg)
self.data_processor_queue.append(cur_processor) self.data_processor_queue.append(cur_processor)
def mask_points_and_boxes_outside_range(self, data_dict=None, config=None): def mask_points_and_boxes_outside_range(self, data_dict=None, config=None):
if data_dict is None: if data_dict is None:
return partial(self.mask_points_and_boxes_outside_range, config=config) return partial(self.mask_points_and_boxes_outside_range, config=config)
......
...@@ -33,7 +33,7 @@ if __name__ == '__main__': ...@@ -33,7 +33,7 @@ if __name__ == '__main__':
setup( setup(
name='pcdet', name='pcdet',
version=version, version=version,
description='PCDet is a general codebase for 3D object detection from point cloud', description='OpenPCDet is a general codebase for 3D object detection from point cloud',
install_requires=[ install_requires=[
'numpy', 'numpy',
'torch>=1.1', 'torch>=1.1',
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment