giantmonkeyTC commited on
Commit
5eed1e3
1 Parent(s): 4048043
.DS_Store ADDED
Binary file (10.2 kB). View file
 
.gitignore ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.ipynb
6
+
7
+ # C extensions
8
+ *.so
9
+
10
+ # Distribution / packaging
11
+ .Python
12
+ build/
13
+ develop-eggs/
14
+ dist/
15
+ downloads/
16
+ eggs/
17
+ .eggs/
18
+ lib/
19
+ lib64/
20
+ parts/
21
+ sdist/
22
+ var/
23
+ wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .coverage
43
+ .coverage.*
44
+ .cache
45
+ nosetests.xml
46
+ coverage.xml
47
+ *.cover
48
+ .hypothesis/
49
+ .pytest_cache/
50
+
51
+ # Translations
52
+ *.mo
53
+ *.pot
54
+
55
+ # Django stuff:
56
+ *.log
57
+ local_settings.py
58
+ db.sqlite3
59
+
60
+ # Flask stuff:
61
+ instance/
62
+ .webassets-cache
63
+
64
+ # Scrapy stuff:
65
+ .scrapy
66
+
67
+ # Sphinx documentation
68
+ docs/en/_build/
69
+ docs/zh_cn/_build/
70
+
71
+ # PyBuilder
72
+ target/
73
+
74
+ # Jupyter Notebook
75
+ .ipynb_checkpoints
76
+
77
+ # pyenv
78
+ .python-version
79
+
80
+ # celery beat schedule file
81
+ celerybeat-schedule
82
+
83
+ # SageMath parsed files
84
+ *.sage.py
85
+
86
+ # Environments
87
+ .env
88
+ .venv
89
+ env/
90
+ venv/
91
+ ENV/
92
+ env.bak/
93
+ venv.bak/
94
+
95
+ # Spyder project settings
96
+ .spyderproject
97
+ .spyproject
98
+
99
+ # Rope project settings
100
+ .ropeproject
101
+
102
+ # mkdocs documentation
103
+ /site
104
+
105
+ # mypy
106
+ .mypy_cache/
107
+
108
+ # cython generated cpp
109
+ data
110
+ .vscode
111
+ .idea
112
+
113
+ # custom
114
+ *.pkl
115
+ *.pkl.json
116
+ *.log.json
117
+ work_dirs/
118
+ exps/
119
+ *~
120
+ mmdet3d/.mim
121
+
122
+ # Pytorch
123
+ *.pth
124
+
125
+ # demo
126
+ *.jpg
127
+ *.png
128
+ data/s3dis/Stanford3dDataset_v1.2_Aligned_Version/
129
+ data/scannet/scans/
130
+ data/sunrgbd/OFFICIAL_SUNRGBD/
131
+ *.obj
132
+ *.ply
133
+
134
+ # Waymo evaluation
135
+ mmdet3d/evaluation/functional/waymo_utils/compute_detection_metrics_main
136
+ mmdet3d/evaluation/functional/waymo_utils/compute_detection_let_metrics_main
137
+ mmdet3d/evaluation/functional/waymo_utils/compute_segmentation_metrics_main
.pre-commit-config-zh-cn.yaml ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ repos:
2
+ - repo: https://gitee.com/openmmlab/mirrors-flake8
3
+ rev: 5.0.4
4
+ hooks:
5
+ - id: flake8
6
+ - repo: https://gitee.com/openmmlab/mirrors-isort
7
+ rev: 5.11.5
8
+ hooks:
9
+ - id: isort
10
+ - repo: https://gitee.com/openmmlab/mirrors-yapf
11
+ rev: v0.32.0
12
+ hooks:
13
+ - id: yapf
14
+ - repo: https://gitee.com/openmmlab/mirrors-pre-commit-hooks
15
+ rev: v4.3.0
16
+ hooks:
17
+ - id: trailing-whitespace
18
+ - id: check-yaml
19
+ - id: end-of-file-fixer
20
+ - id: requirements-txt-fixer
21
+ - id: double-quote-string-fixer
22
+ - id: check-merge-conflict
23
+ - id: fix-encoding-pragma
24
+ args: ["--remove"]
25
+ - id: mixed-line-ending
26
+ args: ["--fix=lf"]
27
+ - repo: https://gitee.com/openmmlab/mirrors-codespell
28
+ rev: v2.2.1
29
+ hooks:
30
+ - id: codespell
31
+ - repo: https://gitee.com/openmmlab/mirrors-mdformat
32
+ rev: 0.7.9
33
+ hooks:
34
+ - id: mdformat
35
+ args: ["--number"]
36
+ additional_dependencies:
37
+ - mdformat-openmmlab
38
+ - mdformat_frontmatter
39
+ - linkify-it-py
40
+ - repo: https://gitee.com/openmmlab/mirrors-docformatter
41
+ rev: v1.3.1
42
+ hooks:
43
+ - id: docformatter
44
+ args: ["--in-place", "--wrap-descriptions", "79"]
45
+ - repo: https://gitee.com/openmmlab/pre-commit-hooks
46
+ rev: v0.2.0
47
+ hooks:
48
+ - id: check-algo-readme
49
+ - id: check-copyright
50
+ args: ["mmdet3d"]
.pre-commit-config.yaml ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ repos:
2
+ - repo: https://github.com/PyCQA/flake8
3
+ rev: 5.0.4
4
+ hooks:
5
+ - id: flake8
6
+ - repo: https://github.com/PyCQA/isort
7
+ rev: 5.11.5
8
+ hooks:
9
+ - id: isort
10
+ - repo: https://github.com/pre-commit/mirrors-yapf
11
+ rev: v0.32.0
12
+ hooks:
13
+ - id: yapf
14
+ - repo: https://github.com/pre-commit/pre-commit-hooks
15
+ rev: v4.3.0
16
+ hooks:
17
+ - id: trailing-whitespace
18
+ - id: check-yaml
19
+ - id: end-of-file-fixer
20
+ - id: requirements-txt-fixer
21
+ - id: double-quote-string-fixer
22
+ - id: check-merge-conflict
23
+ - id: fix-encoding-pragma
24
+ args: ["--remove"]
25
+ - id: mixed-line-ending
26
+ args: ["--fix=lf"]
27
+ - repo: https://github.com/codespell-project/codespell
28
+ rev: v2.2.1
29
+ hooks:
30
+ - id: codespell
31
+ - repo: https://github.com/executablebooks/mdformat
32
+ rev: 0.7.9
33
+ hooks:
34
+ - id: mdformat
35
+ args: [ "--number" ]
36
+ additional_dependencies:
37
+ - mdformat-openmmlab
38
+ - mdformat_frontmatter
39
+ - linkify-it-py
40
+ - repo: https://github.com/myint/docformatter
41
+ rev: v1.3.1
42
+ hooks:
43
+ - id: docformatter
44
+ args: ["--in-place", "--wrap-descriptions", "79"]
45
+ - repo: https://github.com/open-mmlab/pre-commit-hooks
46
+ rev: v0.2.0 # Use the ref you want to point at
47
+ hooks:
48
+ - id: check-algo-readme
49
+ - id: check-copyright
50
+ args: ["mmdet3d"] # replace the dir_to_check with your expected directory to check
.readthedocs.yml ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.8"
7
+
8
+ formats:
9
+ - epub
10
+
11
+ python:
12
+ install:
13
+ - requirements: requirements/docs.txt
14
+ - requirements: requirements/readthedocs.txt
CITATION.cff ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it as below."
3
+ authors:
4
+ - name: "MMDetection3D Contributors"
5
+ title: "OpenMMLab's Next-generation Platform for General 3D Object Detection"
6
+ date-released: 2020-07-23
7
+ url: "https://github.com/open-mmlab/mmdetection3d"
8
+ license: Apache-2.0
LICENSE ADDED
@@ -0,0 +1,203 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright 2018-2019 Open-MMLab. All rights reserved.
2
+
3
+ Apache License
4
+ Version 2.0, January 2004
5
+ http://www.apache.org/licenses/
6
+
7
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
8
+
9
+ 1. Definitions.
10
+
11
+ "License" shall mean the terms and conditions for use, reproduction,
12
+ and distribution as defined by Sections 1 through 9 of this document.
13
+
14
+ "Licensor" shall mean the copyright owner or entity authorized by
15
+ the copyright owner that is granting the License.
16
+
17
+ "Legal Entity" shall mean the union of the acting entity and all
18
+ other entities that control, are controlled by, or are under common
19
+ control with that entity. For the purposes of this definition,
20
+ "control" means (i) the power, direct or indirect, to cause the
21
+ direction or management of such entity, whether by contract or
22
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
23
+ outstanding shares, or (iii) beneficial ownership of such entity.
24
+
25
+ "You" (or "Your") shall mean an individual or Legal Entity
26
+ exercising permissions granted by this License.
27
+
28
+ "Source" form shall mean the preferred form for making modifications,
29
+ including but not limited to software source code, documentation
30
+ source, and configuration files.
31
+
32
+ "Object" form shall mean any form resulting from mechanical
33
+ transformation or translation of a Source form, including but
34
+ not limited to compiled object code, generated documentation,
35
+ and conversions to other media types.
36
+
37
+ "Work" shall mean the work of authorship, whether in Source or
38
+ Object form, made available under the License, as indicated by a
39
+ copyright notice that is included in or attached to the work
40
+ (an example is provided in the Appendix below).
41
+
42
+ "Derivative Works" shall mean any work, whether in Source or Object
43
+ form, that is based on (or derived from) the Work and for which the
44
+ editorial revisions, annotations, elaborations, or other modifications
45
+ represent, as a whole, an original work of authorship. For the purposes
46
+ of this License, Derivative Works shall not include works that remain
47
+ separable from, or merely link (or bind by name) to the interfaces of,
48
+ the Work and Derivative Works thereof.
49
+
50
+ "Contribution" shall mean any work of authorship, including
51
+ the original version of the Work and any modifications or additions
52
+ to that Work or Derivative Works thereof, that is intentionally
53
+ submitted to Licensor for inclusion in the Work by the copyright owner
54
+ or by an individual or Legal Entity authorized to submit on behalf of
55
+ the copyright owner. For the purposes of this definition, "submitted"
56
+ means any form of electronic, verbal, or written communication sent
57
+ to the Licensor or its representatives, including but not limited to
58
+ communication on electronic mailing lists, source code control systems,
59
+ and issue tracking systems that are managed by, or on behalf of, the
60
+ Licensor for the purpose of discussing and improving the Work, but
61
+ excluding communication that is conspicuously marked or otherwise
62
+ designated in writing by the copyright owner as "Not a Contribution."
63
+
64
+ "Contributor" shall mean Licensor and any individual or Legal Entity
65
+ on behalf of whom a Contribution has been received by Licensor and
66
+ subsequently incorporated within the Work.
67
+
68
+ 2. Grant of Copyright License. Subject to the terms and conditions of
69
+ this License, each Contributor hereby grants to You a perpetual,
70
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
71
+ copyright license to reproduce, prepare Derivative Works of,
72
+ publicly display, publicly perform, sublicense, and distribute the
73
+ Work and such Derivative Works in Source or Object form.
74
+
75
+ 3. Grant of Patent License. Subject to the terms and conditions of
76
+ this License, each Contributor hereby grants to You a perpetual,
77
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
78
+ (except as stated in this section) patent license to make, have made,
79
+ use, offer to sell, sell, import, and otherwise transfer the Work,
80
+ where such license applies only to those patent claims licensable
81
+ by such Contributor that are necessarily infringed by their
82
+ Contribution(s) alone or by combination of their Contribution(s)
83
+ with the Work to which such Contribution(s) was submitted. If You
84
+ institute patent litigation against any entity (including a
85
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
86
+ or a Contribution incorporated within the Work constitutes direct
87
+ or contributory patent infringement, then any patent licenses
88
+ granted to You under this License for that Work shall terminate
89
+ as of the date such litigation is filed.
90
+
91
+ 4. Redistribution. You may reproduce and distribute copies of the
92
+ Work or Derivative Works thereof in any medium, with or without
93
+ modifications, and in Source or Object form, provided that You
94
+ meet the following conditions:
95
+
96
+ (a) You must give any other recipients of the Work or
97
+ Derivative Works a copy of this License; and
98
+
99
+ (b) You must cause any modified files to carry prominent notices
100
+ stating that You changed the files; and
101
+
102
+ (c) You must retain, in the Source form of any Derivative Works
103
+ that You distribute, all copyright, patent, trademark, and
104
+ attribution notices from the Source form of the Work,
105
+ excluding those notices that do not pertain to any part of
106
+ the Derivative Works; and
107
+
108
+ (d) If the Work includes a "NOTICE" text file as part of its
109
+ distribution, then any Derivative Works that You distribute must
110
+ include a readable copy of the attribution notices contained
111
+ within such NOTICE file, excluding those notices that do not
112
+ pertain to any part of the Derivative Works, in at least one
113
+ of the following places: within a NOTICE text file distributed
114
+ as part of the Derivative Works; within the Source form or
115
+ documentation, if provided along with the Derivative Works; or,
116
+ within a display generated by the Derivative Works, if and
117
+ wherever such third-party notices normally appear. The contents
118
+ of the NOTICE file are for informational purposes only and
119
+ do not modify the License. You may add Your own attribution
120
+ notices within Derivative Works that You distribute, alongside
121
+ or as an addendum to the NOTICE text from the Work, provided
122
+ that such additional attribution notices cannot be construed
123
+ as modifying the License.
124
+
125
+ You may add Your own copyright statement to Your modifications and
126
+ may provide additional or different license terms and conditions
127
+ for use, reproduction, or distribution of Your modifications, or
128
+ for any such Derivative Works as a whole, provided Your use,
129
+ reproduction, and distribution of the Work otherwise complies with
130
+ the conditions stated in this License.
131
+
132
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
133
+ any Contribution intentionally submitted for inclusion in the Work
134
+ by You to the Licensor shall be under the terms and conditions of
135
+ this License, without any additional terms or conditions.
136
+ Notwithstanding the above, nothing herein shall supersede or modify
137
+ the terms of any separate license agreement you may have executed
138
+ with Licensor regarding such Contributions.
139
+
140
+ 6. Trademarks. This License does not grant permission to use the trade
141
+ names, trademarks, service marks, or product names of the Licensor,
142
+ except as required for reasonable and customary use in describing the
143
+ origin of the Work and reproducing the content of the NOTICE file.
144
+
145
+ 7. Disclaimer of Warranty. Unless required by applicable law or
146
+ agreed to in writing, Licensor provides the Work (and each
147
+ Contributor provides its Contributions) on an "AS IS" BASIS,
148
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
149
+ implied, including, without limitation, any warranties or conditions
150
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
151
+ PARTICULAR PURPOSE. You are solely responsible for determining the
152
+ appropriateness of using or redistributing the Work and assume any
153
+ risks associated with Your exercise of permissions under this License.
154
+
155
+ 8. Limitation of Liability. In no event and under no legal theory,
156
+ whether in tort (including negligence), contract, or otherwise,
157
+ unless required by applicable law (such as deliberate and grossly
158
+ negligent acts) or agreed to in writing, shall any Contributor be
159
+ liable to You for damages, including any direct, indirect, special,
160
+ incidental, or consequential damages of any character arising as a
161
+ result of this License or out of the use or inability to use the
162
+ Work (including but not limited to damages for loss of goodwill,
163
+ work stoppage, computer failure or malfunction, or any and all
164
+ other commercial damages or losses), even if such Contributor
165
+ has been advised of the possibility of such damages.
166
+
167
+ 9. Accepting Warranty or Additional Liability. While redistributing
168
+ the Work or Derivative Works thereof, You may choose to offer,
169
+ and charge a fee for, acceptance of support, warranty, indemnity,
170
+ or other liability obligations and/or rights consistent with this
171
+ License. However, in accepting such obligations, You may act only
172
+ on Your own behalf and on Your sole responsibility, not on behalf
173
+ of any other Contributor, and only if You agree to indemnify,
174
+ defend, and hold each Contributor harmless for any liability
175
+ incurred by, or claims asserted against, such Contributor by reason
176
+ of your accepting any such warranty or additional liability.
177
+
178
+ END OF TERMS AND CONDITIONS
179
+
180
+ APPENDIX: How to apply the Apache License to your work.
181
+
182
+ To apply the Apache License to your work, attach the following
183
+ boilerplate notice, with the fields enclosed by brackets "[]"
184
+ replaced with your own identifying information. (Don't include
185
+ the brackets!) The text should be enclosed in the appropriate
186
+ comment syntax for the file format. We also recommend that a
187
+ file or class name and description of purpose be included on the
188
+ same "printed page" as the copyright notice for easier
189
+ identification within third-party archives.
190
+
191
+ Copyright 2018-2019 Open-MMLab.
192
+
193
+ Licensed under the Apache License, Version 2.0 (the "License");
194
+ you may not use this file except in compliance with the License.
195
+ You may obtain a copy of the License at
196
+
197
+ http://www.apache.org/licenses/LICENSE-2.0
198
+
199
+ Unless required by applicable law or agreed to in writing, software
200
+ distributed under the License is distributed on an "AS IS" BASIS,
201
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
202
+ See the License for the specific language governing permissions and
203
+ limitations under the License.
MANIFEST.in ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ include mmdet3d/.mim/model-index.yml
2
+ include mmdet3d/.mim/dataset-index.yml
3
+ include requirements/*.txt
4
+ recursive-include mmdet3d/.mim/ops *.cpp *.cu *.h *.cc
5
+ recursive-include mmdet3d/.mim/configs *.py *.yml
6
+ recursive-include mmdet3d/.mim/tools *.sh *.py
README_zh-CN.md ADDED
@@ -0,0 +1,427 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div align="center">
2
+ <img src="resources/mmdet3d-logo.png" width="600"/>
3
+ <div>&nbsp;</div>
4
+ <div align="center">
5
+ <b><font size="5">OpenMMLab 官网</font></b>
6
+ <sup>
7
+ <a href="https://openmmlab.com">
8
+ <i><font size="4">HOT</font></i>
9
+ </a>
10
+ </sup>
11
+ &nbsp;&nbsp;&nbsp;&nbsp;
12
+ <b><font size="5">OpenMMLab 开放平台</font></b>
13
+ <sup>
14
+ <a href="https://platform.openmmlab.com">
15
+ <i><font size="4">TRY IT OUT</font></i>
16
+ </a>
17
+ </sup>
18
+ </div>
19
+ <div>&nbsp;</div>
20
+
21
+ [![PyPI](https://img.shields.io/pypi/v/mmdet3d)](https://pypi.org/project/mmdet3d)
22
+ [![docs](https://img.shields.io/badge/docs-latest-blue)](https://mmdetection3d.readthedocs.io/zh_CN/latest/)
23
+ [![badge](https://github.com/open-mmlab/mmdetection3d/workflows/build/badge.svg)](https://github.com/open-mmlab/mmdetection3d/actions)
24
+ [![codecov](https://codecov.io/gh/open-mmlab/mmdetection3d/branch/main/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmdetection3d)
25
+ [![license](https://img.shields.io/github/license/open-mmlab/mmdetection3d.svg)](https://github.com/open-mmlab/mmdetection3d/blob/main/LICENSE)
26
+ [![open issues](https://isitmaintained.com/badge/open/open-mmlab/mmdetection3d.svg)](https://github.com/open-mmlab/mmdetection3d/issues)
27
+ [![issue resolution](https://isitmaintained.com/badge/resolution/open-mmlab/mmdetection3d.svg)](https://github.com/open-mmlab/mmdetection3d/issues)
28
+
29
+ [📘使用文档](https://mmdetection3d.readthedocs.io/zh_CN/latest/) |
30
+ [🛠️安装教程](https://mmdetection3d.readthedocs.io/zh_CN/latest/get_started.html) |
31
+ [👀模型库](https://mmdetection3d.readthedocs.io/zh_CN/latest/model_zoo.html) |
32
+ [🆕更新日志](https://mmdetection3d.readthedocs.io/en/latest/notes/changelog.html) |
33
+ [🚀进行中的项目](https://github.com/open-mmlab/mmdetection3d/projects) |
34
+ [🤔报告问题](https://github.com/open-mmlab/mmdetection3d/issues/new/choose)
35
+
36
+ </div>
37
+
38
+ <div align="center">
39
+
40
+ [English](README.md) | 简体中文
41
+
42
+ </div>
43
+
44
+ <div align="center">
45
+ <a href="https://openmmlab.medium.com/" style="text-decoration:none;">
46
+ <img src="https://user-images.githubusercontent.com/25839884/219255827-67c1a27f-f8c5-46a9-811d-5e57448c61d1.png" width="3%" alt="" /></a>
47
+ <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
48
+ <a href="https://discord.com/channels/1037617289144569886/1046608014234370059" style="text-decoration:none;">
49
+ <img src="https://user-images.githubusercontent.com/25839884/218347213-c080267f-cbb6-443e-8532-8e1ed9a58ea9.png" width="3%" alt="" /></a>
50
+ <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
51
+ <a href="https://twitter.com/OpenMMLab" style="text-decoration:none;">
52
+ <img src="https://user-images.githubusercontent.com/25839884/218346637-d30c8a0f-3eba-4699-8131-512fb06d46db.png" width="3%" alt="" /></a>
53
+ <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
54
+ <a href="https://www.youtube.com/openmmlab" style="text-decoration:none;">
55
+ <img src="https://user-images.githubusercontent.com/25839884/218346691-ceb2116a-465a-40af-8424-9f30d2348ca9.png" width="3%" alt="" /></a>
56
+ <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
57
+ <a href="https://space.bilibili.com/1293512903" style="text-decoration:none;">
58
+ <img src="https://user-images.githubusercontent.com/25839884/219026751-d7d14cce-a7c9-4e82-9942-8375fca65b99.png" width="3%" alt="" /></a>
59
+ <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
60
+ <a href="https://www.zhihu.com/people/openmmlab" style="text-decoration:none;">
61
+ <img src="https://user-images.githubusercontent.com/25839884/219026120-ba71e48b-6e94-4bd4-b4e9-b7d175b5e362.png" width="3%" alt="" /></a>
62
+ </div>
63
+
64
+ ## 简介
65
+
66
+ MMDetection3D 是一个基于 PyTorch 的目标检测开源工具箱,下一代面向 3D 检测的平台。它是 [OpenMMlab](https://openmmlab.com/) 项目的一部分。
67
+
68
+ 主分支代码目前支持 PyTorch 1.8 以上的版本。
69
+
70
+ ![demo image](resources/mmdet3d_outdoor_demo.gif)
71
+
72
+ <details open>
73
+ <summary>主要特性</summary>
74
+
75
+ - **支持多模态/单模态的检测器**
76
+
77
+ 支持多模态/单模态检测器,包括 MVXNet,VoteNet,PointPillars 等。
78
+
79
+ - **支持户内/户外的数据集**
80
+
81
+ 支持室内/室外的 3D 检测数据集,包括 ScanNet,SUNRGB-D,Waymo,nuScenes,Lyft,KITTI。对于 nuScenes 数据集,我们也支持 [nuImages 数据集](https://github.com/open-mmlab/mmdetection3d/tree/main/configs/nuimages)。
82
+
83
+ - **与 2D 检测器的自然整合**
84
+
85
+ [MMDetection](https://github.com/open-mmlab/mmdetection/blob/3.x/docs/zh_cn/model_zoo.md) 支持的 **300+ 个模型,40+ 的论文算法**,和相关模块���可以在此代码库中训练或使用。
86
+
87
+ - **性能高**
88
+
89
+ 训练速度比其他代码库更快。下表可见主要的对比结果。更多的细节可见[基准测评文档](./docs/zh_cn/notes/benchmarks.md)。我们对比了每秒训练的样本数(值越高越好)。其他代码库不支持的模型被标记为 `✗`。
90
+
91
+ | Methods | MMDetection3D | [OpenPCDet](https://github.com/open-mmlab/OpenPCDet) | [votenet](https://github.com/facebookresearch/votenet) | [Det3D](https://github.com/poodarchu/Det3D) |
92
+ | :-----------------: | :-----------: | :--------------------------------------------------: | :----------------------------------------------------: | :-----------------------------------------: |
93
+ | VoteNet | 358 | ✗ | 77 | ✗ |
94
+ | PointPillars-car | 141 | ✗ | ✗ | 140 |
95
+ | PointPillars-3class | 107 | 44 | ✗ | ✗ |
96
+ | SECOND | 40 | 30 | ✗ | ✗ |
97
+ | Part-A2 | 17 | 14 | ✗ | ✗ |
98
+
99
+ </details>
100
+
101
+ 和 [MMDetection](https://github.com/open-mmlab/mmdetection),[MMCV](https://github.com/open-mmlab/mmcv) 一样,MMDetection3D 也可以作为一个库去支持各式各样的项目。
102
+
103
+ ## 最新进展
104
+
105
+ ### 亮点
106
+
107
+ 在1.4版本中,MMDetecion3D 重构了 Waymo 数据集, 加速了 Waymo 数据集的预处理、训练/测试启动、验证的速度。并且在 Waymo 上拓展了对 单目/BEV 等基于相机的三维目标检测模型的支持。在[这里](https://mmdetection3d.readthedocs.io/en/latest/advanced_guides/datasets/waymo.html)提供了对 Waymo 数据信息的详细解读。
108
+
109
+ 此外,在1.4版本中,MMDetection3D 提供了 [Waymo-mini](https://download.openmmlab.com/mmdetection3d/data/waymo_mmdet3d_after_1x4/waymo_mini.tar.gz) 来帮助社区用户上手 Waymo 并用于快速迭代开发。
110
+
111
+ **v1.4.0** 版本已经在 2024.1.8 发布:
112
+
113
+ - 在 `projects` 中支持了 [DSVT](<(https://arxiv.org/abs/2301.06051)>) 的训练
114
+ - 在 `projects` 中支持了 [Nerf-Det](https://arxiv.org/abs/2307.14620)
115
+ - 重构了 Waymo 数据集
116
+
117
+ **v1.3.0** 版本已经在 2023.10.18 发布:
118
+
119
+ - 在 `projects` 中支持 [CENet](https://arxiv.org/abs/2207.12691)
120
+ - 使用新的 3D inferencers 增强演示代码效果
121
+
122
+ **v1.2.0** 版本已经在 2023.7.4 发布:
123
+
124
+ - 在 `mmdet3d/configs`中支持 [新Config样式](https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta)
125
+ - 在 `projects` 中支持 [DSVT](<(https://arxiv.org/abs/2301.06051)>) 的推理
126
+ - 支持通过 `mim` 从 [OpenDataLab](https://opendatalab.com/) 下载数据集
127
+
128
+ **v1.1.1** 版本已经在 2023.5.30 发布:
129
+
130
+ - 在 `projects` 中支持 [TPVFormer](https://arxiv.org/pdf/2302.07817.pdf)
131
+ - 在 `projects` 中支持 BEVFusion 的训练
132
+ - 支持基于激光雷达的 3D 语义分割基准
133
+
134
+ ## 安装
135
+
136
+ 请参考[快速入门文档](https://mmdetection3d.readthedocs.io/zh_CN/latest/get_started.html)进行安装。
137
+
138
+ ## 教程
139
+
140
+ <details>
141
+ <summary>用户指南</summary>
142
+
143
+ - [训练 & 测试](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/index.html#train-test)
144
+ - [学习配置文件](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/config.html)
145
+ - [坐标系](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/coord_sys_tutorial.html)
146
+ - [数据预处理](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/dataset_prepare.html)
147
+ - [自定义数据预处理流程](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/data_pipeline.html)
148
+ - [在标注数据集上测试和训练](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/train_test.html)
149
+ - [推理](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/inference.html)
150
+ - [在自定义数据集上进行训练](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/new_data_model.html)
151
+ - [实用工具](https://mmdetection3d.readthedocs.io/zh_CN/latest/user_guides/index.html#useful-tools)
152
+
153
+ </details>
154
+
155
+ <details>
156
+ <summary>进阶教程</summary>
157
+
158
+ - [数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/index.html#datasets)
159
+ - [KITTI 数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/datasets/kitti.html)
160
+ - [NuScenes 数���集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/datasets/nuscenes.html)
161
+ - [Lyft 数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/datasets/lyft.html)
162
+ - [Waymo 数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/datasets/waymo.html)
163
+ - [SUN RGB-D 数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/datasets/sunrgbd.html)
164
+ - [ScanNet 数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/datasets/scannet.html)
165
+ - [S3DIS 数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/datasets/s3dis.html)
166
+ - [SemanticKITTI 数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/datasets/semantickitti.html)
167
+ - [支持的任务](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/index.html#supported-tasks)
168
+ - [基于激光雷达的 3D 检测](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/supported_tasks/lidar_det3d.html)
169
+ - [基于视觉的 3D 检测](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/supported_tasks/vision_det3d.html)
170
+ - [基于激光雷达的 3D 语义分割](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/supported_tasks/lidar_sem_seg3d.html)
171
+ - [自定义项目](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/index.html#customization)
172
+ - [自定义数据集](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/customize_dataset.html)
173
+ - [自定义模型](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/customize_models.html)
174
+ - [自定义运行时配置](https://mmdetection3d.readthedocs.io/zh_CN/latest/advanced_guides/customize_runtime.html)
175
+
176
+ </details>
177
+
178
+ ## 基准测试和模型库
179
+
180
+ 测试结果和模型可以在[模型库](docs/zh_cn/model_zoo.md)中找到。
181
+
182
+ <div align="center">
183
+ <b>模块组件</b>
184
+ </div>
185
+ <table align="center">
186
+ <tbody>
187
+ <tr align="center" valign="bottom">
188
+ <td>
189
+ <b>主干网络</b>
190
+ </td>
191
+ <td>
192
+ <b>检测头</b>
193
+ </td>
194
+ <td>
195
+ <b>特性</b>
196
+ </td>
197
+ </tr>
198
+ <tr valign="top">
199
+ <td>
200
+ <ul>
201
+ <li><a href="configs/pointnet2">PointNet (CVPR'2017)</a></li>
202
+ <li><a href="configs/pointnet2">PointNet++ (NeurIPS'2017)</a></li>
203
+ <li><a href="configs/regnet">RegNet (CVPR'2020)</a></li>
204
+ <li><a href="configs/dgcnn">DGCNN (TOG'2019)</a></li>
205
+ <li>DLA (CVPR'2018)</li>
206
+ <li>MinkResNet (CVPR'2019)</li>
207
+ <li><a href="configs/minkunet">MinkUNet (CVPR'2019)</a></li>
208
+ <li><a href="configs/cylinder3d">Cylinder3D (CVPR'2021)</a></li>
209
+ </ul>
210
+ </td>
211
+ <td>
212
+ <ul>
213
+ <li><a href="configs/free_anchor">FreeAnchor (NeurIPS'2019)</a></li>
214
+ </ul>
215
+ </td>
216
+ <td>
217
+ <ul>
218
+ <li><a href="configs/dynamic_voxelization">Dynamic Voxelization (CoRL'2019)</a></li>
219
+ </ul>
220
+ </td>
221
+ </tr>
222
+ </td>
223
+ </tr>
224
+ </tbody>
225
+ </table>
226
+
227
+ <div align="center">
228
+ <b>算法模型</b>
229
+ </div>
230
+ <table align="center">
231
+ <tbody>
232
+ <tr align="center" valign="middle">
233
+ <td>
234
+ <b>激光雷达 3D 目标检测</b>
235
+ </td>
236
+ <td>
237
+ <b>相机 3D 目标检测</b>
238
+ </td>
239
+ <td>
240
+ <b>多模态 3D 目标检测</b>
241
+ </td>
242
+ <td>
243
+ <b>3D 语义分割</b>
244
+ </td>
245
+ </tr>
246
+ <tr valign="top">
247
+ <td>
248
+ <li><b>室外</b></li>
249
+ <ul>
250
+ <li><a href="configs/second">SECOND (Sensor'2018)</a></li>
251
+ <li><a href="configs/pointpillars">PointPillars (CVPR'2019)</a></li>
252
+ <li><a href="configs/ssn">SSN (ECCV'2020)</a></li>
253
+ <li><a href="configs/3dssd">3DSSD (CVPR'2020)</a></li>
254
+ <li><a href="configs/sassd">SA-SSD (CVPR'2020)</a></li>
255
+ <li><a href="configs/point_rcnn">PointRCNN (CVPR'2019)</a></li>
256
+ <li><a href="configs/parta2">Part-A2 (TPAMI'2020)</a></li>
257
+ <li><a href="configs/centerpoint">CenterPoint (CVPR'2021)</a></li>
258
+ <li><a href="configs/pv_rcnn">PV-RCNN (CVPR'2020)</a></li>
259
+ <li><a href="projects/CenterFormer">CenterFormer (ECCV'2022)</a></li>
260
+ </ul>
261
+ <li><b>室内</b></li>
262
+ <ul>
263
+ <li><a href="configs/votenet">VoteNet (ICCV'2019)</a></li>
264
+ <li><a href="configs/h3dnet">H3DNet (ECCV'2020)</a></li>
265
+ <li><a href="configs/groupfree3d">Group-Free-3D (ICCV'2021)</a></li>
266
+ <li><a href="configs/fcaf3d">FCAF3D (ECCV'2022)</a></li>
267
+ <li><a href="projects/TR3D">TR3D (ArXiv'2023)</a></li>
268
+ </ul>
269
+ </td>
270
+ <td>
271
+ <li><b>室外</b></li>
272
+ <ul>
273
+ <li><a href="configs/imvoxelnet">ImVoxelNet (WACV'2022)</a></li>
274
+ <li><a href="configs/smoke">SMOKE (CVPRW'2020)</a></li>
275
+ <li><a href="configs/fcos3d">FCOS3D (ICCVW'2021)</a></li>
276
+ <li><a href="configs/pgd">PGD (CoRL'2021)</a></li>
277
+ <li><a href="configs/monoflex">MonoFlex (CVPR'2021)</a></li>
278
+ <li><a href="projects/DETR3D">DETR3D (CoRL'2021)</a></li>
279
+ <li><a href="projects/PETR">PETR (ECCV'2022)</a></li>
280
+ </ul>
281
+ <li><b>Indoor</b></li>
282
+ <ul>
283
+ <li><a href="configs/imvoxelnet">ImVoxelNet (WACV'2022)</a></li>
284
+ </ul>
285
+ </td>
286
+ <td>
287
+ <li><b>室外</b></li>
288
+ <ul>
289
+ <li><a href="configs/mvxnet">MVXNet (ICRA'2019)</a></li>
290
+ <li><a href="projects/BEVFusion">BEVFusion (ICRA'2023)</a></li>
291
+ </ul>
292
+ <li><b>室内</b></li>
293
+ <ul>
294
+ <li><a href="configs/imvotenet">ImVoteNet (CVPR'2020)</a></li>
295
+ </ul>
296
+ </td>
297
+ <td>
298
+ <li><b>室外</b></li>
299
+ <ul>
300
+ <li><a href="configs/minkunet">MinkUNet (CVPR'2019)</a></li>
301
+ <li><a href="configs/spvcnn">SPVCNN (ECCV'2020)</a></li>
302
+ <li><a href="configs/cylinder3d">Cylinder3D (CVPR'2021)</a></li>
303
+ <li><a href="projects/TPVFormer">TPVFormer (CVPR'2023)</a></li>
304
+ </ul>
305
+ <li><b>室内</b></li>
306
+ <ul>
307
+ <li><a href="configs/pointnet2">PointNet++ (NeurIPS'2017)</a></li>
308
+ <li><a href="configs/paconv">PAConv (CVPR'2021)</a></li>
309
+ <li><a href="configs/dgcnn">DGCNN (TOG'2019)</a></li>
310
+ </ul>
311
+ </ul>
312
+ </td>
313
+ </tr>
314
+ </td>
315
+ </tr>
316
+ </tbody>
317
+ </table>
318
+
319
+ | | ResNet | VoVNet | Swin-T | PointNet++ | SECOND | DGCNN | RegNetX | DLA | MinkResNet | Cylinder3D | MinkUNet |
320
+ | :-----------: | :----: | :----: | :----: | :--------: | :----: | :---: | :-----: | :-: | :--------: | :--------: | :------: |
321
+ | SECOND | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
322
+ | PointPillars | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ |
323
+ | FreeAnchor | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ |
324
+ | VoteNet | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
325
+ | H3DNet | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
326
+ | 3DSSD | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
327
+ | Part-A2 | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
328
+ | MVXNet | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
329
+ | CenterPoint | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
330
+ | SSN | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ |
331
+ | ImVoteNet | ✓ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
332
+ | FCOS3D | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
333
+ | PointNet++ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
334
+ | Group-Free-3D | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
335
+ | ImVoxelNet | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
336
+ | PAConv | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
337
+ | DGCNN | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ |
338
+ | SMOKE | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ |
339
+ | PGD | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
340
+ | MonoFlex | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ |
341
+ | SA-SSD | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
342
+ | FCAF3D | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ |
343
+ | PV-RCNN | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
344
+ | Cylinder3D | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
345
+ | MinkUNet | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
346
+ | SPVCNN | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
347
+ | BEVFusion | ✗ | ✗ | ✓ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
348
+ | CenterFormer | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
349
+ | TR3D | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✗ |
350
+ | DETR3D | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
351
+ | PETR | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
352
+ | TPVFormer | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
353
+
354
+ **注意:**[MMDetection](https://github.com/open-mmlab/mmdetection/blob/3.x/docs/zh_cn/model_zoo.md) 支持的基于 2D 检测的 **300+ 个模型,40+ 的论文算法**在 MMDetection3D 中都可以被训练或使用。
355
+
356
+ ## 常见问题
357
+
358
+ 请参考 [FAQ](docs/zh_cn/notes/faq.md) 了解其他用户的常见问题。
359
+
360
+ ## 贡献指南
361
+
362
+ 我们感谢所有的贡献者为改进和提升 MMDetection3D 所作出的努力。请参考[贡献指南](docs/en/notes/contribution_guides.md)来了解参与项目贡献的相关指引。
363
+
364
+ ## 致谢
365
+
366
+ MMDetection3D 是一款由来自不同高校和企业的研发人员共同参与贡献的开源项目。我们感谢所有为项目提供算法复现和新功能支持的贡献者,以及提供宝贵反馈的用户。我们希望这个工具箱和基准测试可以为社区提供灵活的代码工具,供用户复现已有算法并开发自己的新的 3D 检测模型。
367
+
368
+ ## 引用
369
+
370
+ 如果你觉得本项目对你的研究工作有所帮助,请参考如下 bibtex 引用 MMdetection3D:
371
+
372
+ ```latex
373
+ @misc{mmdet3d2020,
374
+ title={{MMDetection3D: OpenMMLab} next-generation platform for general {3D} object detection},
375
+ author={MMDetection3D Contributors},
376
+ howpublished = {\url{https://github.com/open-mmlab/mmdetection3d}},
377
+ year={2020}
378
+ }
379
+ ```
380
+
381
+ ## 开源许可证
382
+
383
+ 该项目采用 [Apache 2.0 开源许可证](LICENSE)。
384
+
385
+ ## OpenMMLab 的其他项目
386
+
387
+ - [MMEngine](https://github.com/open-mmlab/mmengine): OpenMMLab 深度学习模型训练基础库
388
+ - [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库
389
+ - [MMEval](https://github.com/open-mmlab/mmeval): 统一开放的跨框架算法评测库
390
+ - [MIM](https://github.com/open-mmlab/mim): MIM 是 OpenMMlab 项目、算法、模型的统一入口
391
+ - [MMPreTrain](https://github.com/open-mmlab/mmpretrain): OpenMMLab 深度学习预训练工具箱
392
+ - [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 目标检测工具箱
393
+ - [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台
394
+ - [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准
395
+ - [MMYOLO](https://github.com/open-mmlab/mmyolo): OpenMMLab YOLO 系列工具箱与测试基准
396
+ - [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱
397
+ - [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具包
398
+ - [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱
399
+ - [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 人体参数化模型工具箱与测试基准
400
+ - [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab 自监督学习工具箱与测试基准
401
+ - [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab 模型压缩工具箱与测试基准
402
+ - [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准
403
+ - [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱
404
+ - [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台
405
+ - [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab 光流估计工具箱与测试基准
406
+ - [MMagic](https://github.com/open-mmlab/mmagic): OpenMMLab 新一代人工智能内容生成(AIGC)工具箱
407
+ - [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 图片视频生成模型工具箱
408
+ - [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab 模型部署框架
409
+
410
+ ## 欢迎加入 OpenMMLab 社区
411
+
412
+ 扫描下方的二维码可关注 OpenMMLab ���队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),扫描下方微信二维码添加喵喵好友,进入 MMDetection3D 微信交流社群。【加好友申请格式:研究方向+地区+学校/公司+姓名】
413
+
414
+ <div align="center">
415
+ <img src="https://user-images.githubusercontent.com/58739961/187154320-f3312cdf-31f2-4316-9dbb-8d7b0e1b7e08.jpg" height="400" /> <img src="https://github.com/open-mmlab/mmdetection3d/assets/62195058/dfb3f6a9-25c6-47a5-936b-3f1d7347a42b" height="400" />
416
+ </div>
417
+
418
+ 我们会在 OpenMMLab 社区为大家
419
+
420
+ - 📢 分享 AI 框架的前沿核心技术
421
+ - 💻 解读 PyTorch 常用模块源码
422
+ - 📰 发布 OpenMMLab 的相关新闻
423
+ - 🚀 介绍 OpenMMLab 开发的前沿算法
424
+ - 🏃 获取更高效的问题答疑和意见反馈
425
+ - 🔥 提供与各行各业开发者充分交流的平台
426
+
427
+ 干货满满 📘,等你来撩 💗,OpenMMLab 社区期待您的加入 👬
dataset-index.yml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ kitti:
2
+ # The name of dataset in OpenDataLab referring to
3
+ # https://opendatalab.com/KITTI_Object/cli. You can also download it
4
+ # by running `odl get ${dataset}` independently
5
+ dataset: KITTI_Object
6
+ download_root: data
7
+ data_root: data/kitti
8
+ # Scripts for unzipping datasets
9
+ script: tools/dataset_converters/kitti_unzip.sh
10
+
11
+ nuscenes:
12
+ # The name of dataset in OpenDataLab referring to
13
+ # https://opendatalab.com/nuScenes/cli. You can also download it
14
+ # by running `odl get ${dataset}` independently
15
+ dataset: nuScenes
16
+ download_root: data
17
+ data_root: data/nuscenes
18
+ # Scripts for unzipping datasets
19
+ script: tools/dataset_converters/nuscenes_unzip.sh
20
+
21
+ semantickitti:
22
+ # The name of dataset in OpenDataLab referring to
23
+ # https://opendatalab.com/SemanticKITTI/cli. You can also download it
24
+ # by running `odl get ${dataset}` independently
25
+ dataset: SemanticKITTI
26
+ download_root: data
27
+ data_root: data/semantickitti
28
+ # Scripts for unzipping datasets
29
+ script: tools/dataset_converters/semantickitti_unzip.sh
model-index.yml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Import:
2
+ - configs/3dssd/metafile.yml
3
+ - configs/centerpoint/metafile.yml
4
+ - configs/dgcnn/metafile.yml
5
+ - configs/dynamic_voxelization/metafile.yml
6
+ - configs/fcos3d/metafile.yml
7
+ - configs/free_anchor/metafile.yml
8
+ - configs/groupfree3d/metafile.yml
9
+ - configs/h3dnet/metafile.yml
10
+ - configs/imvotenet/metafile.yml
11
+ - configs/imvoxelnet/metafile.yml
12
+ - configs/monoflex/metafile.yml
13
+ - configs/mvxnet/metafile.yml
14
+ - configs/nuimages/metafile.yml
15
+ - configs/paconv/metafile.yml
16
+ - configs/parta2/metafile.yml
17
+ - configs/pgd/metafile.yml
18
+ - configs/point_rcnn/metafile.yml
19
+ - configs/pointnet2/metafile.yml
20
+ - configs/pointpillars/metafile.yml
21
+ - configs/regnet/metafile.yml
22
+ - configs/second/metafile.yml
23
+ - configs/smoke/metafile.yml
24
+ - configs/ssn/metafile.yml
25
+ - configs/votenet/metafile.yml
26
+ - configs/minkunet/metafile.yml
27
+ - configs/cylinder3d/metafile.yml
28
+ - configs/pv_rcnn/metafile.yml
29
+ - configs/fcaf3d/metafile.yml
30
+ - configs/spvcnn/metafile.yml
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ -r requirements/build.txt
2
+ -r requirements/optional.txt
3
+ -r requirements/runtime.txt
4
+ -r requirements/tests.txt
setup.cfg ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [yapf]
2
+ BASED_ON_STYLE = pep8
3
+ BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF = true
4
+ SPLIT_BEFORE_EXPRESSION_AFTER_OPENING_PAREN = true
5
+
6
+ [isort]
7
+ line_length = 79
8
+ multi_line_output = 0
9
+ extra_standard_library = setuptools
10
+ known_first_party = mmdet3d
11
+ known_third_party = cv2,imageio,indoor3d_util,load_scannet_data,lyft_dataset_sdk,m2r,matplotlib,mmcv,mmdet,mmengine,nuimages,numba,numpy,nuscenes,pandas,plyfile,pycocotools,pyquaternion,pytest,pytorch_sphinx_theme,recommonmark,requests,scannet_utils,scipy,seaborn,shapely,skimage,sphinx,tensorflow,terminaltables,torch,trimesh,ts,waymo_open_dataset
12
+ no_lines_before = STDLIB,LOCALFOLDER
13
+ default_section = THIRDPARTY
14
+
15
+ [codespell]
16
+ ignore-words-list = ans,refridgerator,crate,hist,formating,dout,wan,nd,fo,avod,AVOD,warmup
17
+
18
+ [flake8]
19
+ per-file-ignores = mmdet3d/configs/*:F401,F403,F405
setup.py ADDED
@@ -0,0 +1,227 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) OpenMMLab. All rights reserved.
2
+ import os
3
+ import platform
4
+ import shutil
5
+ import sys
6
+ import warnings
7
+ from os import path as osp
8
+ from setuptools import find_packages, setup
9
+
10
+ import torch
11
+ from torch.utils.cpp_extension import (BuildExtension, CppExtension,
12
+ CUDAExtension)
13
+
14
+
15
+ def readme():
16
+ with open('README.md', encoding='utf-8') as f:
17
+ content = f.read()
18
+ return content
19
+
20
+
21
+ version_file = 'mmdet3d/version.py'
22
+
23
+
24
+ def get_version():
25
+ with open(version_file, 'r') as f:
26
+ exec(compile(f.read(), version_file, 'exec'))
27
+ return locals()['__version__']
28
+
29
+
30
+ def make_cuda_ext(name,
31
+ module,
32
+ sources,
33
+ sources_cuda=[],
34
+ extra_args=[],
35
+ extra_include_path=[]):
36
+
37
+ define_macros = []
38
+ extra_compile_args = {'cxx': [] + extra_args}
39
+
40
+ if torch.cuda.is_available() or os.getenv('FORCE_CUDA', '0') == '1':
41
+ define_macros += [('WITH_CUDA', None)]
42
+ extension = CUDAExtension
43
+ extra_compile_args['nvcc'] = extra_args + [
44
+ '-D__CUDA_NO_HALF_OPERATORS__',
45
+ '-D__CUDA_NO_HALF_CONVERSIONS__',
46
+ '-D__CUDA_NO_HALF2_OPERATORS__',
47
+ ]
48
+ sources += sources_cuda
49
+ else:
50
+ print('Compiling {} without CUDA'.format(name))
51
+ extension = CppExtension
52
+ # raise EnvironmentError('CUDA is required to compile MMDetection!')
53
+
54
+ return extension(
55
+ name='{}.{}'.format(module, name),
56
+ sources=[os.path.join(*module.split('.'), p) for p in sources],
57
+ include_dirs=extra_include_path,
58
+ define_macros=define_macros,
59
+ extra_compile_args=extra_compile_args)
60
+
61
+
62
+ def parse_requirements(fname='requirements.txt', with_version=True):
63
+ """Parse the package dependencies listed in a requirements file but strips
64
+ specific versioning information.
65
+
66
+ Args:
67
+ fname (str): path to requirements file
68
+ with_version (bool, default=False): if True include version specs
69
+
70
+ Returns:
71
+ list[str]: list of requirements items
72
+
73
+ CommandLine:
74
+ python -c "import setup; print(setup.parse_requirements())"
75
+ """
76
+ import re
77
+ import sys
78
+ from os.path import exists
79
+ require_fpath = fname
80
+
81
+ def parse_line(line):
82
+ """Parse information from a line in a requirements text file."""
83
+ if line.startswith('-r '):
84
+ # Allow specifying requirements in other files
85
+ target = line.split(' ')[1]
86
+ for info in parse_require_file(target):
87
+ yield info
88
+ else:
89
+ info = {'line': line}
90
+ if line.startswith('-e '):
91
+ info['package'] = line.split('#egg=')[1]
92
+ else:
93
+ # Remove versioning from the package
94
+ pat = '(' + '|'.join(['>=', '==', '>']) + ')'
95
+ parts = re.split(pat, line, maxsplit=1)
96
+ parts = [p.strip() for p in parts]
97
+
98
+ info['package'] = parts[0]
99
+ if len(parts) > 1:
100
+ op, rest = parts[1:]
101
+ if ';' in rest:
102
+ # Handle platform specific dependencies
103
+ # http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-platform-specific-dependencies
104
+ version, platform_deps = map(str.strip,
105
+ rest.split(';'))
106
+ info['platform_deps'] = platform_deps
107
+ else:
108
+ version = rest # NOQA
109
+ info['version'] = (op, version)
110
+ yield info
111
+
112
+ def parse_require_file(fpath):
113
+ with open(fpath, 'r') as f:
114
+ for line in f.readlines():
115
+ line = line.strip()
116
+ if line and not line.startswith('#'):
117
+ for info in parse_line(line):
118
+ yield info
119
+
120
+ def gen_packages_items():
121
+ if exists(require_fpath):
122
+ for info in parse_require_file(require_fpath):
123
+ parts = [info['package']]
124
+ if with_version and 'version' in info:
125
+ parts.extend(info['version'])
126
+ if not sys.version.startswith('3.4'):
127
+ # apparently package_deps are broken in 3.4
128
+ platform_deps = info.get('platform_deps')
129
+ if platform_deps is not None:
130
+ parts.append(';' + platform_deps)
131
+ item = ''.join(parts)
132
+ yield item
133
+
134
+ packages = list(gen_packages_items())
135
+ return packages
136
+
137
+
138
+ def add_mim_extention():
139
+ """Add extra files that are required to support MIM into the package.
140
+
141
+ These files will be added by creating a symlink to the originals if the
142
+ package is installed in `editable` mode (e.g. pip install -e .), or by
143
+ copying from the originals otherwise.
144
+ """
145
+
146
+ # parse installment mode
147
+ if 'develop' in sys.argv:
148
+ # installed by `pip install -e .`
149
+ if platform.system() == 'Windows':
150
+ # set `copy` mode here since symlink fails on Windows.
151
+ mode = 'copy'
152
+ else:
153
+ mode = 'symlink'
154
+ elif 'sdist' in sys.argv or 'bdist_wheel' in sys.argv:
155
+ # installed by `pip install .`
156
+ # or create source distribution by `python setup.py sdist`
157
+ mode = 'copy'
158
+ else:
159
+ return
160
+
161
+ filenames = [
162
+ 'tools', 'configs', 'demo', 'model-index.yml', 'dataset-index.yml'
163
+ ]
164
+ repo_path = osp.dirname(__file__)
165
+ mim_path = osp.join(repo_path, 'mmdet3d', '.mim')
166
+ os.makedirs(mim_path, exist_ok=True)
167
+
168
+ for filename in filenames:
169
+ if osp.exists(filename):
170
+ src_path = osp.join(repo_path, filename)
171
+ tar_path = osp.join(mim_path, filename)
172
+
173
+ if osp.isfile(tar_path) or osp.islink(tar_path):
174
+ os.remove(tar_path)
175
+ elif osp.isdir(tar_path):
176
+ shutil.rmtree(tar_path)
177
+
178
+ if mode == 'symlink':
179
+ src_relpath = osp.relpath(src_path, osp.dirname(tar_path))
180
+ os.symlink(src_relpath, tar_path)
181
+ elif mode == 'copy':
182
+ if osp.isfile(src_path):
183
+ shutil.copyfile(src_path, tar_path)
184
+ elif osp.isdir(src_path):
185
+ shutil.copytree(src_path, tar_path)
186
+ else:
187
+ warnings.warn(f'Cannot copy file {src_path}.')
188
+ else:
189
+ raise ValueError(f'Invalid mode {mode}')
190
+
191
+
192
+ if __name__ == '__main__':
193
+ add_mim_extention()
194
+ setup(
195
+ name='mmdet3d',
196
+ version=get_version(),
197
+ description=("OpenMMLab's next-generation platform"
198
+ 'for general 3D object detection.'),
199
+ long_description=readme(),
200
+ long_description_content_type='text/markdown',
201
+ author='MMDetection3D Contributors',
202
+ author_email='zwwdev@gmail.com',
203
+ keywords='computer vision, 3D object detection',
204
+ url='https://github.com/open-mmlab/mmdetection3d',
205
+ packages=find_packages(exclude=('configs', 'tools', 'demo')),
206
+ include_package_data=True,
207
+ classifiers=[
208
+ 'Development Status :: 5 - Production/Stable',
209
+ 'License :: OSI Approved :: Apache Software License',
210
+ 'Operating System :: OS Independent',
211
+ 'Programming Language :: Python :: 3',
212
+ 'Programming Language :: Python :: 3.7',
213
+ 'Programming Language :: Python :: 3.8',
214
+ 'Programming Language :: Python :: 3.9',
215
+ ],
216
+ license='Apache License 2.0',
217
+ install_requires=parse_requirements('requirements/runtime.txt'),
218
+ extras_require={
219
+ 'all': parse_requirements('requirements.txt'),
220
+ 'tests': parse_requirements('requirements/tests.txt'),
221
+ 'build': parse_requirements('requirements/build.txt'),
222
+ 'optional': parse_requirements('requirements/optional.txt'),
223
+ 'mim': parse_requirements('requirements/mminstall.txt'),
224
+ },
225
+ ext_modules=[],
226
+ cmdclass={'build_ext': BuildExtension},
227
+ zip_safe=False)