在Google Colab运行Yolact++失败,编译DCNv2遇THC.h缺失问题
解决Yolact++在Google Colab编译DCNv2时的
THC/THC.h缺失错误 问题原因
THC/THC.h是旧版PyTorch(1.7及更早)的CUDA头文件,PyTorch 1.8+已将THC模块整合到torch/csrc/cuda路径下,不再保留独立的THC目录。而Yolact仓库自带的external/DCNv2版本较旧,硬编码引用了旧路径,导致与你安装的PyTorch 1.11不兼容,出现编译失败。
解决方案
方案1:降级到兼容的PyTorch版本
安装仍保留THC头文件的PyTorch 1.7.1+cu110,适配原有DCNv2:
# 卸载现有PyTorch !pip uninstall -y torch torchvision torchaudio # 安装兼容版本 !pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html # 克隆Yolact仓库(若已克隆可跳过) !git clone https://github.com/dbolya/yolact.git # 编译DCNv2 %cd yolact/external/DCNv2 !python setup.py build develop
方案2:替换为适配新版PyTorch的DCNv2分支
直接替换旧版DCNv2为兼容PyTorch 1.8+的版本:
# 进入Yolact的external目录 %cd /content/yolact/external # 删除旧DCNv2文件夹 !rm -rf DCNv2 # 克隆兼容新版PyTorch的DCNv2 !git clone https://github.com/CharlesShang/DCNv2.git # 编译 %cd DCNv2 !python setup.py build develop
方案3:手动修改头文件引用
无需更换版本,直接修改DCNv2代码适配新路径:
- 打开
/content/yolact/external/DCNv2/src/cuda/dcn_v2_cuda.cu,将第7行的#include <THC/THC.h>替换为:
#include <torch/csrc/cuda/THC/THC.h>
- 对
/content/yolact/external/DCNv2/src/cpu/dcn_v2_cpu.cpp中所有THC相关引用做同样路径替换 - 重新编译:
%cd /content/yolact/external/DCNv2 !python setup.py build develop
优先推荐方案1或2,避免手动修改代码的潜在问题。
内容的提问来源于stack exchange,提问作者Dev Br
相关产品推荐
相关产品推荐

