/DenseSiam

[ECCV2022] Dense Siamese Network for Dense Unsupervised Learning

Primary LanguagePythonApache License 2.0Apache-2.0

Dense Siamese Network for Dense Unsupervised Learning

Introduction

This is an official release of the paper Dense Siamese Network for Dense Unsupervised Learning.

Dense Siamese Network for Dense Unsupervised Learning,
Wenwei Zhang, Jiangmiao Pang, Kai Chen, Chen Change Loy
In: Proc. European Conference on Computer Vision (ECCV), 2022
[arXiv][project page][Bibetex]

Results

Semantic segmentation on curated COCO stuff-thing dataset

The results of DenseSiam and their corresponding configs on unsupervised semantic segmentation task are shown as below. We also re-implemented PiCIE based on the official code release.

Backbone Method Lr Schd mIoU Config Download
R-18 PiCIE 10e 14.4 config model | log
R-18 DenseSiam 10e 16.4 config model | log

Unsupervised representation learning

Backbone Method Lr Schd COCO Mask mAP Config Pre-train Download
R-50 DenseSiam 1x 36.8 config model | log

Installation

It requires the following OpenMMLab packages:

  • MIM >= 0.1.5
  • MMCV-full >= v1.3.14
  • MMDetection
  • MMSegmentation
  • MMSelfSup
pip install openmim mmdet mmsegmentation mmselfsup
mim install mmcv-full

Usage

Data preparation

  • Download the training set and the validdation set of COCO dataset as well as the stuffthing map.
  • Unzip these data and place them as the following structure
  • The curated directory copies the data split for unsupervised segmentation from PiCIE.
data/
├── curated
│   ├── train2017
│   │   ├── Coco164kFull_Stuff_Coarse_7.txt
│   ├── val2017
│   │   ├── Coco164kFull_Stuff_Coarse_7.txt
├── coco
│   ├── annotations
│   │   ├── train2017
│   │   │   ├── xxxxxxxxx.png
│   │   ├── val2017
│   │   │   ├── xxxxxxxxx.png
│   ├── train2017
│   │   ├── xxxxxxxxx.jpeg
│   ├── val2017
│   │   ├── xxxxxxxxx.jpeg

Training and testing

For training and testing, you can directly use mim to train and test the model

# train instance/panoptic segmentation models
sh ./tools/slurm_train.sh $PARTITION $JOBNAME $CONFIG $WORK_DIR

# test semantic segmentation models
sh ./tools/slurm_test.sh $PARTITION $JOBNAME $CONFIG $CHECKPOINT --eval mIoU
  • PARTITION: the slurm partition you are using
  • WORK_DIR: the working directory to save configs, logs, and checkpoints
  • CONFIG: the config files under the directory configs/
  • JOBNAME: the name of the job that are necessary for slurm

Acknowledgement

This codebase is based on MMCV and it benefits a lot from PiCIE MMSelfSup, and Detectron2.

License

This project is released under the Apache 2.0 license.

Citation

@inproceedings{zhang2022densesiam,
author = {Wenwei Zhang and Jiangmiao Pang and Kai Chen and Chen Change Loy},
title = {Dense Siamese Network for Dense Unsupervised Learning},
year = {2022},
booktitle = {ECCV},
}