在 Ubuntu 上用 Python 3.8 + RTX 4090 安装 Detectron2 完整指南

Detectron2 是 Facebook AI Research 发布的下一代目标检测平台,支持 Faster R-CNN、Mask R-CNN 等主流检测/分割算法。本文总结了我在 Python 3.8.10 + RTX 4090 + CUDA 12.4 + PyTorch 2.1.2 环境下安装 Detectron2 的全过程,包括环境检测、安装步骤以及常见问题解决方案。

老 Faster R-CNN Detectron2
手写训练流程 Trainer 已封装
VOC 定制麻烦 COCO / VOC / 自定义都成熟
CUDA 版本敏感 高度兼容
已停止维护 Meta 官方维护

一、环境检测

在安装之前,我们需要确认硬件、CUDA、Python 和 PyTorch 版本。

1️⃣ GPU 与驱动

nvidia-smi

输出示例:

+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.54.10 Driver Version: 551.61 CUDA Version: 12.4 | | GPU Name Memory-Usage | | 0 NVIDIA GeForce RTX 4090 719MiB / 24564MiB | +-----------------------------------------------------------------------------------------+

GPU :RTX 4090

CUDA 驱动版本 :12.4

显存:24GB

2️⃣ CUDA 编译器

nvcc --version

示例输出:

Cuda compilation tools, release 12.4, V12.4.99

3️⃣ Python 版本

python -V

输出:

Python 3.8.10

创建虚拟环境(Python 3.8)

bash 复制代码
cd /mnt/d/develop
python3.8 -m venv d2env
source d2env/bin/activate

4️⃣ PyTorch 版本

安装 PyTorch 2.1.2 + CUDA 12.1:

bash 复制代码
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 \ --index-url https://download.pytorch.org/whl/cu121

验证:

bash 复制代码
python -c "import torch; print(torch.__version__); print(torch.version.cuda)"

输出:

bash 复制代码
2.1.2 12.1

✅ PyTorch 与 Detectron2 兼容。

⚠️ 注意:Detectron2 官方支持的最低稳定 PyTorch 版本为 2.0,2.1 属实验性,但通常在 CUDA 12.x 下可用。


二、安装 Detectron2

1️⃣ 安装前准备

先安装构建依赖:

bash 复制代码
pip install opencv-python pycocotools matplotlib tqdm
pip install --upgrade pip setuptools wheel pip install ninja

说明:

  • wheel:解决 invalid command 'bdist_wheel' 错误

  • ninja:加快 C++/CUDA 扩展编译速度

2️⃣ 克隆源码

git clone https://github.com/facebookresearch/detectron2.git cd detectron2

3️⃣ 安装(普通模式)

普通模式:

pip install .

✅ 推荐方法,如果不需要开发模式即可使用。

4️⃣ 安装(开发模式 editable)

如果希望修改源码并立即生效:

bash 复制代码
pip install -e . --no-build-isolation

常见问题及解决方案:

问题 解决方法
ModuleNotFoundError: No module named 'torch' 确保虚拟环境里已经安装 PyTorch,再用 --no-build-isolation
error: invalid command 'bdist_wheel' 安装 wheel:pip install --upgrade pip setuptools wheel
UserWarning: Attempted to use ninja ... 安装 ninja:pip install ninja

5️⃣ 验证安装

bash 复制代码
python -c "import detectron2; print(detectron2.__version__)"

如果输出版本号,说明 Detectron2 安装成功。

三、训练注意事项(A0 图纸 / VOC 数据集)

  1. 数据集切图

    • A0 图纸太大(8K~12K),需切成 patch

    • Patch 大小:2048~3072 px

    • Overlap ≥ 512 px,保证墙体、门窗完整

  2. Detectron2 配置示例

\configs\PascalVOC-Detection\faster_rcnn_R_50_FPN.yaml

bash 复制代码
_BASE_: "../Base-RCNN-FPN.yaml"
MODEL:
  WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
  MASK_ON: False
  RESNETS:
    DEPTH: 50
  ROI_HEADS:
    NUM_CLASSES: 36
INPUT:
  MIN_SIZE_TRAIN: (480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800)
  MIN_SIZE_TEST: 800
DATASETS:
  TRAIN: ('voc_2007_trainval',)
  TEST: ('voc_2007_test',)
SOLVER:
  STEPS: (12000, 16000)
  MAX_ITER: 10000  # 17.4 epochs
  WARMUP_ITERS: 100
  • 单元素元组必须加逗号 (...)

  • MAX_ITER 是迭代步数,每步处理 IMS_PER_BATCH 张图

训练迭代计算

  • 数据集 100 张图,IMS_PER_BATCH = 2MAX_ITER = 10000

  • 每个 epoch ≈ 100 / 2 = 50 iterations

  • 总训练轮数 ≈ 10000 / 50 ≈ 200 epochs

  • 每张图训练次数 = (MAX_ITER × IMS_PER_BATCH) / 数据集大小 = 20000 / 100 = 200 次

3️⃣ backbone 预训练权重

  • R-50.pkl:ResNet-50 ImageNet 预训练

  • 作用:加速收敛,提高精度

  • 可选:从零训练 cfg.MODEL.WEIGHTS = ""

数据集:

最终目录结构应为:

bash 复制代码
datasets/
└── VOCdevkit/
    └── VOC2007/
        ├── Annotations
        ├── ImageSets
        ├── JPEGImages

注册 VOC 数据集(Detectron2)

Detectron2 已经内置 VOC 注册逻辑,只需要环境变量或路径正确即可。

bash 复制代码
export DETECTRON2_DATASETS=/mnt/d/develop/datasets

四、总结

  • 环境:Python 3.8.10 + CUDA 12.4 + RTX 4090 + PyTorch 2.1.2

  • Detectron2 安装可行 ✅

  • 常见问题及解决方案总结:

    1. ModuleNotFoundError: No module named 'torch' → 先装 PyTorch + --no-build-isolation

    2. bdist_wheel 错误 → 安装 wheel

    3. ninja 警告 → 安装 ninja

  • 自定义分类个数

更改自己的分类:

训练脚本:

python 复制代码
python tools/train_net.py   --config-file configs/PascalVOC-Detection/faster_rcnn_R_50_FPN.yaml   --num-gpus 1   OUTPUT_DIR output/voc07

代表开始推理了:

评估 VOC 2007 mAP

bash 复制代码
python tools/train_net.py \
  --config-file configs/PascalVOC-Detection/faster_rcnn_R_50_FPN.yaml \
  --num-gpus 1 \
  --eval-only \
  MODEL.WEIGHTS output/voc07/model_final.pth

bbox/AP50: 0.78
bbox/AP:   0.51

VOC 2007 的主指标是 mAP@0.5
相关推荐
2501_9361460410 小时前
工业零件视觉识别与定位系统_基于cascade-rcnn的实现
人工智能·深度学习·计算机视觉
龙山云仓10 小时前
No:119:莎士比亚&AI:智能的语言创造、心理戏剧与人性图谱
人工智能·microsoft
9号达人10 小时前
AI最大的改变可能不是写代码而是搜索
java·人工智能·后端
oioihoii10 小时前
AI 技能工程入门:从独立能力到协作生态
人工智能
羊羊小栈10 小时前
基于YOLO和多模态大语言模型的智能电梯安全监控预警系统(vue+flask+AI算法)
人工智能·yolo·语言模型·毕业设计·创业创新·大作业
两万五千个小时10 小时前
Claude Code 中的子 Agent 派生实现:Task Tool 完全指南
人工智能·python
摆烂咸鱼~10 小时前
机器学习(12)
人工智能·机器学习
数字冰雹10 小时前
AI 训练数据瓶颈破局:合成数据 赋能国防智能化
人工智能
liu****10 小时前
机器学习-特征降维
人工智能·python·机器学习·python基础·特征降维