MMDetection-based Toolbox for Semi-Supervised Object Detection
Supported algorithms
- STAC:A Simple Semi-Supervised Learning Framework for Object Detection [Arxiv'20]
- Unbiased Teacher:Unbiased Teacher for Semi-Supervised Object Detection [ICLR'21]
- Soft Teacher:End-to-End Semi-Supervised Object Detection with Soft Teacher [ICCV'21]
- LabelMatch:Label Matching Semi-Supervised Object Detection [CVPR'22]
Preparation
Prerequisites
pip install -r requirements.txt
- Linux with Python >= 3.6
- We use mmdet=2.10.0, pytorch=1.6.0
Data Preparation
Please refer to prepare_data.md.
Usage
Training
1. Use labeled data to train a baseline
Before training,please download the pretrained backbone (resnet50) to pretrained_model/backbone
.
# |---------------------|--------|------|---------|---------|
# | xonsh train_gpu2.sh | config | seed | percent | dataset |
# |---------------------|--------|------|---------|---------|
cd examples/train/xonsh
## ---dataset: coco-standard---
xonsh train_gpu2.sh ./configs/baseline/baseline_ssod.py 1 1 coco-standard
## ---dataset: voc---
# xonsh train_gpu2.sh ./configs/baseline/baseline_ssod.py 1 1 voc
## ---dataset: coco-additional---
# xonsh train_gpu8.sh ./configs/baseline/baseline_ssod.py 1 1 coco-additional
-
In our implementation, we use 2-gpus to train except coco-additional.
-
After training, we organize the pretrained baseline to
pretrained_model/baseline
as follows:pretrained_model/ └── baseline/ ├── instances_train2017.1@1.pth ├── instances_train2017.1@5.pth ├── ... ├── voc.pth └── coco.pth
- You can also change the
load_from
information inconfig
file in step 2.
- You can also change the
2. Use labeled data + unlabeled data to train detector
## note: dataset is set to none in this step.
cd examples/train/xonsh
xonsh train_gpu8.sh ./configs/labelmatch/labelmatch_standard.py 1 1 none
- In our implementation, we use 8-gpus to train.
- You can also run
bash train_ssod.sh
inexamples/train/bash
Evaluation
# please change "config" and "checkpoint" in 'eval.sh' scripts to support different dataset and trained model
cd examples/eval
xonsh eval.sh
Performance
LabelMatch
Model | Supervision | AP | Config | Model Weights |
---|---|---|---|---|
R50-FPN | 1% | 25.81±0.28 | labelmatch_standard_paper | labelmatch-1-1-40k |
R50-FPN | 5% | 32.70±0.18 | labelmatch_standard_paper | labelmatch-1-5-40k |
R50-FPN | 10% | 35.49±0.17 | labelmatch_standard_paper | labelmatch-1-10-40k |
- Please refer to performance.md for more performance presentation.
Extension to Domain adaptive object detection
Please refer to UDA
Citation
If you use LabelMatch in your research or wish to refer to the results published in the paper, please consider citing out paper.
@inproceedings{Chen2022LabelMatching,
title={Label Matching Semi-Supervised Object Detection},
author={Binbin Chen, Weijie Chen, Shicai Yang, Yunyi Xuan, JieSong, Di Xie, Shiliang Pu, Mingli Song, Yueting Zhuang.},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
year={2022},
}
License
This project is released under the Apache 2.0 license. Other codes from open source repository follows the original distributive licenses.
Acknowledgement
If you have any problem about this work, please feel free to contact Binbin Chen (chenbinbin8-at-hikvision.com) and Weijie Chen (chenweijie5-at-hikvision.com).