MIMDet 开源项目使用教程
1. 项目介绍
MIMDet(Masked Image Modeling for Detection)是一个基于Masked Image Modeling(MIM)预训练的Vanilla Vision Transformer(ViT)框架,用于高性能的目标检测和实例分割。该项目由华中科技大学(HUST)和腾讯PCG ARC Lab联合开发,并在ICCV 2023上发表。
MIMDet的核心思想是通过MIM预训练的ViT编码器,在仅使用部分输入嵌入(如25%~50%)的情况下,实现高精度的目标检测和实例分割。项目中使用了一个随机初始化的紧凑型卷积主干来替代预训练的大核补丁主干,从而构建多尺度表示,适用于目标检测任务。
2. 项目快速启动
2.1 环境准备
首先,确保你的系统满足以下要求:
- Linux
- Python 3.7+
- CUDA 10.2+
- GCC 5+
2.2 安装依赖
-
克隆项目仓库:
git clone https://github.com/hustvl/MIMDet.git cd MIMDet
-
创建并激活conda虚拟环境:
conda create -n mimdet python=3.9 conda activate mimdet
-
安装PyTorch和torchvision:
pip install torch==1.9.0 torchvision==0.10.0
-
安装Detectron2:
pip install 'git+https://github.com/facebookresearch/detectron2.git'
-
安装timm和einops:
pip install timm==0.4.12 einops
2.3 数据准备
按照Detectron2的文档准备COCO数据集,并确保数据集目录结构如下:
MIMDet
├── datasets
│ ├── coco
│ │ ├── annotations
│ │ ├── train2017
│ │ ├── val2017
│ │ ├── test2017
2.4 训练模型
使用以下命令进行单机训练:
python lazyconfig_train_net.py --config-file <CONFIG_FILE> --num-gpus <GPU_NUM> mae_checkpoint path=<MAE_MODEL_PATH>
2.5 模型推理
使用以下命令进行模型推理:
python lazyconfig_train_net.py --config-file <CONFIG_FILE> --num-gpus <GPU_NUM> --eval-only train.init_checkpoint=<MODEL_PATH>
3. 应用案例和最佳实践
3.1 目标检测
MIMDet在COCO数据集上展示了优异的目标检测性能。通过使用ViT-Base模型,MIMDet在COCO数据集上达到了51.7的box AP和46.2的mask AP。对于ViT-Large模型,MIMDet的性能进一步提升至54.3的box AP和48.2的mask AP。
3.2 实例分割
除了目标检测,MIMDet还支持实例分割任务。通过结合Mask R-CNN框架,MIMDet在实例分割任务上也表现出色,展示了其在多任务学习中的潜力。
4. 典型生态项目
4.1 Detectron2
MIMDet基于Facebook AI Research的Detectron2框架开发,Detectron2是一个广泛使用的目标检测和分割框架,提供了丰富的工具和模型。
4.2 MAE
MIMDet使用了MAE(Masked Autoencoders)进行预训练,MAE是一种自监督学习方法,通过掩码图像重建任务来预训练视觉模型。
4.3 timm
timm(PyTorch Image Models)是一个包含多种图像模型的库,MIMDet中使用了timm来加载和处理视觉Transformer模型。
通过以上模块的介绍和快速启动指南,你可以快速上手并使用MIMDet进行目标检测和实例分割任务。