diff --git a/mmdet/core/eval/eval_hooks.py b/mmdet/core/eval/eval_hooks.py
index 3439ee0f37fb3ed6fadbbd225adac48ac1e30a3f..c02aec975c7f4cfa9555172b0dcad3235ec09434 100644
--- a/mmdet/core/eval/eval_hooks.py
+++ b/mmdet/core/eval/eval_hooks.py
@@ -6,7 +6,7 @@ import time
 import mmcv
 import numpy as np
 import torch
-from mmcv.torchpack import Hook, obj_from_dict
+from mmcv.runner import Hook, obj_from_dict
 from pycocotools.cocoeval import COCOeval
 from torch.utils.data import Dataset
 
diff --git a/mmdet/core/utils/dist_utils.py b/mmdet/core/utils/dist_utils.py
index 07b1592e73877cfb1dbdfb5fc0746ec77aac7cf7..fc102c60d4ef9bbd2f513e0796d3e017eaf09559 100644
--- a/mmdet/core/utils/dist_utils.py
+++ b/mmdet/core/utils/dist_utils.py
@@ -6,7 +6,7 @@ import torch.multiprocessing as mp
 import torch.distributed as dist
 from torch._utils import _flatten_dense_tensors, _unflatten_dense_tensors
 from torch.nn.utils import clip_grad
-from mmcv.torchpack import Hook, OptimizerHook
+from mmcv.runner import Hook, OptimizerHook
 
 
 def init_dist(launcher, backend='nccl', **kwargs):
diff --git a/mmdet/core/utils/hooks.py b/mmdet/core/utils/hooks.py
index 72eb3438efac1a3d2c8114914c087f0b563272d9..7186ad75ccce950c13ae65e6c94dfea106e6cd03 100644
--- a/mmdet/core/utils/hooks.py
+++ b/mmdet/core/utils/hooks.py
@@ -1,5 +1,5 @@
 import torch
-from mmcv.torchpack import Hook
+from mmcv.runner import Hook
 
 
 class EmptyCacheHook(Hook):
diff --git a/mmdet/core/utils/misc.py b/mmdet/core/utils/misc.py
index fd8211ef68de37a1631135c9f19823653c0176f1..262f168e646089a535a9ad393947d57198873d93 100644
--- a/mmdet/core/utils/misc.py
+++ b/mmdet/core/utils/misc.py
@@ -12,7 +12,8 @@ def tensor2imgs(tensor, mean=(0, 0, 0), std=(1, 1, 1), to_rgb=True):
     imgs = []
     for img_id in range(num_imgs):
         img = tensor[img_id, ...].cpu().numpy().transpose(1, 2, 0)
-        img = mmcv.imdenorm(img, mean, std, to_bgr=to_rgb).astype(np.uint8)
+        img = mmcv.imdenormalize(
+            img, mean, std, to_bgr=to_rgb).astype(np.uint8)
         imgs.append(np.ascontiguousarray(img))
     return imgs
 
diff --git a/mmdet/datasets/loader/build_loader.py b/mmdet/datasets/loader/build_loader.py
index 34fe2d2f0b00b35d13579cfb3dfc198cf64f3cf0..70f439926a9e0829014abe573d920ca4b9cf4b71 100644
--- a/mmdet/datasets/loader/build_loader.py
+++ b/mmdet/datasets/loader/build_loader.py
@@ -1,6 +1,6 @@
 from functools import partial
 
-from mmcv.torchpack import get_dist_info
+from mmcv.runner import get_dist_info
 from torch.utils.data import DataLoader
 
 from .collate import collate
diff --git a/mmdet/datasets/transforms.py b/mmdet/datasets/transforms.py
index 6cdba4e972e67f717ddf879a56258d8fda8adde9..19bfe05e116a51fcd7959337f77bf27746eab9bb 100644
--- a/mmdet/datasets/transforms.py
+++ b/mmdet/datasets/transforms.py
@@ -31,7 +31,7 @@ class ImageTransform(object):
     def __call__(self, img, scale, flip=False):
         img, scale_factor = mmcv.imrescale(img, scale, return_scale=True)
         img_shape = img.shape
-        img = mmcv.imnorm(img, self.mean, self.std, self.to_rgb)
+        img = mmcv.imnormalize(img, self.mean, self.std, self.to_rgb)
         if flip:
             img = mmcv.imflip(img)
         if self.size_divisor is not None:
diff --git a/mmdet/models/backbones/resnet.py b/mmdet/models/backbones/resnet.py
index fbb3f09c2de74d1b2a1aef8fea38dbdd624cd0ec..458de92095edca42c2d17cf15117d9e96f32ac07 100644
--- a/mmdet/models/backbones/resnet.py
+++ b/mmdet/models/backbones/resnet.py
@@ -3,7 +3,7 @@ import math
 
 import torch.nn as nn
 import torch.utils.checkpoint as cp
-from mmcv.torchpack import load_checkpoint
+from mmcv.runner import load_checkpoint
 
 
 def conv3x3(in_planes, out_planes, stride=1, dilation=1):
diff --git a/mmdet/models/builder.py b/mmdet/models/builder.py
index 4bbc94aa41bb8f3ac823a07a00855a6c65c0c1e0..bdf0ac3d16f9aadb194f944b3f7c4dd1a741e8cd 100644
--- a/mmdet/models/builder.py
+++ b/mmdet/models/builder.py
@@ -1,4 +1,4 @@
-from mmcv import torchpack as tp
+from mmcv.runner import obj_from_dict
 from torch import nn
 
 from . import (backbones, necks, roi_extractors, rpn_heads, bbox_heads,
@@ -11,7 +11,7 @@ __all__ = [
 
 
 def _build_module(cfg, parrent=None, default_args=None):
-    return cfg if isinstance(cfg, nn.Module) else tp.obj_from_dict(
+    return cfg if isinstance(cfg, nn.Module) else obj_from_dict(
         cfg, parrent, default_args)
 
 
diff --git a/tools/test.py b/tools/test.py
index 4c87f4eeee74c3117f505c38eee13d94201380f5..f1fb9cda91e5ff2f9466de3880aef6f886a4e355 100644
--- a/tools/test.py
+++ b/tools/test.py
@@ -2,7 +2,7 @@ import argparse
 
 import torch
 import mmcv
-from mmcv.torchpack import load_checkpoint, parallel_test, obj_from_dict
+from mmcv.runner import load_checkpoint, parallel_test, obj_from_dict
 
 from mmdet import datasets
 from mmdet.core import scatter, MMDataParallel, results2json, coco_eval
diff --git a/tools/train.py b/tools/train.py
index 03c87cce47473187852481b9c69d7ea684c5289b..41b66f354d2393754c484c94186caab3b3f703c2 100644
--- a/tools/train.py
+++ b/tools/train.py
@@ -7,7 +7,7 @@ from collections import OrderedDict
 import numpy as np
 import torch
 from mmcv import Config
-from mmcv.torchpack import Runner, obj_from_dict
+from mmcv.runner import Runner, obj_from_dict
 
 from mmdet import datasets, __version__
 from mmdet.core import (init_dist, DistOptimizerHook, DistSamplerSeedHook,