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
Hide 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.
from
.builder
import
DATASETS
,
PIPELINES
,
build_dataset
from
.dataset_wrappers
import
CBGSDataset
from
.det3d_dataset
import
Det3DDataset
from
.kitti_dataset
import
KittiDataset
...
...
@@ -27,8 +26,7 @@ from .utils import get_loading_pipeline
from
.waymo_dataset
import
WaymoDataset
__all__
=
[
'KittiDataset'
,
'DATASETS'
,
'CBGSDataset'
,
'build_dataset'
,
'NuScenesDataset'
,
'LyftDataset'
,
'KittiDataset'
,
'CBGSDataset'
,
'NuScenesDataset'
,
'LyftDataset'
,
'ObjectSample'
,
'RandomFlip3D'
,
'ObjectNoise'
,
'GlobalRotScaleTrans'
,
'PointShuffle'
,
'ObjectRangeFilter'
,
'PointsRangeFilter'
,
'LoadPointsFromFile'
,
'S3DISSegDataset'
,
'S3DISDataset'
,
...
...
@@ -39,6 +37,5 @@ __all__ = [
'LoadPointsFromMultiSweeps'
,
'WaymoDataset'
,
'BackgroundPointsFilter'
,
'VoxelBasedPointSampler'
,
'get_loading_pipeline'
,
'RandomDropPointsColor'
,
'RandomJitterPoints'
,
'ObjectNameFilter'
,
'AffineResize'
,
'RandomShiftScale'
,
'LoadPointsFromDict'
,
'PIPELINES'
,
'Resize3D'
,
'RandomResize3D'
,
'RandomShiftScale'
,
'LoadPointsFromDict'
,
'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
from
mmengine.logging
import
print_log
from
terminaltables
import
AsciiTable
from
mmdet3d.
datasets
import
DATASETS
from
mmdet3d.
registry
import
DATASETS
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
import
numpy
as
np
from
mmdet3d.
datasets
import
DATASETS
from
mmdet3d.
registry
import
DATASETS
from
mmdet3d.structures
import
CameraInstance3DBoxes
from
.det3d_dataset
import
Det3DDataset
...
...
mmdet3d/models/__init__.py
View file @
5e2fa8ce
# Copyright (c) OpenMMLab. All rights reserved.
from
mmdet3d.models.layers.fusion_layers
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
.decode_heads
import
*
# noqa: F401,F403
from
.dense_heads
import
*
# noqa: F401,F403
...
...
@@ -21,12 +14,3 @@ from .segmentors import * # noqa: F401,F403
from
.test_time_augs
import
*
# noqa: F401,F403
from
.utils
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
from
mmengine.model
import
BaseModule
from
torch
import
nn
as
nn
from
mmdet3d.models.builder
import
build_backbone
from
mmdet3d.registry
import
MODELS
...
...
@@ -57,7 +56,7 @@ class MultiBackbone(BaseModule):
for
backbone_cfg
in
backbones
:
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
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,
gaussian_radius
)
from
mmdet3d.registry
import
MODELS
,
TASK_UTILS
from
mmdet3d.structures
import
Det3DDataSample
,
xywhr2xyxyr
from
..
import
builder
from
..layers
import
circle_nms
,
nms_bev
...
...
@@ -337,7 +336,7 @@ class CenterHead(BaseModule):
heads
.
update
(
dict
(
heatmap
=
(
num_cls
,
num_heatmap_convs
)))
separate_head
.
update
(
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
:
"""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
from
mmdet3d.registry
import
MODELS
from
mmdet3d.structures
import
limit_period
,
xywhr2xyxyr
from
mmdet3d.utils
import
InstanceList
,
OptInstanceList
from
..builder
import
build_head
from
.anchor3d_head
import
Anchor3DHead
...
...
@@ -220,7 +219,7 @@ class ShapeAwareHead(Anchor3DHead):
in_channels
=
self
.
in_channels
,
shared_conv_channels
=
task
[
'shared_conv_channels'
],
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'
]
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
from
mmdet3d.registry
import
MODELS
from
mmdet3d.structures.ops
import
bbox3d2result
from
mmdet3d.utils
import
ConfigType
from
..builder
import
build_backbone
,
build_head
,
build_neck
@
MODELS
.
register_module
()
...
...
@@ -55,34 +54,34 @@ class DfM(BaseDetector):
pretrained
=
None
,
init_cfg
=
None
):
super
().
__init__
(
init_cfg
=
init_cfg
)
self
.
backbone
=
build_backbone
(
backbone
)
self
.
neck
=
build
_neck
(
neck
)
self
.
backbone
=
MODELS
.
build
(
backbone
)
self
.
neck
=
MODELS
.
build
(
neck
)
if
backbone_stereo
is
not
None
:
backbone_stereo
.
update
(
cat_img_feature
=
self
.
neck
.
cat_img_feature
)
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
==
\
self
.
backbone_stereo
.
cat_img_feature
assert
self
.
neck
.
sem_channels
[
-
1
]
==
self
.
backbone_stereo
.
in_sem_channels
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
:
self
.
neck_3d
=
build
_neck
(
neck_3d
)
self
.
neck_3d
=
MODELS
.
build
(
neck_3d
)
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
:
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
:
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
:
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
.
train_cfg
=
train_cfg
self
.
test_cfg
=
test_cfg
bbox_head_3d
.
update
(
train_cfg
=
train_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
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
from
mmengine.structures
import
InstanceData
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.registry
import
MODELS
,
TASK_UTILS
from
mmdet3d.structures.bbox_3d
import
(
LiDARInstance3DBoxes
,
...
...
@@ -76,8 +75,8 @@ class PVRCNNBBoxHead(BaseModule):
self
.
with_corner_loss
=
with_corner_loss
self
.
class_agnostic
=
class_agnostic
self
.
bbox_coder
=
TASK_UTILS
.
build
(
bbox_coder
)
self
.
loss_bbox
=
build
_loss
(
loss_bbox
)
self
.
loss_cls
=
build
_loss
(
loss_cls
)
self
.
loss_bbox
=
MODELS
.
build
(
loss_bbox
)
self
.
loss_cls
=
MODELS
.
build
(
loss_cls
)
self
.
use_sigmoid_cls
=
loss_cls
.
get
(
'use_sigmoid'
,
False
)
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
from
mmengine.structures
import
InstanceData
from
torch
import
nn
as
nn
from
mmdet3d.models.builder
import
build_loss
from
mmdet3d.registry
import
MODELS
from
mmdet3d.utils
import
InstanceList
...
...
@@ -72,7 +71,7 @@ class ForegroundSegmentationHead(BaseModule):
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
:
"""Forward head.
...
...
mmdet3d/models/voxel_encoders/voxel_encoder.py
View file @
5e2fa8ce
...
...
@@ -5,7 +5,6 @@ from mmcv.ops import DynamicScatter
from
torch
import
Tensor
,
nn
from
mmdet3d.registry
import
MODELS
from
..
import
builder
from
.utils
import
VFELayer
,
get_paddings_indicator
...
...
@@ -172,7 +171,7 @@ class DynamicVFE(nn.Module):
voxel_size
,
point_cloud_range
,
average_points
=
True
)
self
.
fusion_layer
=
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
):
"""Map voxel features to its corresponding points.
...
...
@@ -381,7 +380,7 @@ class HardVFE(nn.Module):
self
.
fusion_layer
=
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
,
features
,
...
...
tests/test_models/test_backbones/test_dgcnn.py
View file @
5e2fa8ce
...
...
@@ -3,7 +3,7 @@ import numpy as np
import
pytest
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_dgcnn_gf
():
...
...
@@ -21,7 +21,7 @@ def test_dgcnn_gf():
fa_channels
=
(
1024
,
),
act_cfg
=
dict
(
type
=
'ReLU'
))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
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
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_dla_net
():
...
...
@@ -13,7 +13,7 @@ def test_dla_net():
norm_cfg
=
dict
(
type
=
'GN'
,
num_groups
=
32
))
img
=
torch
.
randn
((
4
,
3
,
32
,
32
))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
init_weights
()
results
=
self
(
img
)
...
...
tests/test_models/test_backbones/test_mink_resnet.py
View file @
5e2fa8ce
...
...
@@ -3,7 +3,7 @@ import numpy as np
import
pytest
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_mink_resnet
():
...
...
@@ -30,7 +30,7 @@ def test_mink_resnet():
# MinkResNet34 with 4 outputs
cfg
=
dict
(
type
=
'MinkResNet'
,
depth
=
34
,
in_channels
=
3
)
self
=
build_backbone
(
cfg
).
cuda
()
self
=
MODELS
.
build
(
cfg
).
cuda
()
self
.
init_weights
()
y
=
self
(
x
)
...
...
@@ -47,7 +47,7 @@ def test_mink_resnet():
# MinkResNet50 with 2 outputs
cfg
=
dict
(
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
()
y
=
self
(
x
)
...
...
tests/test_models/test_backbones/test_multi_backbone.py
View file @
5e2fa8ce
...
...
@@ -3,7 +3,7 @@ import numpy as np
import
pytest
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_multi_backbone
():
...
...
@@ -58,7 +58,7 @@ def test_multi_backbone():
norm_cfg
=
dict
(
type
=
'BN2d'
))
])
self
=
build_backbone
(
cfg_list
)
self
=
MODELS
.
build
(
cfg_list
)
self
.
cuda
()
assert
len
(
self
.
backbone_list
)
==
4
...
...
@@ -89,7 +89,7 @@ def test_multi_backbone():
fp_channels
=
((
256
,
256
),
(
256
,
256
)),
norm_cfg
=
dict
(
type
=
'BN2d'
)))
self
=
build_backbone
(
cfg_dict
)
self
=
MODELS
.
build
(
cfg_dict
)
self
.
cuda
()
assert
len
(
self
.
backbone_list
)
==
2
...
...
@@ -104,14 +104,14 @@ def test_multi_backbone():
# Length of backbone configs list should be equal to num_streams
with
pytest
.
raises
(
AssertionError
):
cfg_list
[
'num_streams'
]
=
3
build_backbone
(
cfg_list
)
MODELS
.
build
(
cfg_list
)
# Length of suffixes list should be equal to num_streams
with
pytest
.
raises
(
AssertionError
):
cfg_dict
[
'suffixes'
]
=
[
'net0'
,
'net1'
,
'net2'
]
build_backbone
(
cfg_dict
)
MODELS
.
build
(
cfg_dict
)
# Type of 'backbones' should be Dict or List[Dict].
with
pytest
.
raises
(
AssertionError
):
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
import
pytest
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_pointnet2_sa_msg
():
...
...
@@ -30,7 +30,7 @@ def test_pointnet2_sa_msg():
use_xyz
=
True
,
normalize_xyz
=
False
))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
in_channels
==
4
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
out_channels
==
8
...
...
@@ -51,7 +51,7 @@ def test_pointnet2_sa_msg():
# out_indices should smaller than the length of SA Modules.
with
pytest
.
raises
(
AssertionError
):
build_backbone
(
MODELS
.
build
(
dict
(
type
=
'PointNet2SAMSG'
,
in_channels
=
4
,
...
...
@@ -95,7 +95,7 @@ def test_pointnet2_sa_msg():
use_xyz
=
True
,
normalize_xyz
=
False
))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
ret_dict
=
self
(
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
import
pytest
import
torch
from
mmdet3d.
models
import
build_backbone
from
mmdet3d.
registry
import
MODELS
def
test_pointnet2_sa_ssg
():
...
...
@@ -18,7 +18,7 @@ def test_pointnet2_sa_ssg():
num_samples
=
(
16
,
8
),
sa_channels
=
((
8
,
16
),
(
16
,
16
)),
fp_channels
=
((
16
,
16
),
(
16
,
16
)))
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
in_channels
==
6
assert
self
.
SA_modules
[
0
].
mlps
[
0
].
layer0
.
conv
.
out_channels
==
8
...
...
@@ -61,7 +61,7 @@ def test_pointnet2_sa_ssg():
# test only xyz input without features
cfg
[
'in_channels'
]
=
3
self
=
build_backbone
(
cfg
)
self
=
MODELS
.
build
(
cfg
)
self
.
cuda
()
ret_dict
=
self
(
xyz
[...,
:
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 @@
import
pytest
import
torch
from
mmdet3d.
models.builder
import
build_loss
from
mmdet3d.
registry
import
MODELS
def
test_multibin_loss
():
...
...
@@ -24,7 +24,7 @@ def test_multibin_loss():
[
1
,
1
,
0
,
0
,
3.12
,
3.12
,
2.34
,
1.23
]])
multibin_loss_cfg
=
dict
(
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
)
expected_multibin_loss
=
torch
.
tensor
(
2.1120
)
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