Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
mmdetection3d
Commits
5e2fa8ce
Unverified
Commit
5e2fa8ce
authored
Dec 27, 2022
by
ChaimZhu
Committed by
GitHub
Dec 27, 2022
Browse files
[Refactor]: remove legacy builder.py and update corresponding unit tests (#2161)
* fix circle ci * delete model builder * fix comments
parent
9a425a11
Changes
33
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
44 additions
and
239 deletions
+44
-239
mmdet3d/datasets/__init__.py
mmdet3d/datasets/__init__.py
+2
-5
mmdet3d/datasets/builder.py
mmdet3d/datasets/builder.py
+0
-45
mmdet3d/datasets/det3d_dataset.py
mmdet3d/datasets/det3d_dataset.py
+1
-1
mmdet3d/datasets/kitti_dataset.py
mmdet3d/datasets/kitti_dataset.py
+1
-1
mmdet3d/models/__init__.py
mmdet3d/models/__init__.py
+0
-16
mmdet3d/models/backbones/multi_backbone.py
mmdet3d/models/backbones/multi_backbone.py
+1
-2
mmdet3d/models/builder.py
mmdet3d/models/builder.py
+0
-124
mmdet3d/models/dense_heads/centerpoint_head.py
mmdet3d/models/dense_heads/centerpoint_head.py
+1
-2
mmdet3d/models/dense_heads/shape_aware_head.py
mmdet3d/models/dense_heads/shape_aware_head.py
+1
-2
mmdet3d/models/detectors/dfm.py
mmdet3d/models/detectors/dfm.py
+10
-11
mmdet3d/models/roi_heads/bbox_heads/pv_rcnn_bbox_head.py
mmdet3d/models/roi_heads/bbox_heads/pv_rcnn_bbox_head.py
+2
-3
mmdet3d/models/roi_heads/mask_heads/foreground_segmentation_head.py
...dels/roi_heads/mask_heads/foreground_segmentation_head.py
+1
-2
mmdet3d/models/voxel_encoders/voxel_encoder.py
mmdet3d/models/voxel_encoders/voxel_encoder.py
+2
-3
tests/test_models/test_backbones/test_dgcnn.py
tests/test_models/test_backbones/test_dgcnn.py
+2
-2
tests/test_models/test_backbones/test_dla.py
tests/test_models/test_backbones/test_dla.py
+2
-2
tests/test_models/test_backbones/test_mink_resnet.py
tests/test_models/test_backbones/test_mink_resnet.py
+3
-3
tests/test_models/test_backbones/test_multi_backbone.py
tests/test_models/test_backbones/test_multi_backbone.py
+6
-6
tests/test_models/test_backbones/test_pointnet2_sa_msg.py
tests/test_models/test_backbones/test_pointnet2_sa_msg.py
+4
-4
tests/test_models/test_backbones/test_pointnet2_sa_ssg.py
tests/test_models/test_backbones/test_pointnet2_sa_ssg.py
+3
-3
tests/test_models/test_losses/test_multibin_loss.py
tests/test_models/test_losses/test_multibin_loss.py
+2
-2
No files found.
mmdet3d/datasets/__init__.py
View file @
5e2fa8ce
# Copyright (c) OpenMMLab. All rights reserved.
# Copyright (c) OpenMMLab. All rights reserved.
from
.builder
import
DATASETS
,
PIPELINES
,
build_dataset
from
.dataset_wrappers
import
CBGSDataset
from
.dataset_wrappers
import
CBGSDataset
from
.det3d_dataset
import
Det3DDataset
from
.det3d_dataset
import
Det3DDataset
from
.kitti_dataset
import
KittiDataset
from
.kitti_dataset
import
KittiDataset
...
@@ -27,8 +26,7 @@ from .utils import get_loading_pipeline
...
@@ -27,8 +26,7 @@ from .utils import get_loading_pipeline
from
.waymo_dataset
import
WaymoDataset
from
.waymo_dataset
import
WaymoDataset
__all__
=
[
__all__
=
[
'KittiDataset'
,
'DATASETS'
,
'CBGSDataset'
,
'KittiDataset'
,
'CBGSDataset'
,
'NuScenesDataset'
,
'LyftDataset'
,
'build_dataset'
,
'NuScenesDataset'
,
'LyftDataset'
,
'ObjectSample'
,
'RandomFlip3D'
,
'ObjectNoise'
,
'GlobalRotScaleTrans'
,
'ObjectSample'
,
'RandomFlip3D'
,
'ObjectNoise'
,
'GlobalRotScaleTrans'
,
'PointShuffle'
,
'ObjectRangeFilter'
,
'PointsRangeFilter'
,
'PointShuffle'
,
'ObjectRangeFilter'
,
'PointsRangeFilter'
,
'LoadPointsFromFile'
,
'S3DISSegDataset'
,
'S3DISDataset'
,
'LoadPointsFromFile'
,
'S3DISSegDataset'
,
'S3DISDataset'
,
...
@@ -39,6 +37,5 @@ __all__ = [
...
@@ -39,6 +37,5 @@ __all__ = [
'LoadPointsFromMultiSweeps'
,
'WaymoDataset'
,
'BackgroundPointsFilter'
,
'LoadPointsFromMultiSweeps'
,
'WaymoDataset'
,
'BackgroundPointsFilter'
,
'VoxelBasedPointSampler'
,
'get_loading_pipeline'
,
'RandomDropPointsColor'
,
'VoxelBasedPointSampler'
,
'get_loading_pipeline'
,
'RandomDropPointsColor'
,
'RandomJitterPoints'
,
'ObjectNameFilter'
,
'AffineResize'
,
'RandomJitterPoints'
,
'ObjectNameFilter'
,
'AffineResize'
,
'RandomShiftScale'
,
'LoadPointsFromDict'
,
'PIPELINES'
,
'RandomShiftScale'
,
'LoadPointsFromDict'
,
'Resize3D'
,
'RandomResize3D'
,
'Resize3D'
,
'RandomResize3D'
,
]
]
mmdet3d/datasets/builder.py
deleted
100644 → 0
View file @
9a425a11
# Copyright (c) OpenMMLab. All rights reserved.
import
platform
from
mmdet.datasets.builder
import
_concat_dataset
from
mmdet3d.registry
import
DATASETS
,
TRANSFORMS
if
platform
.
system
()
!=
'Windows'
:
# https://github.com/pytorch/pytorch/issues/973
import
resource
rlimit
=
resource
.
getrlimit
(
resource
.
RLIMIT_NOFILE
)
base_soft_limit
=
rlimit
[
0
]
hard_limit
=
rlimit
[
1
]
soft_limit
=
min
(
max
(
4096
,
base_soft_limit
),
hard_limit
)
resource
.
setrlimit
(
resource
.
RLIMIT_NOFILE
,
(
soft_limit
,
hard_limit
))
OBJECTSAMPLERS
=
TRANSFORMS
PIPELINES
=
TRANSFORMS
def
build_dataset
(
cfg
,
default_args
=
None
):
from
mmengine.dataset
import
(
ClassBalancedDataset
,
ConcatDataset
,
RepeatDataset
)
from
mmdet3d.datasets.dataset_wrappers
import
CBGSDataset
if
isinstance
(
cfg
,
(
list
,
tuple
)):
dataset
=
ConcatDataset
([
build_dataset
(
c
,
default_args
)
for
c
in
cfg
])
elif
cfg
[
'type'
]
==
'ConcatDataset'
:
dataset
=
ConcatDataset
(
[
build_dataset
(
c
,
default_args
)
for
c
in
cfg
[
'datasets'
]],
cfg
.
get
(
'separate_eval'
,
True
))
elif
cfg
[
'type'
]
==
'RepeatDataset'
:
dataset
=
RepeatDataset
(
build_dataset
(
cfg
[
'dataset'
],
default_args
),
cfg
[
'times'
])
elif
cfg
[
'type'
]
==
'ClassBalancedDataset'
:
dataset
=
ClassBalancedDataset
(
build_dataset
(
cfg
[
'dataset'
],
default_args
),
cfg
[
'oversample_thr'
])
elif
cfg
[
'type'
]
==
'CBGSDataset'
:
dataset
=
CBGSDataset
(
build_dataset
(
cfg
[
'dataset'
],
default_args
))
elif
isinstance
(
cfg
.
get
(
'ann_file'
),
(
list
,
tuple
)):
dataset
=
_concat_dataset
(
cfg
,
default_args
)
else
:
dataset
=
DATASETS
.
build
(
cfg
,
default_args
=
default_args
)
return
dataset
mmdet3d/datasets/det3d_dataset.py
View file @
5e2fa8ce
...
@@ -11,7 +11,7 @@ from mmengine.dataset import BaseDataset
...
@@ -11,7 +11,7 @@ from mmengine.dataset import BaseDataset
from
mmengine.logging
import
print_log
from
mmengine.logging
import
print_log
from
terminaltables
import
AsciiTable
from
terminaltables
import
AsciiTable
from
mmdet3d.
datasets
import
DATASETS
from
mmdet3d.
registry
import
DATASETS
from
mmdet3d.structures
import
get_box_type
from
mmdet3d.structures
import
get_box_type
...
...
mmdet3d/datasets/kitti_dataset.py
View file @
5e2fa8ce
...
@@ -3,7 +3,7 @@ from typing import Callable, List, Union
...
@@ -3,7 +3,7 @@ from typing import Callable, List, Union
import
numpy
as
np
import
numpy
as
np
from
mmdet3d.
datasets
import
DATASETS
from
mmdet3d.
registry
import
DATASETS
from
mmdet3d.structures
import
CameraInstance3DBoxes
from
mmdet3d.structures
import
CameraInstance3DBoxes
from
.det3d_dataset
import
Det3DDataset
from
.det3d_dataset
import
Det3DDataset
...
...
mmdet3d/models/__init__.py
View file @
5e2fa8ce
# Copyright (c) OpenMMLab. All rights reserved.
# Copyright (c) OpenMMLab. All rights reserved.
from
mmdet3d.models.layers.fusion_layers
import
*
# noqa: F401,F403
from
mmdet3d.models.layers.fusion_layers
import
*
# noqa: F401,F403
from
.backbones
import
*
# noqa: F401,F403
from
.backbones
import
*
# noqa: F401,F403
from
.builder
import
(
BACKBONES
,
DETECTORS
,
FUSION_LAYERS
,
HEADS
,
LOSSES
,
MIDDLE_ENCODERS
,
NECKS
,
ROI_EXTRACTORS
,
SEGMENTORS
,
SHARED_HEADS
,
VOXEL_ENCODERS
,
build_backbone
,
build_detector
,
build_fusion_layer
,
build_head
,
build_loss
,
build_middle_encoder
,
build_model
,
build_neck
,
build_roi_extractor
,
build_shared_head
,
build_voxel_encoder
)
from
.data_preprocessors
import
*
# noqa: F401,F403
from
.data_preprocessors
import
*
# noqa: F401,F403
from
.decode_heads
import
*
# noqa: F401,F403
from
.decode_heads
import
*
# noqa: F401,F403
from
.dense_heads
import
*
# noqa: F401,F403
from
.dense_heads
import
*
# noqa: F401,F403
...
@@ -21,12 +14,3 @@ from .segmentors import * # noqa: F401,F403
...
@@ -21,12 +14,3 @@ from .segmentors import * # noqa: F401,F403
from
.test_time_augs
import
*
# noqa: F401,F403
from
.test_time_augs
import
*
# noqa: F401,F403
from
.utils
import
*
# noqa: F401,F403
from
.utils
import
*
# noqa: F401,F403
from
.voxel_encoders
import
*
# noqa: F401,F403
from
.voxel_encoders
import
*
# noqa: F401,F403
__all__
=
[
'BACKBONES'
,
'NECKS'
,
'ROI_EXTRACTORS'
,
'SHARED_HEADS'
,
'HEADS'
,
'LOSSES'
,
'DETECTORS'
,
'SEGMENTORS'
,
'VOXEL_ENCODERS'
,
'MIDDLE_ENCODERS'
,
'FUSION_LAYERS'
,
'build_backbone'
,
'build_neck'
,
'build_roi_extractor'
,
'build_shared_head'
,
'build_head'
,
'build_loss'
,
'build_detector'
,
'build_fusion_layer'
,
'build_model'
,
'build_middle_encoder'
,
'build_voxel_encoder'
]
mmdet3d/models/backbones/multi_backbone.py
View file @
5e2fa8ce
...
@@ -7,7 +7,6 @@ from mmcv.cnn import ConvModule
...
@@ -7,7 +7,6 @@ from mmcv.cnn import ConvModule
from
mmengine.model
import
BaseModule
from
mmengine.model
import
BaseModule
from
torch
import
nn
as
nn
from
torch
import
nn
as
nn
from
mmdet3d.models.builder
import
build_backbone
from
mmdet3d.registry
import
MODELS
from
mmdet3d.registry
import
MODELS
...
@@ -57,7 +56,7 @@ class MultiBackbone(BaseModule):
...
@@ -57,7 +56,7 @@ class MultiBackbone(BaseModule):
for
backbone_cfg
in
backbones
:
for
backbone_cfg
in
backbones
:
out_channels
+=
backbone_cfg
[
'fp_channels'
][
-
1
][
-
1
]
out_channels
+=
backbone_cfg
[
'fp_channels'
][
-
1
][
-
1
]
self
.
backbone_list
.
append
(
build_backbone
(
backbone_cfg
))
self
.
backbone_list
.
append
(
MODELS
.
build
(
backbone_cfg
))
# Feature aggregation layers
# Feature aggregation layers
if
aggregation_mlp_channels
is
None
:
if
aggregation_mlp_channels
is
None
:
...
...
mmdet3d/models/builder.py
deleted
100644 → 0
View file @
9a425a11
# Copyright (c) OpenMMLab. All rights reserved.
import
warnings
from
mmdet3d.registry
import
MODELS
BACKBONES
=
MODELS
NECKS
=
MODELS
ROI_EXTRACTORS
=
MODELS
SHARED_HEADS
=
MODELS
HEADS
=
MODELS
LOSSES
=
MODELS
DETECTORS
=
MODELS
SEGMENTORS
=
MODELS
VOXEL_ENCODERS
=
MODELS
MIDDLE_ENCODERS
=
MODELS
FUSION_LAYERS
=
MODELS
SEGMENTORS
=
MODELS
def
build_backbone
(
cfg
):
"""Build backbone."""
warnings
.
warn
(
'``build_backbone`` would be deprecated soon, please use '
'``mmdet3d.registry.MODELS.build()`` '
)
return
BACKBONES
.
build
(
cfg
)
def
build_neck
(
cfg
):
"""Build neck."""
warnings
.
warn
(
'``build_neck`` would be deprecated soon, please use '
'``mmdet3d.registry.MODELS.build()`` '
)
return
NECKS
.
build
(
cfg
)
def
build_roi_extractor
(
cfg
):
"""Build roi extractor."""
warnings
.
warn
(
'``build_roi_extractor`` would be deprecated soon, please use '
'``mmdet3d.registry.MODELS.build()`` '
)
return
ROI_EXTRACTORS
.
build
(
cfg
)
def
build_shared_head
(
cfg
):
"""Build shared head."""
warnings
.
warn
(
'``build_shared_head`` would be deprecated soon, please use '
'``mmdet3d.registry.MODELS.build()`` '
)
return
SHARED_HEADS
.
build
(
cfg
)
def
build_head
(
cfg
):
"""Build head."""
warnings
.
warn
(
'``build_head`` would be deprecated soon, please use '
'``mmdet3d.registry.MODELS.build()`` '
)
return
HEADS
.
build
(
cfg
)
def
build_loss
(
cfg
):
"""Build loss."""
warnings
.
warn
(
'``build_loss`` would be deprecated soon, please use '
'``mmdet3d.registry.MODELS.build()`` '
)
return
LOSSES
.
build
(
cfg
)
def
build_detector
(
cfg
,
train_cfg
=
None
,
test_cfg
=
None
):
"""Build detector."""
if
train_cfg
is
not
None
or
test_cfg
is
not
None
:
warnings
.
warn
(
'train_cfg and test_cfg is deprecated, '
'please specify them in model'
,
UserWarning
)
assert
cfg
.
get
(
'train_cfg'
)
is
None
or
train_cfg
is
None
,
\
'train_cfg specified in both outer field and model field '
assert
cfg
.
get
(
'test_cfg'
)
is
None
or
test_cfg
is
None
,
\
'test_cfg specified in both outer field and model field '
if
cfg
[
'type'
]
in
DETECTORS
.
_module_dict
.
keys
():
return
DETECTORS
.
build
(
cfg
,
default_args
=
dict
(
train_cfg
=
train_cfg
,
test_cfg
=
test_cfg
))
def
build_segmentor
(
cfg
,
train_cfg
=
None
,
test_cfg
=
None
):
"""Build segmentor."""
if
train_cfg
is
not
None
or
test_cfg
is
not
None
:
warnings
.
warn
(
'train_cfg and test_cfg is deprecated, '
'please specify them in model'
,
UserWarning
)
assert
cfg
.
get
(
'train_cfg'
)
is
None
or
train_cfg
is
None
,
\
'train_cfg specified in both outer field and model field '
assert
cfg
.
get
(
'test_cfg'
)
is
None
or
test_cfg
is
None
,
\
'test_cfg specified in both outer field and model field '
return
SEGMENTORS
.
build
(
cfg
,
default_args
=
dict
(
train_cfg
=
train_cfg
,
test_cfg
=
test_cfg
))
def
build_model
(
cfg
,
train_cfg
=
None
,
test_cfg
=
None
):
"""A function wrapper for building 3D detector or segmentor according to
cfg.
Should be deprecated in the future.
"""
if
cfg
.
type
in
[
'EncoderDecoder3D'
]:
return
build_segmentor
(
cfg
,
train_cfg
=
train_cfg
,
test_cfg
=
test_cfg
)
else
:
return
build_detector
(
cfg
,
train_cfg
=
train_cfg
,
test_cfg
=
test_cfg
)
def
build_voxel_encoder
(
cfg
):
"""Build voxel encoder."""
warnings
.
warn
(
'``build_voxel_encoder`` would be deprecated soon, please '
'use ``mmdet3d.registry.MODELS.build()`` '
)
return
VOXEL_ENCODERS
.
build
(
cfg
)
def
build_middle_encoder
(
cfg
):
"""Build middle level encoder."""
warnings
.
warn
(
'``build_middle_encoder`` would be deprecated soon, please '
'use ``mmdet3d.registry.MODELS.build()`` '
)
return
MIDDLE_ENCODERS
.
build
(
cfg
)
def
build_fusion_layer
(
cfg
):
"""Build fusion layer."""
warnings
.
warn
(
'``build_fusion_layer`` would be deprecated soon, please '
'use ``mmdet3d.registry.MODELS.build()`` '
)
return
FUSION_LAYERS
.
build
(
cfg
)
mmdet3d/models/dense_heads/centerpoint_head.py
View file @
5e2fa8ce
...
@@ -13,7 +13,6 @@ from mmdet3d.models.utils import (clip_sigmoid, draw_heatmap_gaussian,
...
@@ -13,7 +13,6 @@ from mmdet3d.models.utils import (clip_sigmoid, draw_heatmap_gaussian,
gaussian_radius
)
gaussian_radius
)
from
mmdet3d.registry
import
MODELS
,
TASK_UTILS
from
mmdet3d.registry
import
MODELS
,
TASK_UTILS
from
mmdet3d.structures
import
Det3DDataSample
,
xywhr2xyxyr
from
mmdet3d.structures
import
Det3DDataSample
,
xywhr2xyxyr
from
..
import
builder
from
..layers
import
circle_nms
,
nms_bev
from
..layers
import
circle_nms
,
nms_bev
...
@@ -337,7 +336,7 @@ class CenterHead(BaseModule):
...
@@ -337,7 +336,7 @@ class CenterHead(BaseModule):
heads
.
update
(
dict
(
heatmap
=
(
num_cls
,
num_heatmap_convs
)))
heads
.
update
(
dict
(
heatmap
=
(
num_cls
,
num_heatmap_convs
)))
separate_head
.
update
(
separate_head
.
update
(
in_channels
=
share_conv_channel
,
heads
=
heads
,
num_cls
=
num_cls
)
in_channels
=
share_conv_channel
,
heads
=
heads
,
num_cls
=
num_cls
)
self
.
task_heads
.
append
(
builder
.
build_hea
d
(
separate_head
))
self
.
task_heads
.
append
(
MODELS
.
buil
d
(
separate_head
))
def
forward_single
(
self
,
x
:
Tensor
)
->
dict
:
def
forward_single
(
self
,
x
:
Tensor
)
->
dict
:
"""Forward function for CenterPoint.
"""Forward function for CenterPoint.
...
...
mmdet3d/models/dense_heads/shape_aware_head.py
View file @
5e2fa8ce
...
@@ -15,7 +15,6 @@ from mmdet3d.models.layers import box3d_multiclass_nms
...
@@ -15,7 +15,6 @@ from mmdet3d.models.layers import box3d_multiclass_nms
from
mmdet3d.registry
import
MODELS
from
mmdet3d.registry
import
MODELS
from
mmdet3d.structures
import
limit_period
,
xywhr2xyxyr
from
mmdet3d.structures
import
limit_period
,
xywhr2xyxyr
from
mmdet3d.utils
import
InstanceList
,
OptInstanceList
from
mmdet3d.utils
import
InstanceList
,
OptInstanceList
from
..builder
import
build_head
from
.anchor3d_head
import
Anchor3DHead
from
.anchor3d_head
import
Anchor3DHead
...
@@ -220,7 +219,7 @@ class ShapeAwareHead(Anchor3DHead):
...
@@ -220,7 +219,7 @@ class ShapeAwareHead(Anchor3DHead):
in_channels
=
self
.
in_channels
,
in_channels
=
self
.
in_channels
,
shared_conv_channels
=
task
[
'shared_conv_channels'
],
shared_conv_channels
=
task
[
'shared_conv_channels'
],
shared_conv_strides
=
task
[
'shared_conv_strides'
])
shared_conv_strides
=
task
[
'shared_conv_strides'
])
self
.
heads
.
append
(
build_hea
d
(
branch
))
self
.
heads
.
append
(
MODELS
.
buil
d
(
branch
))
cls_ptr
+=
task
[
'num_class'
]
cls_ptr
+=
task
[
'num_class'
]
def
forward_single
(
self
,
x
:
Tensor
)
->
Tuple
[
Tensor
]:
def
forward_single
(
self
,
x
:
Tensor
)
->
Tuple
[
Tensor
]:
...
...
mmdet3d/models/detectors/dfm.py
View file @
5e2fa8ce
...
@@ -5,7 +5,6 @@ from mmdet.models.detectors import BaseDetector
...
@@ -5,7 +5,6 @@ from mmdet.models.detectors import BaseDetector
from
mmdet3d.registry
import
MODELS
from
mmdet3d.registry
import
MODELS
from
mmdet3d.structures.ops
import
bbox3d2result
from
mmdet3d.structures.ops
import
bbox3d2result
from
mmdet3d.utils
import
ConfigType
from
mmdet3d.utils
import
ConfigType
from
..builder
import
build_backbone
,
build_head
,
build_neck
@
MODELS
.
register_module
()
@
MODELS
.
register_module
()
...
@@ -55,34 +54,34 @@ class DfM(BaseDetector):
...
@@ -55,34 +54,34 @@ class DfM(BaseDetector):
pretrained
=
None
,
pretrained
=
None
,
init_cfg
=
None
):
init_cfg
=
None
):
super
().
__init__
(
init_cfg
=
init_cfg
)
super
().
__init__
(
init_cfg
=
init_cfg
)
self
.
backbone
=
build_backbone
(
backbone
)
self
.
backbone
=
MODELS
.
build
(
backbone
)
self
.
neck
=
build
_neck
(
neck
)
self
.
neck
=
MODELS
.
build
(
neck
)
if
backbone_stereo
is
not
None
:
if
backbone_stereo
is
not
None
:
backbone_stereo
.
update
(
cat_img_feature
=
self
.
neck
.
cat_img_feature
)
backbone_stereo
.
update
(
cat_img_feature
=
self
.
neck
.
cat_img_feature
)
backbone_stereo
.
update
(
in_sem_channels
=
self
.
neck
.
sem_channels
[
-
1
])
backbone_stereo
.
update
(
in_sem_channels
=
self
.
neck
.
sem_channels
[
-
1
])
self
.
backbone_stereo
=
build_backbone
(
backbone_stereo
)
self
.
backbone_stereo
=
MODELS
.
build
(
backbone_stereo
)
assert
self
.
neck
.
cat_img_feature
==
\
assert
self
.
neck
.
cat_img_feature
==
\
self
.
backbone_stereo
.
cat_img_feature
self
.
backbone_stereo
.
cat_img_feature
assert
self
.
neck
.
sem_channels
[
assert
self
.
neck
.
sem_channels
[
-
1
]
==
self
.
backbone_stereo
.
in_sem_channels
-
1
]
==
self
.
backbone_stereo
.
in_sem_channels
if
backbone_3d
is
not
None
:
if
backbone_3d
is
not
None
:
self
.
backbone_3d
=
build_backbone
(
backbone_3d
)
self
.
backbone_3d
=
MODELS
.
build
(
backbone_3d
)
if
neck_3d
is
not
None
:
if
neck_3d
is
not
None
:
self
.
neck_3d
=
build
_neck
(
neck_3d
)
self
.
neck_3d
=
MODELS
.
build
(
neck_3d
)
if
neck_2d
is
not
None
:
if
neck_2d
is
not
None
:
self
.
neck_2d
=
build
_neck
(
neck_2d
)
self
.
neck_2d
=
MODELS
.
build
(
neck_2d
)
if
bbox_head_2d
is
not
None
:
if
bbox_head_2d
is
not
None
:
self
.
bbox_head_2d
=
build_hea
d
(
bbox_head_2d
)
self
.
bbox_head_2d
=
MODELS
.
buil
d
(
bbox_head_2d
)
if
depth_head_2d
is
not
None
:
if
depth_head_2d
is
not
None
:
self
.
depth_head_2d
=
build_hea
d
(
depth_head_2d
)
self
.
depth_head_2d
=
MODELS
.
buil
d
(
depth_head_2d
)
if
depth_head
is
not
None
:
if
depth_head
is
not
None
:
self
.
depth_head
=
build_hea
d
(
depth_head
)
self
.
depth_head
=
MODELS
.
buil
d
(
depth_head
)
self
.
depth_samples
=
self
.
depth_head
.
depth_samples
self
.
depth_samples
=
self
.
depth_head
.
depth_samples
self
.
train_cfg
=
train_cfg
self
.
train_cfg
=
train_cfg
self
.
test_cfg
=
test_cfg
self
.
test_cfg
=
test_cfg
bbox_head_3d
.
update
(
train_cfg
=
train_cfg
)
bbox_head_3d
.
update
(
train_cfg
=
train_cfg
)
bbox_head_3d
.
update
(
test_cfg
=
test_cfg
)
bbox_head_3d
.
update
(
test_cfg
=
test_cfg
)
self
.
bbox_head_3d
=
build_hea
d
(
bbox_head_3d
)
self
.
bbox_head_3d
=
MODELS
.
buil
d
(
bbox_head_3d
)
@
property
@
property
def
with_backbone_3d
(
self
):
def
with_backbone_3d
(
self
):
...
...
mmdet3d/models/roi_heads/bbox_heads/pv_rcnn_bbox_head.py
View file @
5e2fa8ce
...
@@ -10,7 +10,6 @@ from mmengine.model import BaseModule
...
@@ -10,7 +10,6 @@ from mmengine.model import BaseModule
from
mmengine.structures
import
InstanceData
from
mmengine.structures
import
InstanceData
from
torch
import
nn
as
nn
from
torch
import
nn
as
nn
from
mmdet3d.models.builder
import
build_loss
from
mmdet3d.models.layers
import
nms_bev
,
nms_normal_bev
from
mmdet3d.models.layers
import
nms_bev
,
nms_normal_bev
from
mmdet3d.registry
import
MODELS
,
TASK_UTILS
from
mmdet3d.registry
import
MODELS
,
TASK_UTILS
from
mmdet3d.structures.bbox_3d
import
(
LiDARInstance3DBoxes
,
from
mmdet3d.structures.bbox_3d
import
(
LiDARInstance3DBoxes
,
...
@@ -76,8 +75,8 @@ class PVRCNNBBoxHead(BaseModule):
...
@@ -76,8 +75,8 @@ class PVRCNNBBoxHead(BaseModule):
self
.
with_corner_loss
=
with_corner_loss
self
.
with_corner_loss
=
with_corner_loss
self
.
class_agnostic
=
class_agnostic
self
.
class_agnostic
=
class_agnostic
self
.
bbox_coder
=
TASK_UTILS
.
build
(
bbox_coder
)
self
.
bbox_coder
=
TASK_UTILS
.
build
(
bbox_coder
)
self
.
loss_bbox
=
build
_loss
(
loss_bbox
)
self
.
loss_bbox
=
MODELS
.
build
(
loss_bbox
)
self
.
loss_cls
=
build
_loss
(
loss_cls
)
self
.
loss_cls
=
MODELS
.
build
(
loss_cls
)
self
.
use_sigmoid_cls
=
loss_cls
.
get
(
'use_sigmoid'
,
False
)
self
.
use_sigmoid_cls
=
loss_cls
.
get
(
'use_sigmoid'
,
False
)
cls_out_channels
=
1
if
class_agnostic
else
num_classes
cls_out_channels
=
1
if
class_agnostic
else
num_classes
...
...
mmdet3d/models/roi_heads/mask_heads/foreground_segmentation_head.py
View file @
5e2fa8ce
...
@@ -8,7 +8,6 @@ from mmengine.model import BaseModule
...
@@ -8,7 +8,6 @@ from mmengine.model import BaseModule
from
mmengine.structures
import
InstanceData
from
mmengine.structures
import
InstanceData
from
torch
import
nn
as
nn
from
torch
import
nn
as
nn
from
mmdet3d.models.builder
import
build_loss
from
mmdet3d.registry
import
MODELS
from
mmdet3d.registry
import
MODELS
from
mmdet3d.utils
import
InstanceList
from
mmdet3d.utils
import
InstanceList
...
@@ -72,7 +71,7 @@ class ForegroundSegmentationHead(BaseModule):
...
@@ -72,7 +71,7 @@ class ForegroundSegmentationHead(BaseModule):
self
.
seg_cls_layer
=
nn
.
Sequential
(
*
mlps_layers
)
self
.
seg_cls_layer
=
nn
.
Sequential
(
*
mlps_layers
)
self
.
loss_seg
=
build
_loss
(
loss_seg
)
self
.
loss_seg
=
MODELS
.
build
(
loss_seg
)
def
forward
(
self
,
feats
:
torch
.
Tensor
)
->
dict
:
def
forward
(
self
,
feats
:
torch
.
Tensor
)
->
dict
:
"""Forward head.
"""Forward head.
...
...
mmdet3d/models/voxel_encoders/voxel_encoder.py
View file @
5e2fa8ce
...
@@ -5,7 +5,6 @@ from mmcv.ops import DynamicScatter
...
@@ -5,7 +5,6 @@ from mmcv.ops import DynamicScatter
from
torch
import
Tensor
,
nn
from
torch
import
Tensor
,
nn
from
mmdet3d.registry
import
MODELS
from
mmdet3d.registry
import
MODELS
from
..
import
builder
from
.utils
import
VFELayer
,
get_paddings_indicator
from
.utils
import
VFELayer
,
get_paddings_indicator
...
@@ -172,7 +171,7 @@ class DynamicVFE(nn.Module):
...
@@ -172,7 +171,7 @@ class DynamicVFE(nn.Module):
voxel_size
,
point_cloud_range
,
average_points
=
True
)
voxel_size
,
point_cloud_range
,
average_points
=
True
)
self
.
fusion_layer
=
None
self
.
fusion_layer
=
None
if
fusion_layer
is
not
None
:
if
fusion_layer
is
not
None
:
self
.
fusion_layer
=
builder
.
build_fusion_layer
(
fusion_layer
)
self
.
fusion_layer
=
MODELS
.
build
(
fusion_layer
)
def
map_voxel_center_to_point
(
self
,
pts_coors
,
voxel_mean
,
voxel_coors
):
def
map_voxel_center_to_point
(
self
,
pts_coors
,
voxel_mean
,
voxel_coors
):
"""Map voxel features to its corresponding points.
"""Map voxel features to its corresponding points.
...
@@ -381,7 +380,7 @@ class HardVFE(nn.Module):
...
@@ -381,7 +380,7 @@ class HardVFE(nn.Module):
self
.
fusion_layer
=
None
self
.
fusion_layer
=
None
if
fusion_layer
is
not
None
:
if
fusion_layer
is
not
None
:
self
.
fusion_layer
=
builder
.
build_fusion_layer
(
fusion_layer
)
self
.
fusion_layer
=
MODELS
.
build
(
fusion_layer
)
def
forward
(
self
,
def
forward
(
self
,
features
,
features
,
...
...
tests/test_models/test_backbones/test_dgcnn.py
View file @
5e2fa8ce
...
@@ -3,7 +3,7 @@ import numpy as np
...
@@ -3,7 +3,7 @@ import numpy as np
import
pytest
import
pytest
import
torch
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_dgcnn_gf
():
def
test_dgcnn_gf
():
...
@@ -21,7 +21,7 @@ def test_dgcnn_gf():
...
@@ -21,7 +21,7 @@ def test_dgcnn_gf():
fa_channels
=
(
1024
,
),
fa_channels
=
(
1024
,
),
act_cfg
=
dict
(
type
=
'ReLU'
))
act_cfg
=
dict
(
type
=
'ReLU'
))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
self
.
cuda
()
xyz
=
np
.
fromfile
(
'tests/data/sunrgbd/points/000001.bin'
,
dtype
=
np
.
float32
)
xyz
=
np
.
fromfile
(
'tests/data/sunrgbd/points/000001.bin'
,
dtype
=
np
.
float32
)
...
...
tests/test_models/test_backbones/test_dla.py
View file @
5e2fa8ce
import
torch
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_dla_net
():
def
test_dla_net
():
...
@@ -13,7 +13,7 @@ def test_dla_net():
...
@@ -13,7 +13,7 @@ def test_dla_net():
norm_cfg
=
dict
(
type
=
'GN'
,
num_groups
=
32
))
norm_cfg
=
dict
(
type
=
'GN'
,
num_groups
=
32
))
img
=
torch
.
randn
((
4
,
3
,
32
,
32
))
img
=
torch
.
randn
((
4
,
3
,
32
,
32
))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
init_weights
()
self
.
init_weights
()
results
=
self
(
img
)
results
=
self
(
img
)
...
...
tests/test_models/test_backbones/test_mink_resnet.py
View file @
5e2fa8ce
...
@@ -3,7 +3,7 @@ import numpy as np
...
@@ -3,7 +3,7 @@ import numpy as np
import
pytest
import
pytest
import
torch
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_mink_resnet
():
def
test_mink_resnet
():
...
@@ -30,7 +30,7 @@ def test_mink_resnet():
...
@@ -30,7 +30,7 @@ def test_mink_resnet():
# MinkResNet34 with 4 outputs
# MinkResNet34 with 4 outputs
cfg
=
dict
(
type
=
'MinkResNet'
,
depth
=
34
,
in_channels
=
3
)
cfg
=
dict
(
type
=
'MinkResNet'
,
depth
=
34
,
in_channels
=
3
)
self
=
build_backbone
(
cfg
).
cuda
()
self
=
MODELS
.
build
(
cfg
).
cuda
()
self
.
init_weights
()
self
.
init_weights
()
y
=
self
(
x
)
y
=
self
(
x
)
...
@@ -47,7 +47,7 @@ def test_mink_resnet():
...
@@ -47,7 +47,7 @@ def test_mink_resnet():
# MinkResNet50 with 2 outputs
# MinkResNet50 with 2 outputs
cfg
=
dict
(
cfg
=
dict
(
type
=
'MinkResNet'
,
depth
=
34
,
in_channels
=
3
,
num_stages
=
2
,
pool
=
False
)
type
=
'MinkResNet'
,
depth
=
34
,
in_channels
=
3
,
num_stages
=
2
,
pool
=
False
)
self
=
build_backbone
(
cfg
).
cuda
()
self
=
MODELS
.
build
(
cfg
).
cuda
()
self
.
init_weights
()
self
.
init_weights
()
y
=
self
(
x
)
y
=
self
(
x
)
...
...
tests/test_models/test_backbones/test_multi_backbone.py
View file @
5e2fa8ce
...
@@ -3,7 +3,7 @@ import numpy as np
...
@@ -3,7 +3,7 @@ import numpy as np
import
pytest
import
pytest
import
torch
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_multi_backbone
():
def
test_multi_backbone
():
...
@@ -58,7 +58,7 @@ def test_multi_backbone():
...
@@ -58,7 +58,7 @@ def test_multi_backbone():
norm_cfg
=
dict
(
type
=
'BN2d'
))
norm_cfg
=
dict
(
type
=
'BN2d'
))
])
])
self
=
build_backbone
(
cfg_list
)
self
=
MODELS
.
build
(
cfg_list
)
self
.
cuda
()
self
.
cuda
()
assert
len
(
self
.
backbone_list
)
==
4
assert
len
(
self
.
backbone_list
)
==
4
...
@@ -89,7 +89,7 @@ def test_multi_backbone():
...
@@ -89,7 +89,7 @@ def test_multi_backbone():
fp_channels
=
((
256
,
256
),
(
256
,
256
)),
fp_channels
=
((
256
,
256
),
(
256
,
256
)),
norm_cfg
=
dict
(
type
=
'BN2d'
)))
norm_cfg
=
dict
(
type
=
'BN2d'
)))
self
=
build_backbone
(
cfg_dict
)
self
=
MODELS
.
build
(
cfg_dict
)
self
.
cuda
()
self
.
cuda
()
assert
len
(
self
.
backbone_list
)
==
2
assert
len
(
self
.
backbone_list
)
==
2
...
@@ -104,14 +104,14 @@ def test_multi_backbone():
...
@@ -104,14 +104,14 @@ def test_multi_backbone():
# Length of backbone configs list should be equal to num_streams
# Length of backbone configs list should be equal to num_streams
with
pytest
.
raises
(
AssertionError
):
with
pytest
.
raises
(
AssertionError
):
cfg_list
[
'num_streams'
]
=
3
cfg_list
[
'num_streams'
]
=
3
build_backbone
(
cfg_list
)
MODELS
.
build
(
cfg_list
)
# Length of suffixes list should be equal to num_streams
# Length of suffixes list should be equal to num_streams
with
pytest
.
raises
(
AssertionError
):
with
pytest
.
raises
(
AssertionError
):
cfg_dict
[
'suffixes'
]
=
[
'net0'
,
'net1'
,
'net2'
]
cfg_dict
[
'suffixes'
]
=
[
'net0'
,
'net1'
,
'net2'
]
build_backbone
(
cfg_dict
)
MODELS
.
build
(
cfg_dict
)
# Type of 'backbones' should be Dict or List[Dict].
# Type of 'backbones' should be Dict or List[Dict].
with
pytest
.
raises
(
AssertionError
):
with
pytest
.
raises
(
AssertionError
):
cfg_dict
[
'backbones'
]
=
'PointNet2SASSG'
cfg_dict
[
'backbones'
]
=
'PointNet2SASSG'
build_backbone
(
cfg_dict
)
MODELS
.
build
(
cfg_dict
)
tests/test_models/test_backbones/test_pointnet2_sa_msg.py
View file @
5e2fa8ce
...
@@ -3,7 +3,7 @@ import numpy as np
...
@@ -3,7 +3,7 @@ import numpy as np
import
pytest
import
pytest
import
torch
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_pointnet2_sa_msg
():
def
test_pointnet2_sa_msg
():
...
@@ -30,7 +30,7 @@ def test_pointnet2_sa_msg():
...
@@ -30,7 +30,7 @@ def test_pointnet2_sa_msg():
use_xyz
=
True
,
use_xyz
=
True
,
normalize_xyz
=
False
))
normalize_xyz
=
False
))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
self
.
cuda
()
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
in_channels
==
4
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
in_channels
==
4
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
out_channels
==
8
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
out_channels
==
8
...
@@ -51,7 +51,7 @@ def test_pointnet2_sa_msg():
...
@@ -51,7 +51,7 @@ def test_pointnet2_sa_msg():
# out_indices should smaller than the length of SA Modules.
# out_indices should smaller than the length of SA Modules.
with
pytest
.
raises
(
AssertionError
):
with
pytest
.
raises
(
AssertionError
):
build_backbone
(
MODELS
.
build
(
dict
(
dict
(
type
=
'PointNet2SAMSG'
,
type
=
'PointNet2SAMSG'
,
in_channels
=
4
,
in_channels
=
4
,
...
@@ -95,7 +95,7 @@ def test_pointnet2_sa_msg():
...
@@ -95,7 +95,7 @@ def test_pointnet2_sa_msg():
use_xyz
=
True
,
use_xyz
=
True
,
normalize_xyz
=
False
))
normalize_xyz
=
False
))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
self
.
cuda
()
ret_dict
=
self
(
xyz
)
ret_dict
=
self
(
xyz
)
sa_xyz
=
ret_dict
[
'sa_xyz'
]
sa_xyz
=
ret_dict
[
'sa_xyz'
]
...
...
tests/test_models/test_backbones/test_pointnet2_sa_ssg.py
View file @
5e2fa8ce
...
@@ -3,7 +3,7 @@ import numpy as np
...
@@ -3,7 +3,7 @@ import numpy as np
import
pytest
import
pytest
import
torch
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_pointnet2_sa_ssg
():
def
test_pointnet2_sa_ssg
():
...
@@ -18,7 +18,7 @@ def test_pointnet2_sa_ssg():
...
@@ -18,7 +18,7 @@ def test_pointnet2_sa_ssg():
num_samples
=
(
16
,
8
),
num_samples
=
(
16
,
8
),
sa_channels
=
((
8
,
16
),
(
16
,
16
)),
sa_channels
=
((
8
,
16
),
(
16
,
16
)),
fp_channels
=
((
16
,
16
),
(
16
,
16
)))
fp_channels
=
((
16
,
16
),
(
16
,
16
)))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
self
.
cuda
()
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
in_channels
==
6
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
in_channels
==
6
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
out_channels
==
8
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
out_channels
==
8
...
@@ -61,7 +61,7 @@ def test_pointnet2_sa_ssg():
...
@@ -61,7 +61,7 @@ def test_pointnet2_sa_ssg():
# test only xyz input without features
# test only xyz input without features
cfg
[
'in_channels'
]
=
3
cfg
[
'in_channels'
]
=
3
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
self
.
cuda
()
ret_dict
=
self
(
xyz
[...,
:
3
])
ret_dict
=
self
(
xyz
[...,
:
3
])
assert
len
(
fp_xyz
)
==
len
(
fp_features
)
==
len
(
fp_indices
)
==
3
assert
len
(
fp_xyz
)
==
len
(
fp_features
)
==
len
(
fp_indices
)
==
3
...
...
tests/test_models/test_losses/test_multibin_loss.py
View file @
5e2fa8ce
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
import
pytest
import
pytest
import
torch
import
torch
from
mmdet3d.
models.builder
import
build_loss
from
mmdet3d.
registry
import
MODELS
def
test_multibin_loss
():
def
test_multibin_loss
():
...
@@ -24,7 +24,7 @@ def test_multibin_loss():
...
@@ -24,7 +24,7 @@ def test_multibin_loss():
[
1
,
1
,
0
,
0
,
3.12
,
3.12
,
2.34
,
1.23
]])
[
1
,
1
,
0
,
0
,
3.12
,
3.12
,
2.34
,
1.23
]])
multibin_loss_cfg
=
dict
(
multibin_loss_cfg
=
dict
(
type
=
'MultiBinLoss'
,
reduction
=
'none'
,
loss_weight
=
1.0
)
type
=
'MultiBinLoss'
,
reduction
=
'none'
,
loss_weight
=
1.0
)
multibin_loss
=
build
_loss
(
multibin_loss_cfg
)
multibin_loss
=
MODELS
.
build
(
multibin_loss_cfg
)
output_multibin_loss
=
multibin_loss
(
pred
,
target
,
num_dir_bins
=
4
)
output_multibin_loss
=
multibin_loss
(
pred
,
target
,
num_dir_bins
=
4
)
expected_multibin_loss
=
torch
.
tensor
(
2.1120
)
expected_multibin_loss
=
torch
.
tensor
(
2.1120
)
assert
torch
.
allclose
(
assert
torch
.
allclose
(
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment