@@ -1,4 +1,5 @@
# Copyright (c) OpenMMLab. All rights reserved.
+# Copyright 2024 Huawei Technologies Co., Ltd
import mmcv
from .version import __version__, short_version
@@ -17,7 +18,7 @@ def digit_version(version_str):
mmcv_minimum_version = '1.3.17'
-mmcv_maximum_version = '1.6.0'
+mmcv_maximum_version = '1.7.2'
mmcv_version = digit_version(mmcv.__version__)
@@ -26,4 +27,4 @@ assert (mmcv_version >= digit_version(mmcv_minimum_version)
f'MMCV=={mmcv.__version__} is used but incompatible. ' \
f'Please install mmcv>={mmcv_minimum_version}, <={mmcv_maximum_version}.'
-__all__ = ['__version__', 'short_version']
+__all__ = ['__version__', 'short_version']
\ No newline at end of file
@@ -1,11 +1,16 @@
# Copyright (c) OpenMMLab. All rights reserved.
+# Copyright 2024 Huawei Technologies Co., Ltd
import warnings
+import torch
+import torch_npu
import torch.nn as nn
import torch.utils.checkpoint as cp
from mmcv.cnn import build_conv_layer, build_norm_layer, build_plugin_layer
from mmcv.runner import BaseModule
from torch.nn.modules.batchnorm import _BatchNorm
+import mx_driving.fused
+
from ..builder import BACKBONES
from ..utils import ResLayer
@@ -288,7 +293,7 @@ class Bottleneck(BaseModule):
if self.downsample is not None:
identity = self.downsample(x)
- out += identity
+ out = mx_driving.fused.npu_add_relu(out, identity)
return out
@@ -297,8 +302,6 @@ class Bottleneck(BaseModule):
else:
out = _inner_forward(x)
- out = self.relu(out)
-
return out
@@ -608,7 +611,6 @@ class ResNet(BaseModule):
self.norm_cfg, stem_channels, postfix=1)
self.add_module(self.norm1_name, norm1)
self.relu = nn.ReLU(inplace=True)
- self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
def _freeze_stages(self):
if self.frozen_stages >= 0:
@@ -636,7 +638,7 @@ class ResNet(BaseModule):
x = self.conv1(x)
x = self.norm1(x)
x = self.relu(x)
- x = self.maxpool(x)
+ x = mx_driving.fused.npu_max_pool2d(x, 3, 2, 1)
outs = []
for i, layer_name in enumerate(self.res_layers):
res_layer = getattr(self, layer_name)
@@ -646,8 +648,7 @@ class ResNet(BaseModule):
return tuple(outs)
def train(self, mode=True):
- """Convert the model into training mode while keep normalization layer
- freezed."""
+ """Convert the model into training mode while keep normalization layer freezed."""
super(ResNet, self).train(mode)
self._freeze_stages()
if mode and self.norm_eval: