frh23333 / mepu-owod

Code Implementation of "Unsupervised Recognition of Unknown Objects for Open-World Object Detection"
26 stars 2 forks source link

MEPU-OWOD

Code Implementation of "Unsupervised Recognition of Unknown Objects for Open-World Object Detection" (arXiv 2308.16527)

Introduction

Our Key Technique: Reconstruction Error-based Weibull modeling (REW)

Update

The pre-trained SOCO backbone, pre-computed proposals and trained weight of MEPU can be downloaded from GoogleDrive.

Dataset Preparation

Please first download the MS COCO dataset and the directory structure should be like:

mepu-owod/
└── datasets/
    └── coco/
        ├── annotations/
        ├── train2017/
        └── val2017/

Prepare dataset for S-OWOD:

sh prepare_dataset.sh

The training dataset for S-OWODB and M-OWODB should be like:

mepu-owod/
└── datasets/
    └── mowod/
        ├── Annotations/
        ├── ImageSets/
        └── JPEGImages/
    └── sowod/
        ├── Annotations/
        ├── ImageSets/
        └── JPEGImages/

Installation

conda create -n mepu python=3.8
conda activate mepu
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=10.2 -c pytorch

git clone https://github.com/facebookresearch/detectron2.git
cd detectron2
pip install -e . 
cd .. 
pip install -r requirements.txt

Training and Testing

Unsupervised pretraining of REW:

sh script/train_rew.sh

Train MEPU on the S-OWOD benchmark:

sh script/train_mepu_fs.sh

Evaluate MEPU on the S-OWOD benchmark:

sh script/eval_owod.sh

Results

Task1 Task2 Task3 Task4
Method U-Recall mAP U-Recall mAP U-Recall mAP mAP
ORE-EBUI 1.5 61.4 3.9 40.6 3.6 33.7 31.8
OW-DETR 5.7 71.5 6.2 43.8 6.9 38.5 33.1
PROB 17.6 73.5 22.3 50.4 24.8 42.0 39.9
CAT 24.0 74.2 23.0 50.7 24.6 45.0 42.8
MEPU-FS (Ours) 37.9 74.3 35.8 54.3 35.7 46.2 41.2
MEPU-SS (Ours) 33.3 74.2 34.2 53.6 33.6 45.8 40.8