DINO 目标检测模型环境部署教程 (避坑指南:Python 3.7 + PyTorch 1.12)
前言
最近在 AutoDL 云服务器上复现 DINO (DETR with Improved DeNoising Anchor Boxes) 模型,官方教程比较久远,在实际部署过程中踩了不少坑(内存溢出、网络超时、版本不兼容、CUDA 编译报错等)。
经过多次尝试,总结出了一套最稳、最快的安装流程。本教程基于 Python 3.7 + PyTorch 1.12.1 环境,完美解决所有兼容性问题。
0. 准备工作
- 平台:AutoDL
- 基础镜像:Miniconda / Python 3.8/CUDA 11.8 (我们后续会自己建环境)
1. 创建纯净环境
DINO 官方推荐 Python 3.7,实测这是坑最少的版本(避开了 NumPy 2.0 和新版 PyTorch API 变动的问题)。
# 1. 初始化 Conda (如果是新开的实例)
conda init bash
source ~/.bashrc
# 2. 创建 Python 3.7 环境
conda create -n A-DETR python=3.7 -y
# 3. 激活环境
conda activate A-DETR
小技巧:如果想每次打开终端自动进入该环境,可以执行:
echo "conda activate A-DETR" >> ~/.bashrc
source ~/.bashrc
2. 下载代码与网络加速
AutoDL 访问 GitHub 较慢,建议开启学术加速。
# 开启学术加速
source /etc/network_turbo
# 克隆项目
git clone https://github.com/IDEA-Research/DINO.git
cd DINO
3. 安装 PyTorch (核心避坑点)
坑点:AutoDL 无卡模式启动内存只有 2GB,直接 pip install 大文件(如 PyTorch)会导致内存溢出进程被杀(Killed)。
解决:要大内存,开机就行,不要无卡模式
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116
4. 安装依赖包
这里有几个包需要特殊处理,直接运行 requirements.txt 会报错。
4.1 安装特殊包
- panopticapi:国内镜像源里没有,必须从 GitHub 源码安装。
- safetensors:新版本不支持 Python 3.7,必须指定旧版本。
# 保持加速开启状态
pip install git+https://github.com/cocodataset/panopticapi.git
pip install safetensors==0.4.5
4.2 安装剩余依赖
修改项目自带的 requirements.txt,防止版本冲突。
建议将 requirements.txt 内容清空,替换为以下纯净版:
cython
pycocotools
submitit
# torch (已单独安装)
# torchvision (已单独安装)
# panopticapi (已单独安装)
scipy
termcolor
addict
yapf
timm
然后执行安装:
pip install -r requirements.txt
5. 编译 CUDA 加速算子 (MultiScaleDeformableAttention)
这是 DINO 的核心部分。
cd models/dino/ops
python setup.py build install
关于编译时的 Warning
如果你使用的是 PyTorch 1.12,编译过程中会看到很多红色的 Warning:
warning: ‘at::DeprecatedTypeProperties& at::Tensor::type() const’ is deprecated...
不要慌! 这是因为 DINO 代码用了旧版 API value.type(),在 1.12 中只是警告,不影响编译和运行。
- 只要最后显示
Finished processing dependencies for MultiScaleDeformableAttention==1.0,就是成功了。 - 注:如果你非要用 PyTorch 2.0+,则必须手动修改源码将
value.type()改为value.scalar_type(),否则会报错退出。
6. 验证环境
回到项目根目录,运行帮助命令:
cd ../../..
python main.py --help
如果输出了参数列表(usage: main.py …),说明环境搭建大功告成!
总结
- 环境:Python 3.7
- 内存:
- 依赖:
panopticapi需源码装,safetensors要降级。 - 编译:PyTorch 1.12 可以忽略 API 弃用警告,直接编译通过。
希望这篇笔记能帮大家节省时间,One Run Success!
如有其他建议和意见,欢迎交流
更多推荐



所有评论(0)