Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ImportError: cannot import name 'Runner_kd' from 'mmcv.runner' #14

Open
Lhj-cd opened this issue Nov 3, 2021 · 24 comments
Open

ImportError: cannot import name 'Runner_kd' from 'mmcv.runner' #14

Lhj-cd opened this issue Nov 3, 2021 · 24 comments

Comments

@Lhj-cd
Copy link

Lhj-cd commented Nov 3, 2021

您好,非常感谢您开源您的代码。
我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

@fishlovingcat
Copy link

我也遇到了这个问题,请问你解决了吗

@Lhj-cd
Copy link
Author

Lhj-cd commented Nov 8, 2021

我也遇到了这个问题,请问你解决了吗

没有,作者也还没回复我,期待作者回复

@ruiningTang
Copy link

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

@fishlovingcat
Copy link

fishlovingcat commented Nov 8, 2021 via email

@ggjy
Copy link
Owner

ggjy commented Nov 8, 2021

感谢@ruiningTang 的回复,因为我在mmcv/runner 下面加了个runner_kd.py 所以直接pip install mmcv是没有我自己加的那个.py的 所以会import error。是我没写清楚“从source编译的含义”,就是clone下来之后把runner_kd.py放进去一起编译就行了。

@fishlovingcat
Copy link

fishlovingcat commented Nov 8, 2021 via email

@ruiningTang
Copy link

使用作者的代码,解决了刚刚那个问题后我发现又有个“TypeError:conv2d(): argument input must be Tensor, not DataContainer",你解决import的问题后能跑起来吗 ------------------ 原始邮件 ------------------ 发件人: "ggjy/DeFeat.pytorch" @.>; 发送时间: 2021年11月8日(星期一) 下午2:47 @.>; @.@.>; 主题: Re: [ggjy/DeFeat.pytorch] ImportError: cannot import name 'Runner_kd' from 'mmcv.runner' (Issue #14) @.*** 的回复,因为我在mmcv/runner 下面加了个runner_kd.py 所以直接pip install mmcv是没有我自己加的那个.py的 所以会import error。是我没写清楚“从source编译的含义”,就是clone下来之后把runner_kd.py放进去一起编译就行了。 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

open-mmlab/mmdetection#2782 (comment)

@ggjy
Copy link
Owner

ggjy commented Nov 8, 2021

python -m torch.distributed.launch --nproc_per_node=8 tools/train.py这个代码训练也会报这个错吗

@Lhj-cd
Copy link
Author

Lhj-cd commented Nov 9, 2021

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

请问进入mmcv目录编译具体是怎么个操作,作者自带的mmcv没有setup.py文件啊?...我第一次用mmdetection,不是很明白。或者能不能来个傻瓜版的步骤,谢谢。

@Lhj-cd
Copy link
Author

Lhj-cd commented Nov 9, 2021

python -m torch.distributed.launch --nproc_per_node=8 tools/train.py这个代码训练也会报这个错吗

也是会的

@ruiningTang
Copy link

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

请问进入mmcv目录编译具体是怎么个操作,作者自带的mmcv没有setup.py文件啊?...我第一次用mmdetection,不是很明白。或者能不能来个傻瓜版的步骤,谢谢。

我仔细看了一下我的,我是找了mmdetv2.0版本对应的mmcv(我用的0.5.6亲测可行),然后把作者的runner_kd.py复制到mmcv/runner下,复制好之后删除了作者自带的mmcv,再按mmlab官方的从源编译python setup.py develop,亲测可行。还有你那个“TypeError:conv2d()的问题,你是几卡运行?

@Lhj-cd
Copy link
Author

Lhj-cd commented Nov 9, 2021

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

请问进入mmcv目录编译具体是怎么个操作,作者自带的mmcv没有setup.py文件啊?...我第一次用mmdetection,不是很明白。或者能不能来个傻瓜版的步骤,谢谢。

我仔细看了一下我的,我是找了mmdetv2.0版本对应的mmcv(我用的0.5.6亲测可行),然后把作者的runner_kd.py复制到mmcv/runner下,复制好之后删除了作者自带的mmcv,再按mmlab官方的从源编译python setup.py develop,亲测可行。还有你那个“TypeError:conv2d()的问题,你是几卡运行?

非常感谢你的答复,按照你的步骤,我已经可以跑通了,再次感谢。我没有遇到TypeError:conv2d()这个问题。
目前的话就是在mmdetection官网下载的resnet50-19c8e357和faster_rcnn_x101_32x4d_fpn权重分别作为student和teacher权重,但是会提示基本上所有的权重都和cfg文件定义的网络结构不匹配..目前不知道怎么解决...

@ruiningTang
Copy link

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

请问进入mmcv目录编译具体是怎么个操作,作者自带的mmcv没有setup.py文件啊?...我第一次用mmdetection,不是很明白。或者能不能来个傻瓜版的步骤,谢谢。

我仔细看了一下我的,我是找了mmdetv2.0版本对应的mmcv(我用的0.5.6亲测可行),然后把作者的runner_kd.py复制到mmcv/runner下,复制好之后删除了作者自带的mmcv,再按mmlab官方的从源编译python setup.py develop,亲测可行。还有你那个“TypeError:conv2d()的问题,你是几卡运行?

非常感谢你的答复,按照你的步骤,我已经可以跑通了,再次感谢。我没有遇到TypeError:conv2d()这个问题。 目前的话就是在mmdetection官网下载的resnet50-19c8e357和faster_rcnn_x101_32x4d_fpn权重分别作为student和teacher权重,但是会提示基本上所有的权重都和cfg文件定义的网络结构不匹配..目前不知道怎么解决...

  1. R50下不下载都行,我是没有下载直接用的torchvision的,把学生config改一下就行。pretrained='torchvision://resnet50',加载预训练的时候可能会提示多了unexpected key in source state_dict: fc.weight, fc.bias,这个可以不用管,因为预训练自带的fc在检测里面不会用到。
  2. 作者使用的教师模型是R101的,你下x101肯定不匹配,想用x101的话把教师config修改成x101就行,按照mmdet官方的x101配置改就行

@Lhj-cd
Copy link
Author

Lhj-cd commented Nov 9, 2021

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

请问进入mmcv目录编译具体是怎么个操作,作者自带的mmcv没有setup.py文件啊?...我第一次用mmdetection,不是很明白。或者能不能来个傻瓜版的步骤,谢谢。

我仔细看了一下我的,我是找了mmdetv2.0版本对应的mmcv(我用的0.5.6亲测可行),然后把作者的runner_kd.py复制到mmcv/runner下,复制好之后删除了作者自带的mmcv,再按mmlab官方的从源编译python setup.py develop,亲测可行。还有你那个“TypeError:conv2d()的问题,你是几卡运行?

非常感谢你的答复,按照你的步骤,我已经可以跑通了,再次感谢。我没有遇到TypeError:conv2d()这个问题。 目前的话就是在mmdetection官网下载的resnet50-19c8e357和faster_rcnn_x101_32x4d_fpn权重分别作为student和teacher权重,但是会提示基本上所有的权重都和cfg文件定义的网络结构不匹配..目前不知道怎么解决...

  1. R50下不下载都行,我是没有下载直接用的torchvision的,把学生config改一下就行。pretrained='torchvision://resnet50',加载预训练的时候可能会提示多了unexpected key in source state_dict: fc.weight, fc.bias,这个可以不用管,因为预训练自带的fc在检测里面不会用到。
  2. 作者使用的教师模型是R101的,你下x101肯定不匹配,想用x101的话把教师config修改成x101就行,按照mmdet官方的x101配置改就行

明白了,我没注意这个R和X前缀,X是代表ResNeXt吧,多谢大佬多谢大佬~~~

@fishlovingcat
Copy link

运行环境:

Python: 3.7.11 (default, Jul 27 2021, 14:32:16) [GCC 7.5.0]
CUDA available: True
CUDA_HOME: /usr/local/cuda
NVCC: Build cuda_11.1.TC455_06.29069683_0
GPU 0: NVIDIA GeForce RTX 3060
GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
PyTorch: 1.8.0
PyTorch compiling details: PyTorch built with:

  • GCC 7.3
  • C++ Version: 201402
  • Intel(R) oneAPI Math Kernel Library Version 2021.4-Product Build 20210904 for Intel(R) 64 architecture applications
  • Intel(R) MKL-DNN v1.7.0 (Git Hash 7aed236906b1f7a05c0917e5257a1af05e9ff683)
  • OpenMP 201511 (a.k.a. OpenMP 4.5)
  • NNPACK is enabled
  • CPU capability usage: AVX2
  • CUDA Runtime 11.1
  • NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_37,code=compute_37
  • CuDNN 8.0.5
  • Magma 2.5.2
  • Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.1, CUDNN_VERSION=8.0.5, CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.8.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON,

TorchVision: 0.9.0
OpenCV: 4.5.4-dev
MMCV: 0.5.1
MMDetection: 2.0.0+unknown
MMDetection Compiler: GCC 7.5
MMDetection CUDA Compiler: 11.1

报错信息:

Traceback (most recent call last):
File "tools/train.py", line 176, in
main()
File "tools/train.py", line 172, in main
meta=meta)
File "/home/lyc/projects/decoupled-feature/mmdet/apis/train.py", line 487, in train_detector
runner.run(data_loaders, cfg.workflow, cfg.total_epochs)
File "/home/lyc/下载/mmcv-0.5.6/mmcv/runner/runner.py", line 383, in run
epoch_runner(data_loaders[i], **kwargs)
File "/home/lyc/下载/mmcv-0.5.6/mmcv/runner/runner.py", line 282, in train
self.model, data_batch, train_mode=True, **kwargs)
File "/home/lyc/projects/decoupled-feature/mmdet/apis/train.py", line 79, in batch_processor
losses = model(**data)
File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/parallel/distributed.py", line 705, in forward
output = self.module(*inputs[0], **kwargs[0])
File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/lyc/projects/decoupled-feature/mmdet/core/fp16/decorators.py", line 49, in new_func
return old_func(*args, **kwargs)
File "/home/lyc/projects/decoupled-feature/mmdet/models/detectors/base.py", line 148, in forward
return self.forward_train(img, img_metas, **kwargs)
File "/home/lyc/projects/decoupled-feature/mmdet/models/detectors/two_stage.py", line 136, in forward_train
x = self.extract_feat(img)
File "/home/lyc/projects/decoupled-feature/mmdet/models/detectors/two_stage.py", line 76, in extract_feat
x = self.backbone(img)
File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/lyc/projects/decoupled-feature/mmdet/models/backbones/resnet.py", line 594, in forward
x = self.conv1(x)
File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/conv.py", line 399, in forward
return self._conv_forward(input, self.weight, self.bias)
File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/conv.py", line 396, in _conv_forward
self.padding, self.dilation, self.groups)
TypeError: conv2d(): argument 'input' (position 1) must be Tensor, not DataContainer

我运行的命令是python -m torch.distributed.launch --nproc_per_node=1 tools/train.py --gpus 1 --launcher pytorch --validate --work-dir /home/lyc/projects/decoupled-feature/results/faster50 --config configs/faster_rcnn/voc_faster_rcnn_r50.py

@ruiningTang
Copy link

运行环境:

Python: 3.7.11 (default, Jul 27 2021, 14:32:16) [GCC 7.5.0] CUDA available: True CUDA_HOME: /usr/local/cuda NVCC: Build cuda_11.1.TC455_06.29069683_0 GPU 0: NVIDIA GeForce RTX 3060 GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 PyTorch: 1.8.0 PyTorch compiling details: PyTorch built with:

  • GCC 7.3
  • C++ Version: 201402
  • Intel(R) oneAPI Math Kernel Library Version 2021.4-Product Build 20210904 for Intel(R) 64 architecture applications
  • Intel(R) MKL-DNN v1.7.0 (Git Hash 7aed236906b1f7a05c0917e5257a1af05e9ff683)
  • OpenMP 201511 (a.k.a. OpenMP 4.5)
  • NNPACK is enabled
  • CPU capability usage: AVX2
  • CUDA Runtime 11.1
  • NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_37,code=compute_37
  • CuDNN 8.0.5
  • Magma 2.5.2
  • Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.1, CUDNN_VERSION=8.0.5, CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.8.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON,

TorchVision: 0.9.0 OpenCV: 4.5.4-dev MMCV: 0.5.1 MMDetection: 2.0.0+unknown MMDetection Compiler: GCC 7.5 MMDetection CUDA Compiler: 11.1

报错信息:

Traceback (most recent call last): File "tools/train.py", line 176, in main() File "tools/train.py", line 172, in main meta=meta) File "/home/lyc/projects/decoupled-feature/mmdet/apis/train.py", line 487, in train_detector runner.run(data_loaders, cfg.workflow, cfg.total_epochs) File "/home/lyc/下载/mmcv-0.5.6/mmcv/runner/runner.py", line 383, in run epoch_runner(data_loaders[i], **kwargs) File "/home/lyc/下载/mmcv-0.5.6/mmcv/runner/runner.py", line 282, in train self.model, data_batch, train_mode=True, **kwargs) File "/home/lyc/projects/decoupled-feature/mmdet/apis/train.py", line 79, in batch_processor losses = model(**data) File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl result = self.forward(*input, **kwargs) File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/parallel/distributed.py", line 705, in forward output = self.module(*inputs[0], **kwargs[0]) File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl result = self.forward(*input, **kwargs) File "/home/lyc/projects/decoupled-feature/mmdet/core/fp16/decorators.py", line 49, in new_func return old_func(*args, **kwargs) File "/home/lyc/projects/decoupled-feature/mmdet/models/detectors/base.py", line 148, in forward return self.forward_train(img, img_metas, **kwargs) File "/home/lyc/projects/decoupled-feature/mmdet/models/detectors/two_stage.py", line 136, in forward_train x = self.extract_feat(img) File "/home/lyc/projects/decoupled-feature/mmdet/models/detectors/two_stage.py", line 76, in extract_feat x = self.backbone(img) File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl result = self.forward(*input, **kwargs) File "/home/lyc/projects/decoupled-feature/mmdet/models/backbones/resnet.py", line 594, in forward x = self.conv1(x) File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/module.py", line 889, in _call_impl result = self.forward(*input, **kwargs) File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/conv.py", line 399, in forward return self._conv_forward(input, self.weight, self.bias) File "/home/lyc/anaconda3/envs/openmmlab-cuda111/lib/python3.7/site-packages/torch/nn/modules/conv.py", line 396, in _conv_forward self.padding, self.dilation, self.groups) TypeError: conv2d(): argument 'input' (position 1) must be Tensor, not DataContainer

我运行的命令是python -m torch.distributed.launch --nproc_per_node=1 tools/train.py --gpus 1 --launcher pytorch --validate --work-dir /home/lyc/projects/decoupled-feature/results/faster50 --config configs/faster_rcnn/voc_faster_rcnn_r50.py

你运行的是多卡的训练,单卡直接python tools/train.py --validate --work-dir /home/lyc/projects/decoupled-feature/results/faster50 --config configs/faster_rcnn/voc_faster_rcnn_r50.py

@Lhj-cd
Copy link
Author

Lhj-cd commented Nov 12, 2021

最近仔细看了下您的代码,有几个问题想咨询一下。

  1. 我看到您在其他issue里面说分类结果的蒸馏是在代码里没有用到,因为提升特别小。但是论文中的table 5应该就是专门对分类部分的蒸馏做了实验,论文中实验证明能够提高student模型1.5个点左右。那对分类部分进行蒸馏效果究竟如何呢?还是说分类头蒸馏对参数特别敏感?
  2. 对于特征kd loss,您采用了decouple的方式来分别计算前背景损失。训练过程中,特征kd loss的值(无论是前景还是背景)都比gt loss (包括loss_rpn_cls, loss_rpn_bbox和loss_cls)大很多,甚至高一到两个数量级,这样不会导致模型更倾向于去侧重于降低losskd而忽略了gt损失吗?
  3. 对于前背景kd loss,您代码中是设置了3和12两个不同的权重,请问前背景的kd loss权重设置有什么讲究吗?

感谢您的回答。 @ggjy

@shuizaola
Copy link

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

你好 我想问下,怎么在MMCV目录进行编译呢 还是个小白 怎么按作者的进行mmcv安装呀?还望指教下 谢谢

@shuizaola
Copy link

感谢@ruiningTang 的回复,因为我在mmcv/runner 下面加了个runner_kd.py 所以直接pip install mmcv是没有我自己加的那个.py的 所以会import error。是我没写清楚“从source编译的含义”,就是clone下来之后把runner_kd.py放进去一起编译就行了。

怎么样一起编译啊 输入什么命令呢

@ruiningTang
Copy link

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

你好 我想问下,怎么在MMCV目录进行编译呢 还是个小白 怎么按作者的进行mmcv安装呀?还望指教下 谢谢

先找到对应版本的mmcv,去open-mmlab/mmcv 下git clone,然后把作者的runner_kd.py 拷到mmcv下,再运行官方的编译命令安装mmcv:pip install -e . 可以参考一下这里的从源安装的教程 mmcv v0.5.6

@shuizaola
Copy link

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

你好 我想问下,怎么在MMCV目录进行编译呢 还是个小白 怎么按作者的进行mmcv安装呀?还望指教下 谢谢

先找到对应版本的mmcv,去open-mmlab/mmcv 下git clone,然后把作者的runner_kd.py 拷到mmcv下,再运行官方的编译命令安装mmcv:pip install -e . 可以参考一下这里的从源安装的教程 mmcv v0.5.6

谢谢你的回复 我按你的方法安好了 但是现在又报了这种错误
raceback (most recent call last):
File "tools/train.py", line 176, in
main()
File "tools/train.py", line 71, in main
cfg = Config.fromfile(args.config)
File "/home/Disk-2T/DeFeat.pytorch-main/mmcv/utils/config.py", line 165, in fromfile
cfg_dict, cfg_text = Config._file2dict(filename)
File "/home/Disk-2T/DeFeat.pytorch-main/mmcv/utils/config.py", line 84, in _file2dict
filename = osp.abspath(osp.expanduser(filename))
File "/home/caipeng/anaconda3/envs/ENV/lib/python3.7/posixpath.py", line 235, in expanduser
path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not NoneType

@1757525671
Copy link

最近仔细看了下您的代码,有几个问题想咨询一下。

  1. 我看到您在其他issue里面说分类结果的蒸馏是在代码里没有用到,因为提升特别小。但是论文中的table 5应该就是专门对分类部分的蒸馏做了实验,论文中实验证明能够提高student模型1.5个点左右。那对分类部分进行蒸馏效果究竟如何呢?还是说分类头蒸馏对参数特别敏感?
  2. 对于特征kd loss,您采用了decouple的方式来分别计算前背景损失。训练过程中,特征kd loss的值(无论是前景还是背景)都比gt loss (包括loss_rpn_cls, loss_rpn_bbox和loss_cls)大很多,甚至高一到两个数量级,这样不会导致模型更倾向于去侧重于降低losskd而忽略了gt损失吗?
  3. 对于前背景kd loss,您代码中是设置了3和12两个不同的权重,请问前背景的kd loss权重设置有什么讲究吗?

感谢您的回答。 @ggjy

  1. table 5 是ROI损失(使用教师网的proposal在教师网和学生网的rpn特征crop获取ROI,然后再蒸馏两个ROI的分类score),不是检测头损失;
  2. 第二个问题不清楚;
  3. 对于第三个问题,效果最好的正负样本的比例不是0.05:2么,所以设置了3:12吧;

@tongchangD
Copy link

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

您好,冒昧打扰,请问,您说的进行作者自带的mmcv目录进行编译,请问在此处的编译命令是什么

@yuhua666
Copy link

yuhua666 commented Feb 9, 2023

您好,非常感谢您开源您的代码。 我在配置完环境之后发现会报错:ImportError: cannot import name 'Runner_kd' from 'mmcv.runner'。我看到您说从source编译mmcv即可解决这个问题,请问什么是从source编译mmcv?不是指直接运行 python setup.py develop吗?还望指教,谢谢!

安装mmcv的时候不要用mmlab官方的mmcv,用作者自带的mmcv进行安装(clone之后进入mmcv目录编译就行),安装完之后pip list 可以看到mmcv库的location是xxxx/DeFeat.pytorch/mmcv,保证你当前环境运行的mmcv是作者带的,应该就没问题了

请问进入mmcv目录编译具体是怎么个操作,作者自带的mmcv没有setup.py文件啊?...我第一次用mmdetection,不是很明白。或者能不能来个傻瓜版的步骤,谢谢。

我仔细看了一下我的,我是找了mmdetv2.0版本对应的mmcv(我用的0.5.6亲测可行),然后把作者的runner_kd.py复制到mmcv/runner下,复制好之后删除了作者自带的mmcv,再按mmlab官方的从源编译python setup.py develop,亲测可行。还有你那个“TypeError:conv2d()的问题,你是几卡运行?

您好,为什么我按这个步骤还是报原先的错误?
ImportError: cannot import name 'Runner_kd' from 'mmcv.runner' (/root/miniconda3/lib/python3.8/site-packages/mmcv/runner/init.py)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants