Unverified Commit 4f88f1a5 authored by VVsssssk's avatar VVsssssk Committed by GitHub
Browse files

[Fix] replace mmcv's function and modules imported with mmengine's and sync...

[Fix] replace mmcv's function and modules imported with mmengine's and sync the latest mmengine (#1765)

* replace mmcv to mmengine

* fix

* fix comments
parent 0e157c31
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
import torch import torch
from mmcv.ops import Voxelization from mmcv.ops import Voxelization
from mmcv.runner import force_fp32
from torch.nn import functional as F from torch.nn import functional as F
from mmdet3d.models.test_time_augs import merge_aug_bboxes_3d from mmdet3d.models.test_time_augs import merge_aug_bboxes_3d
...@@ -52,7 +51,6 @@ class SASSD(SingleStage3DDetector): ...@@ -52,7 +51,6 @@ class SASSD(SingleStage3DDetector):
return x, point_misc return x, point_misc
@torch.no_grad() @torch.no_grad()
@force_fp32()
def voxelize(self, points): def voxelize(self, points):
"""Apply hard voxelization to points.""" """Apply hard voxelization to points."""
voxels, coors, num_points = [], [], [] voxels, coors, num_points = [], [], []
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
from typing import Dict, List, Optional, Union from typing import Dict, List, Optional, Union
from mmengine import InstanceData from mmengine.structures import InstanceData
from torch import Tensor from torch import Tensor
from mmdet3d.registry import MODELS from mmdet3d.registry import MODELS
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
import torch import torch
from mmcv.runner import force_fp32
from mmengine.registry import MODELS from mmengine.registry import MODELS
from torch import distributed as dist from torch import distributed as dist
from torch import nn as nn from torch import nn as nn
...@@ -48,10 +47,6 @@ class NaiveSyncBatchNorm1d(nn.BatchNorm1d): ...@@ -48,10 +47,6 @@ class NaiveSyncBatchNorm1d(nn.BatchNorm1d):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fp16_enabled = False self.fp16_enabled = False
# customized normalization layer still needs this decorator
# to force the input to be fp32 and the output to be fp16
# TODO: make mmcv fp16 utils handle customized norm layers
@force_fp32(out_fp16=True)
def forward(self, input): def forward(self, input):
""" """
Args: Args:
...@@ -121,10 +116,6 @@ class NaiveSyncBatchNorm2d(nn.BatchNorm2d): ...@@ -121,10 +116,6 @@ class NaiveSyncBatchNorm2d(nn.BatchNorm2d):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fp16_enabled = False self.fp16_enabled = False
# customized normalization layer still needs this decorator
# to force the input to be fp32 and the output to be fp16
# TODO: make mmcv fp16 utils handle customized norm layers
@force_fp32(out_fp16=True)
def forward(self, input): def forward(self, input):
""" """
Args: Args:
......
...@@ -4,7 +4,7 @@ import copy ...@@ -4,7 +4,7 @@ import copy
import torch import torch
from mmcv.cnn import ConvModule, build_activation_layer, build_norm_layer from mmcv.cnn import ConvModule, build_activation_layer, build_norm_layer
from mmcv.ops import assign_score_withk as assign_score_cuda from mmcv.ops import assign_score_withk as assign_score_cuda
from mmengine.model.utils import constant_init from mmengine.model import constant_init
from torch import nn as nn from torch import nn as nn
from torch.nn import functional as F from torch.nn import functional as F
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
from mmcv.utils import Registry from mmengine.registry import Registry
SA_MODULES = Registry('point_sa_module') SA_MODULES = Registry('point_sa_module')
......
...@@ -20,7 +20,7 @@ class GroupFree3DMHA(MultiheadAttention): ...@@ -20,7 +20,7 @@ class GroupFree3DMHA(MultiheadAttention):
proj_drop (float, optional): A Dropout layer. Defaults to 0.0. proj_drop (float, optional): A Dropout layer. Defaults to 0.0.
dropout_layer (obj:`ConfigDict`, optional): The dropout_layer used dropout_layer (obj:`ConfigDict`, optional): The dropout_layer used
when adding the shortcut. when adding the shortcut.
init_cfg (obj:`mmcv.ConfigDict`, optional): The Config for init_cfg (obj:`mmengine.ConfigDict`, optional): The Config for
initialization. Default: None. initialization. Default: None.
batch_first (bool, optional): Key, Query and Value are shape of batch_first (bool, optional): Key, Query and Value are shape of
(batch, n, embed_dim) (batch, n, embed_dim)
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
import torch import torch
from mmcv import is_tuple_of
from mmcv.cnn import ConvModule from mmcv.cnn import ConvModule
from mmengine import is_tuple_of
from torch import nn as nn from torch import nn as nn
from mmdet3d.models.builder import build_loss from mmdet3d.models.builder import build_loss
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
import torch import torch
from mmcv.runner import auto_fp16
from torch import nn from torch import nn
from mmdet3d.registry import MODELS from mmdet3d.registry import MODELS
...@@ -25,7 +24,6 @@ class PointPillarsScatter(nn.Module): ...@@ -25,7 +24,6 @@ class PointPillarsScatter(nn.Module):
self.in_channels = in_channels self.in_channels = in_channels
self.fp16_enabled = False self.fp16_enabled = False
@auto_fp16(apply_to=('voxel_features', ))
def forward(self, voxel_features, coors, batch_size=None): def forward(self, voxel_features, coors, batch_size=None):
"""Foraward function to scatter features.""" """Foraward function to scatter features."""
# TODO: rewrite the function in a batch manner # TODO: rewrite the function in a batch manner
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
import torch import torch
from mmcv.ops import points_in_boxes_all, three_interpolate, three_nn from mmcv.ops import points_in_boxes_all, three_interpolate, three_nn
from mmcv.runner import auto_fp16
from torch import nn as nn from torch import nn as nn
from mmdet3d.models.layers import SparseBasicBlock, make_sparse_convmodule from mmdet3d.models.layers import SparseBasicBlock, make_sparse_convmodule
...@@ -104,7 +103,6 @@ class SparseEncoder(nn.Module): ...@@ -104,7 +103,6 @@ class SparseEncoder(nn.Module):
indice_key='spconv_down2', indice_key='spconv_down2',
conv_type='SparseConv3d') conv_type='SparseConv3d')
@auto_fp16(apply_to=('voxel_features', ))
def forward(self, voxel_features, coors, batch_size): def forward(self, voxel_features, coors, batch_size):
"""Forward of SparseEncoder. """Forward of SparseEncoder.
...@@ -266,7 +264,6 @@ class SparseEncoderSASSD(SparseEncoder): ...@@ -266,7 +264,6 @@ class SparseEncoderSASSD(SparseEncoder):
self.point_cls = nn.Linear(64, 1, bias=False) self.point_cls = nn.Linear(64, 1, bias=False)
self.point_reg = nn.Linear(64, 3, bias=False) self.point_reg = nn.Linear(64, 3, bias=False)
@auto_fp16(apply_to=('voxel_features', ))
def forward(self, voxel_features, coors, batch_size, test_mode=False): def forward(self, voxel_features, coors, batch_size, test_mode=False):
"""Forward of SparseEncoder. """Forward of SparseEncoder.
......
...@@ -3,8 +3,8 @@ from typing import Dict, List, Optional, Tuple ...@@ -3,8 +3,8 @@ from typing import Dict, List, Optional, Tuple
import torch import torch
from mmcv.cnn import ConvModule from mmcv.cnn import ConvModule
from mmengine import InstanceData
from mmengine.model import BaseModule from mmengine.model import BaseModule
from mmengine.structures import InstanceData
from torch import Tensor from torch import Tensor
from torch import nn as nn from torch import nn as nn
from torch.nn import functional as F from torch.nn import functional as F
......
...@@ -4,8 +4,8 @@ from typing import List ...@@ -4,8 +4,8 @@ from typing import List
import numpy as np import numpy as np
import torch import torch
from mmcv.cnn import ConvModule from mmcv.cnn import ConvModule
from mmengine.data import InstanceData from mmengine.model import normal_init
from mmengine.model.utils import normal_init from mmengine.structures import InstanceData
from torch import Tensor from torch import Tensor
from mmdet3d.models import make_sparse_convmodule from mmdet3d.models import make_sparse_convmodule
......
...@@ -3,8 +3,7 @@ import numpy as np ...@@ -3,8 +3,7 @@ import numpy as np
import torch import torch
from mmcv.cnn import ConvModule from mmcv.cnn import ConvModule
from mmcv.cnn.bricks import build_conv_layer from mmcv.cnn.bricks import build_conv_layer
from mmengine.model import BaseModule from mmengine.model import BaseModule, normal_init
from mmengine.model.utils import normal_init
from torch import nn as nn from torch import nn as nn
from mmdet3d.models.layers import nms_bev, nms_normal_bev from mmdet3d.models.layers import nms_bev, nms_normal_bev
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
from typing import Dict, List from typing import Dict, List
from mmengine import InstanceData from mmengine.structures import InstanceData
from torch import Tensor from torch import Tensor
from mmdet3d.registry import MODELS from mmdet3d.registry import MODELS
......
...@@ -4,8 +4,8 @@ from typing import Dict, List, Optional ...@@ -4,8 +4,8 @@ from typing import Dict, List, Optional
import torch import torch
from mmcv.cnn import ConvModule from mmcv.cnn import ConvModule
from mmcv.ops import furthest_point_sample from mmcv.ops import furthest_point_sample
from mmengine import InstanceData
from mmengine.model import BaseModule from mmengine.model import BaseModule
from mmengine.structures import InstanceData
from torch import nn as nn from torch import nn as nn
from torch.nn import functional as F from torch.nn import functional as F
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
from typing import Dict, List, Tuple from typing import Dict, List, Tuple
from mmcv import ConfigDict from mmengine import ConfigDict
from torch import Tensor from torch import Tensor
from torch.nn import functional as F from torch.nn import functional as F
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
import mmcv import mmengine
import torch import torch
from mmdet3d.registry import TASK_UTILS from mmdet3d.registry import TASK_UTILS
...@@ -44,7 +44,7 @@ class Anchor3DRangeGenerator(object): ...@@ -44,7 +44,7 @@ class Anchor3DRangeGenerator(object):
custom_values=(), custom_values=(),
reshape_out=True, reshape_out=True,
size_per_range=True): size_per_range=True):
assert mmcv.is_list_of(ranges, list) assert mmengine.is_list_of(ranges, list)
if size_per_range: if size_per_range:
if len(sizes) != len(ranges): if len(sizes) != len(ranges):
assert len(ranges) == 1 assert len(ranges) == 1
...@@ -52,7 +52,7 @@ class Anchor3DRangeGenerator(object): ...@@ -52,7 +52,7 @@ class Anchor3DRangeGenerator(object):
assert len(ranges) == len(sizes) assert len(ranges) == len(sizes)
else: else:
assert len(ranges) == 1 assert len(ranges) == 1
assert mmcv.is_list_of(sizes, list) assert mmengine.is_list_of(sizes, list)
assert isinstance(scales, list) assert isinstance(scales, list)
self.sizes = sizes self.sizes = sizes
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
from typing import Optional, Union from typing import Optional, Union
from mmengine.data import InstanceData from mmengine.structures import InstanceData
from mmdet3d.registry import TASK_UTILS from mmdet3d.registry import TASK_UTILS
from mmdet.models.task_modules import AssignResult, MaxIoUAssigner from mmdet.models.task_modules import AssignResult, MaxIoUAssigner
...@@ -101,7 +101,7 @@ class Max3DIoUAssigner(MaxIoUAssigner): ...@@ -101,7 +101,7 @@ class Max3DIoUAssigner(MaxIoUAssigner):
:obj:`AssignResult`: The assign result. :obj:`AssignResult`: The assign result.
Example: Example:
>>> from mmengine.data import InstanceData >>> from mmengine.structures import InstanceData
>>> self = MaxIoUAssigner(0.5, 0.5) >>> self = MaxIoUAssigner(0.5, 0.5)
>>> pred_instances = InstanceData() >>> pred_instances = InstanceData()
>>> pred_instances.priors = torch.Tensor([[0, 0, 10, 10], >>> pred_instances.priors = torch.Tensor([[0, 0, 10, 10],
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
import torch import torch
from mmengine.data import InstanceData from mmengine.structures import InstanceData
from mmdet3d.registry import TASK_UTILS from mmdet3d.registry import TASK_UTILS
from mmdet.models.task_modules import AssignResult from mmdet.models.task_modules import AssignResult
......
# Copyright (c) OpenMMLab. All rights reserved. # Copyright (c) OpenMMLab. All rights reserved.
from .builder import build_voxel_generator
from .voxel_generator import VoxelGenerator from .voxel_generator import VoxelGenerator
__all__ = ['build_voxel_generator', 'VoxelGenerator'] __all__ = ['VoxelGenerator']
# Copyright (c) OpenMMLab. All rights reserved.
import mmcv
from . import voxel_generator
def build_voxel_generator(cfg, **kwargs):
"""Builder of voxel generator."""
if isinstance(cfg, voxel_generator.VoxelGenerator):
return cfg
elif isinstance(cfg, dict):
return mmcv.runner.obj_from_dict(
cfg, voxel_generator, default_args=kwargs)
else:
raise TypeError('Invalid type {} for building a sampler'.format(
type(cfg)))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment