DeformableDETR官方代码Linux系统环境配置
·
博主在一台Linux系统服务器上安装DeformableDETR,过程报错很多,这里总结一下。服务器GPU:RTX 4090(Ampere架构),驱动支持:CUDA 12.2,我选择的PyTorch 为 CUDA 12.1 版本,以下是完整的安装流程,包含所有 10 个步骤:
-
创建并激活 Conda 环境
这一步创建一个新的 Python 3.9 环境,确保隔离依赖。- 执行命令:
conda create -n deformable_detr1 python=3.9 -y - 激活环境:
conda activate deformable_detr1
- 执行命令:
-
安装 PyTorch 及相关组件(CUDA 12.1)
确保 PyTorch 版本与指定 CUDA 版本兼容。- 执行命令:
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121
- 执行命令:
-
降级 NumPy 以防止兼容性问题
避免 NumPy 2.x 可能带来的版本冲突。- 执行命令:
pip install "numpy<2"
- 执行命令:
-
安装基础编译工具和依赖
安装所需依赖:ninja、cython 等,用于编译和运行时支持(包含官方requirement.txt中所需的依赖)。- 执行命令:
pip install ninja cython scipy opencv-python pillow matplotlib tqdm pycocotools
- 执行命令:
-
安装 CUDA 运行时和 nvcc 工具
注:这一步可能未包含所有头文件,需要额外安装。- 执行命令:
conda install nvidia::cuda-nvcc nvidia::cudatoolkit -y
- 执行命令:
-
单独安装必需的头文件
- 执行命令:
conda install nvidia/label/cuda-12.1.0::libcusparse-dev conda install nvidia/label/cuda-12.1.0::libcublas-dev conda install nvidia/label/cuda-12.1.0::libcusolver-dev conda install libxcrypt conda install nvidia/label/cuda-12.1.0::cuda-cudart-dev这些解决常见编译错误,如头文件缺失。
- 执行命令:
-
安装 CCCL 头文件(关键步骤)
- 下载和解压缩:
wget https://codeload.github.com/NVIDIA/cccl/zip/refs/heads/main -O /tmp/cccl.zip unzip -q /tmp/cccl.zip -d /tmp/ - 复制头文件:
cp -r /tmp/cccl-main/libcudacxx/include/nv $CONDA_PREFIX/include/ cp -r /tmp/cccl-main/thrust/thrust $CONDA_PREFIX/include/ cp -r /tmp/cccl-main/cub/cub $CONDA_PREFIX/include/ # 可选,推荐 cp -r /tmp/cccl-main/libcudacxx/include/cuda $CONDA_PREFIX/include/ - 清理临时文件:
rm -rf /tmp/cccl.zip /tmp/cccl-main
- 下载和解压缩:
-
解决链接器找不到
注:如果驱动错误(如“CUDA driver version is insufficient”),检查-lcudart问题nvidia-smi确保驱动版本 ≥ CUDA 版本(本例中驱动 535 支持 CUDA 12.2,但需匹配 PyTorch 自带的库)。- 执行命令,假设第一行指令找到的为libcudart-9335f6a2.so.12,否则对应替换第二行指令的操作对象:
ls $CONDA_PREFIX/lib/python3.9/site-packages/torch/lib/libcudart* ln -sf $CONDA_PREFIX/lib/python3.9/site-packages/torch/lib/libcudart-9335f6a2.so.12 $CONDA_PREFIX/lib/libcudart.so
- 执行命令,假设第一行指令找到的为libcudart-9335f6a2.so.12,否则对应替换第二行指令的操作对象:
-
编译并安装 CUDA 扩展
- 切换目录:
cd ~/Deformable-DETR-main/models/ops - 执行编译脚本:
sh ./make.sh - 验证:
python test.py。期望输出全部 True,检查前向传播和梯度。若出错,复查 CUDA 库链接。
- 切换目录:
-
修复模型脚本导入错误
- 修复
misc.py:编辑文件~/Deformable-DETR-main/util/misc.py,将指定导入“from torchvision.ops.misc import _NewEmptyTensorOp”替换为:try: from torchvision.ops.misc import _NewEmptyTensorOp except ImportError: # 兼容较新 torchvision 版本 (>=0.18) def _NewEmptyTensorOp(*args, **kwargs): return torch.empty(*args, **kwargs)
- 修复
安装完成,建议使用 from models.ops.modules import MSDeformAttn,并将所有代码放在 ~/Deformable-DETR-main/ 目录下以符合规范。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)