问题描述:
运行CenterNet官方代码实现检测功能的demo,在最后一步执行下面指令的时候遇到问题。
python demo.py ctdet --demo /path/to/image/or/folder/or/video --load_model ../models/ctdet_coco_dla_2x.pth
报错如下:
Traceback (most recent call last):
File "demo.py", line 11, in <module>
from detectors.detector_factory import detector_factory
File "/public/LY/CenterNet-master/src/lib/detectors/detector_factory.py", line 5, in <module>
from .exdet import ExdetDetector
File "/public/LY/CenterNet-master/src/lib/detectors/exdet.py", line 21, in <module>
from .base_detector import BaseDetector
File "/public/LY/CenterNet-master/src/lib/detectors/base_detector.py", line 11, in <module>
from models.model import create_model, load_model
File "/public/LY/CenterNet-master/src/lib/models/model.py", line 12, in <module>
from .networks.pose_dla_dcn import get_pose_net as get_dla_dcn
File "/public/LY/CenterNet-master/src/lib/models/networks/pose_dla_dcn.py", line 16, in <module>
from .DCNv2.dcn_v2 import DCN
File "/public/LY/CenterNet-master/src/lib/models/networks/DCNv2/dcn_v2.py", line 11, in <module>
from .dcn_v2_func import DCNv2Function
File "/public/LY/CenterNet-master/src/lib/models/networks/DCNv2/dcn_v2_func.py", line 9, in <module>
from ._ext import dcn_v2 as _backend
File "/public/LY/CenterNet-master/src/lib/models/networks/DCNv2/_ext/dcn_v2/__init__.py", line 3, in <module>
from ._dcn_v2 import lib as _lib, ffi as _ffi
ImportError: /public/LY/CenterNet-master/src/lib/models/networks/DCNv2/_ext/dcn_v2/_dcn_v2.so: undefined symbol: __cudaRegisterFatBinaryEnd
原因分析:
出现undefined symbol: __cudaRegisterFatBinaryEnd的主要原因在于当前cuda的版本与pytorch-0.4.1不匹配,因此要么更改cuda的版本,要么改变pytorch的版本。
解决方案:
考虑到改变pytorch版本会导致部分已被新版本弃置的函数不可用,选择更新cuda版本到相匹配的9.2版本,执行以下指令:
conda install pytorch=0.4.1 cuda92 -c pytorch
即可解决问题。