README.md 6.59 KB
Newer Older
pangjm's avatar
pangjm committed
1

WXinlong's avatar
WXinlong committed
2
# SOLO: Segmenting Objects by Locations
Kai Chen's avatar
Kai Chen committed
3

WXinlong's avatar
WXinlong committed
4
This project hosts the code for implementing the SOLO algorithms for instance segmentation.
Dahua Lin's avatar
Dahua Lin committed
5

WXinlong's avatar
WXinlong committed
6
7
8
> [**SOLO: Segmenting Objects by Locations**](https://arxiv.org/abs/1912.04488),            
> Xinlong Wang, Tao Kong, Chunhua Shen, Yuning Jiang, Lei Li        
> *arXiv preprint ([arXiv 1912.04488](https://arxiv.org/abs/1912.04488))*   
Kai Chen's avatar
Kai Chen committed
9

Dahua Lin's avatar
Dahua Lin committed
10

WXinlong's avatar
WXinlong committed
11
12
13
> [**SOLOv2: Dynamic, Faster and Stronger**](https://arxiv.org/abs/2003.10152),            
> Xinlong Wang, Rufeng Zhang, Tao Kong, Lei Li, Chunhua Shen        
> *arXiv preprint ([arXiv 2003.10152](https://arxiv.org/abs/2003.10152))*  
Kai Chen's avatar
Kai Chen committed
14

WXinlong's avatar
WXinlong committed
15
More code and models will be released soon. Stay tuned.
Dahua Lin's avatar
Dahua Lin committed
16

Kai Chen's avatar
Kai Chen committed
17

WXinlong's avatar
WXinlong committed
18
19
20
## Highlights
- **Totally box-free:**  SOLO is totally box-free thus not being restricted by (anchor) box locations and scales, and naturally benefits from the inherent advantages of FCNs.
- **Direct instance segmentation:** Our method takes an image as input, directly outputs instance masks and corresponding class probabilities, in a fully convolutional, box-free and grouping-free paradigm.
WXinlong's avatar
WXinlong committed
21
- **High-quality mask prediction:** SOLOv2 is able to predict fine and detailed masks, especially at object boundaries.
WXinlong's avatar
WXinlong committed
22
- **State-of-the-art performance:** Our best single model based on ResNet-101 and deformable convolutions achieves **41.7%** in AP on COCO test-dev (without multi-scale testing). A light-weight version of SOLOv2 executes at **31.3** FPS on a single V100 GPU and yields **37.1%** AP.
Dahua Lin's avatar
Dahua Lin committed
23

WXinlong's avatar
WXinlong committed
24
## Updates
WXinlong's avatar
WXinlong committed
25
   - SOLOv2 is available. Code and trained models of SOLOv2 are released. (08/07/2020)
Xinlong Wang's avatar
Xinlong Wang committed
26
   - Light-weight models and R101-based models are available. (31/03/2020) 
WXinlong's avatar
WXinlong committed
27
   - SOLOv1 is available. Code and trained models of SOLO and Decoupled SOLO are released. (28/03/2020)
Kai Chen's avatar
Kai Chen committed
28
29


Kai Chen's avatar
Kai Chen committed
30
## Installation
WXinlong's avatar
WXinlong committed
31
This implementation is based on [mmdetection](https://github.com/open-mmlab/mmdetection)(v1.0.0). Please refer to [INSTALL.md](docs/INSTALL.md) for installation and dataset preparation.
Kai Chen's avatar
Kai Chen committed
32

WXinlong's avatar
WXinlong committed
33
34
## Models
For your convenience, we provide the following trained models on COCO (more models are coming soon).
Kai Chen's avatar
Kai Chen committed
35

WXinlong's avatar
WXinlong committed
36
37
Model | Multi-scale training | Testing time / im | AP (minival) | Link
--- |:---:|:---:|:---:|:---:
Xinlong Wang's avatar
Xinlong Wang committed
38
39
40
41
42
43
SOLO_R50_1x | No | 77ms | 32.9 | [download](https://cloudstor.aarnet.edu.au/plus/s/nTOgDldI4dvDrPs/download)
SOLO_R50_3x | Yes | 77ms |  35.8 | [download](https://cloudstor.aarnet.edu.au/plus/s/x4Fb4XQ0OmkBvaQ/download)
SOLO_R101_3x | Yes | 86ms |  37.1 | [download](https://cloudstor.aarnet.edu.au/plus/s/WxOFQzHhhKQGxDG/download)
Decoupled_SOLO_R50_1x | No | 85ms | 33.9 | [download](https://cloudstor.aarnet.edu.au/plus/s/RcQyLrZQeeS6JIy/download)
Decoupled_SOLO_R50_3x | Yes | 85ms | 36.4 | [download](https://cloudstor.aarnet.edu.au/plus/s/dXz11J672ax0Z1Q/download)
Decoupled_SOLO_R101_3x | Yes | 92ms | 37.9 | [download](https://cloudstor.aarnet.edu.au/plus/s/BRhKBimVmdFDI9o/download)
WXinlong's avatar
WXinlong committed
44
45
46
47
48
SOLOv2_R50_1x | No | 54ms | 34.8 | [download](https://cloudstor.aarnet.edu.au/plus/s/DvjgeaPCarKZoVL/download)
SOLOv2_R50_3x | Yes | 54ms | 37.5 | [download](https://cloudstor.aarnet.edu.au/plus/s/nkxN1FipqkbfoKX/download)
SOLOv2_R101_3x | Yes | 63ms | 38.8 | [download]()
SOLOv2_R101_DCN_3x | Yes | 97ms | 41.4 | [download](https://cloudstor.aarnet.edu.au/plus/s/4ePTr9mQeOpw0RZ/download)
SOLOv2_X101_DCN_3x | Yes | 169ms | 42.4 | [download](https://cloudstor.aarnet.edu.au/plus/s/KV9PevGeV8r4Tzj/download)
Xinlong Wang's avatar
Xinlong Wang committed
49
50
51
52
53

**Light-weight models:**

Model | Multi-scale training | Testing time / im | AP (minival) | Link
--- |:---:|:---:|:---:|:---:
Xinlong Wang's avatar
Xinlong Wang committed
54
55
Decoupled_SOLO_Light_R50_3x | Yes | 29ms | 33.0 | [download](https://cloudstor.aarnet.edu.au/plus/s/d0zuZgCnAjeYvod/download)
Decoupled_SOLO_Light_DCN_R50_3x | Yes | 36ms | 35.0 | [download](https://cloudstor.aarnet.edu.au/plus/s/QvWhOTmCA5pFj6E/download)
WXinlong's avatar
WXinlong committed
56
57
58
59
60
61
62
SOLOv2_Light_448_R18_3x | Yes | 19ms | 29.6 | [download](https://cloudstor.aarnet.edu.au/plus/s/HwHys05haPvNyAY/download)
SOLOv2_Light_448_R34_3x | Yes | 20ms | 32.0 | [download](https://cloudstor.aarnet.edu.au/plus/s/QLQpXg9ny7sNA6X/download)
SOLOv2_Light_448_R50_3x | Yes | 24ms | 33.7 | [download](https://cloudstor.aarnet.edu.au/plus/s/cn1jABtVJwsbb2G/download)
SOLOv2_Light_512_DCN_R50_3x | Yes | 34ms | 36.4 | [download](https://cloudstor.aarnet.edu.au/plus/s/pndBdr1kGOU2iHO/download)

*Disclaimer:*

Xinlong Wang's avatar
Xinlong Wang committed
63
- Light-weight means light-weight backbone, head and smaller input size. Please refer to the corresponding config files for details.
WXinlong's avatar
WXinlong committed
64
65
- This is a reimplementation and the numbers are slightly different from our original paper (within 0.3% in mask AP).

Kai Chen's avatar
Kai Chen committed
66

WXinlong's avatar
WXinlong committed
67
## Usage
Kai Chen's avatar
Kai Chen committed
68

Xinlong Wang's avatar
Xinlong Wang committed
69
70
71
72
### A quick demo

Once the installation is done, you can download the provided models and use [inference_demo.py](demo/inference_demo.py) to run a quick demo.

WXinlong's avatar
WXinlong committed
73
74
### Train with multiple GPUs
    ./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM}
Kai Chen's avatar
Kai Chen committed
75

WXinlong's avatar
WXinlong committed
76
77
    Example: 
    ./tools/dist_train.sh configs/solo/solo_r50_fpn_8gpu_1x.py  8
Kai Chen's avatar
Kai Chen committed
78

WXinlong's avatar
WXinlong committed
79
80
81
82
83
### Train with single GPU
    python tools/train.py ${CONFIG_FILE}
    
    Example:
    python tools/train.py configs/solo/solo_r50_fpn_8gpu_1x.py
Kai Chen's avatar
Kai Chen committed
84

WXinlong's avatar
WXinlong committed
85
### Testing
Xinlong Wang's avatar
Xinlong Wang committed
86
87
88
89
90
91
92
    # multi-gpu testing
    ./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM}  --show --out  ${OUTPUT_FILE} --eval segm
    
    Example: 
    ./tools/dist_test.sh configs/solo/solo_r50_fpn_8gpu_1x.py SOLO_R50_1x.pth  8  --show --out results_solo.pkl --eval segm

    # single-gpu testing
WXinlong's avatar
WXinlong committed
93
94
95
    python tools/test_ins.py ${CONFIG_FILE} ${CHECKPOINT_FILE} --show --out  ${OUTPUT_FILE} --eval segm
    
    Example: 
Xinlong Wang's avatar
Xinlong Wang committed
96
97
    python tools/test_ins.py configs/solo/solo_r50_fpn_8gpu_1x.py  SOLO_R50_1x.pth --show --out  results_solo.pkl --eval segm

Kai Chen's avatar
Kai Chen committed
98

WXinlong's avatar
WXinlong committed
99
### Visualization
Kai Chen's avatar
Kai Chen committed
100

WXinlong's avatar
WXinlong committed
101
102
103
    python tools/test_ins_vis.py ${CONFIG_FILE} ${CHECKPOINT_FILE} --show --save_dir  ${SAVE_DIR}
    
    Example: 
Xinlong Wang's avatar
Xinlong Wang committed
104
    python tools/test_ins_vis.py configs/solo/solo_r50_fpn_8gpu_1x.py  SOLO_R50_1x.pth --show --save_dir  work_dirs/vis_solo
Kai Chen's avatar
Kai Chen committed
105

WXinlong's avatar
WXinlong committed
106
107
## Contributing to the project
Any pull requests or issues are welcome.
Kai Chen's avatar
Kai Chen committed
108

WXinlong's avatar
WXinlong committed
109
## Citations
Tao Kong's avatar
Tao Kong committed
110
Please consider citing our papers in your publications if the project helps your research. BibTeX reference is as follows.
Kai Chen's avatar
Kai Chen committed
111
```
WXinlong's avatar
WXinlong committed
112
113
114
115
@article{wang2019solo,
  title={SOLO: Segmenting Objects by Locations},
  author={Wang, Xinlong and Kong, Tao and Shen, Chunhua and Jiang, Yuning and Li, Lei},
  journal={arXiv preprint arXiv:1912.04488},
Kai Chen's avatar
Kai Chen committed
116
  year={2019}
Kai Chen's avatar
Kai Chen committed
117
118
}
```
Kai Chen's avatar
Kai Chen committed
119

WXinlong's avatar
WXinlong committed
120
121
122
123
124
125
126
127
```
@article{wang2020solov2,
  title={SOLOv2: Dynamic, Faster and Stronger},
  author={Wang, Xinlong and Zhang, Rufeng and  Kong, Tao and Li, Lei and Shen, Chunhua},
  journal={arXiv preprint arXiv:2003.10152},
  year={2020}
}
```
WXinlong's avatar
WXinlong committed
128
129
130
131

## License

For academic use, this project is licensed under the 2-clause BSD License - see the LICENSE file for details. For commercial use, please contact [Xinlong Wang](https://www.xloong.wang/) and  [Chunhua Shen](https://cs.adelaide.edu.au/~chhshen/).