/PseCo

An official implementation of the PseCo (ECCV2022)

Primary LanguagePythonApache License 2.0Apache-2.0

PseCo (ECCV 2022)

arXiv visitors PWC PWC PWC

PseCo: Pseudo Labeling and Consistency Training for Semi-Supervised Object Detection

Gang Li, Xiang Li, Yujie Wang, Yichao Wu, Ding Liang, Shanshan Zhang.

This repo is the official implementation of ECCV2022 paper "PseCo: Pseudo Labeling and Consistency Training for Semi-Supervised Object Detection". PseCo delves into two key techniques of semi-supervised learning (e.g., pseudo labeling and consistency training) for SSOD, and integrate object detection properties into them.

🧪Main Results

Partial Labeled Data

Following the common practice, all experimental results are averaged on 5 different data folds.

1% labeled data

Method mAP Model Weights
Supervised Baseline 12.20 -
PseCo 22.43 BaiduYun,Google Drive

2% labeled data

Method mAP Model Weights
Supervised Baseline 16.53 -
PseCo 27.77 BaiduYun,Google Drive

5% labeled data

Method mAP Model Weights
Supervised Baseline 21.17 -
PseCo 32.50 BaiduYun,Google Drive

10% labeled data

Method mAP Model Weights
Supervised Baseline 26.90 -
PseCo 36.06 BaiduYun,Google Drive

Full Labeled Data

Method mAP Model Weights
Supervised Baseline 41.0 -
PseCo 46.1 BaiduYun,Google Drive

➡️Usage

Since this repo is built on the Soft Teacher, some setup instructions are cloned from it.

Requirements

  • Ubuntu 16.04
  • Anaconda3 with python=3.6
  • Pytorch=1.9.0
  • mmdetection=2.16.0+fe46ffe
  • mmcv=1.3.9

Installation

pip install -r requirements.txt
cd thirdparty/mmdetection && pip install -e .
cd ../.. && pip install -e .

Data Preparation

  • Download the COCO dataset
  • Execute the following command to generate data set splits:
# YOUR_DATA should be a directory contains coco dataset.
# For eg.:
# YOUR_DATA/
#  coco/
#     train2017/
#     val2017/
#     unlabeled2017/
#     annotations/
ln -s ${YOUR_DATA} data
bash tools/dataset/prepare_coco_data.sh conduct

For concrete instructions of what should be downloaded, please refer to tools/dataset/prepare_coco_data.sh line 11-24

Training

  • To train model on the partial labeled data setting:

For 5% and 10% labelling ratios:

bash tools/dist_train_partially_labeled.sh

While for 1% and 2% labelling ratios, half of training iterations are enough:

bash tools/dist_train_partially_labeled_90k_iter.sh
  • To train model on the full labeled data setting:
bash tools/dist_train_fully_labeled.sh 

All experiments are trained on 8 GPUs by default.

Evaluation

bash tools/test.sh

Please specify your config and checkpoint path in the tools/test.sh.

🧱To-do List

  • Release PseCo codes.
  • Apply PseCo to the one-stage detector.
  • Release codes of our latest semi-supervised object detection method: DTG.

👍Acknowledgement

We would like to thank the authors of Soft Teacher and mmdetection.

✏️Citation

Consider cite PseCo in your publication if it helps your research.

@article{li2022pseco,
  title={PseCo: Pseudo Labeling and Consistency Training for Semi-Supervised Object Detection},
  author={Li, Gang and Li, Xiang and Wang, Yujie and Zhang, Shanshan and Wu, Yichao and Liang, Ding},
  journal={arXiv preprint arXiv:2203.16317},
  year={2022}
}