Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
b797497
add stem_channels opt
xvjiarui Jun 9, 2020
d03c541
merged master
xvjiarui Jun 9, 2020
c4a32a9
add ResNeSt
xvjiarui Jun 9, 2020
5cc4abb
Merge branch 'master' into resnest
xvjiarui Jun 9, 2020
cd09016
fixed config
xvjiarui Jun 9, 2020
44987b1
fixed cascade config
xvjiarui Jun 9, 2020
a882da6
add precise BN
xvjiarui Jun 11, 2020
abc21c2
add precise bn in test
xvjiarui Jun 11, 2020
2cb44ae
format precise bn
xvjiarui Jun 11, 2020
d3a3d0b
update precise bn interval
xvjiarui Jun 11, 2020
e463cfe
fixed eval config bug
xvjiarui Jun 12, 2020
f032527
fixed precise interval
xvjiarui Jun 14, 2020
7daee92
change to return_loss=False
xvjiarui Jun 17, 2020
6ca76a1
add naive syncbn
xvjiarui Jun 18, 2020
6abacd2
add naive syncbn
xvjiarui Jun 18, 2020
d12a503
rmo precise bn
xvjiarui Jun 23, 2020
10c74a7
add range ms
xvjiarui Jun 24, 2020
1148d43
change to MMSyncBN
xvjiarui Jun 25, 2020
21990e7
merged master
xvjiarui Jun 25, 2020
7da16f0
add naive
xvjiarui Jun 25, 2020
3677461
fixed loader
xvjiarui Jun 25, 2020
3e4b36a
reset test
xvjiarui Jun 25, 2020
4e7ba12
fixed faster config bug
xvjiarui Jun 26, 2020
dbd0519
add no norm decay
xvjiarui Jun 26, 2020
3cbbe30
add baseline no norm decay
xvjiarui Jun 27, 2020
a9226fc
merge master (remove ops)
xvjiarui Jul 14, 2020
2e98f8d
set fronzen_stages=-1
xvjiarui Jul 14, 2020
6245ac2
move import
xvjiarui Jul 14, 2020
f73da76
restore to official setting
xvjiarui Jul 16, 2020
737ed60
set to MMSyncBN
xvjiarui Jul 16, 2020
06c2e4f
update s101 pretrain
xvjiarui Jul 30, 2020
a18317e
update docs
xvjiarui Jul 30, 2020
3fb0458
fixed config
xvjiarui Jul 30, 2020
0e17986
merged master
xvjiarui Sep 26, 2020
1a81f89
add backbone+head
xvjiarui Sep 26, 2020
06ec13b
change fpn init
xvjiarui Sep 27, 2020
6ff6c2d
add s101
xvjiarui Oct 4, 2020
0f359e0
add s101
xvjiarui Oct 4, 2020
47f96bc
revert fpn init
xvjiarui Oct 4, 2020
278ea76
Merge branch 'master' into resnest
xvjiarui Nov 21, 2020
ad35ea4
add modelzoo, docstring, test
xvjiarui Nov 21, 2020
9a78f20
fixed test
xvjiarui Nov 21, 2020
b69ac75
fixed test
xvjiarui Nov 21, 2020
6837124
add missing models
xvjiarui Nov 24, 2020
f5a4969
update docstring
xvjiarui Nov 24, 2020
8ace3f6
add comment
xvjiarui Nov 24, 2020
eecef27
fixed markdownlint
xvjiarui Nov 24, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ Supported backbones:
- [x] HRNet
- [x] RegNet
- [x] Res2Net
- [x] ResNeSt

Supported methods:
- [x] [RPN](configs/rpn)
Expand Down
42 changes: 42 additions & 0 deletions configs/resnest/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# ResNeSt: Split-Attention Networks

## Introduction

```latex
@article{zhang2020resnest,
title={ResNeSt: Split-Attention Networks},
author={Zhang, Hang and Wu, Chongruo and Zhang, Zhongyue and Zhu, Yi and Zhang, Zhi and Lin, Haibin and Sun, Yue and He, Tong and Muller, Jonas and Manmatha, R. and Li, Mu and Smola, Alexander},
journal={arXiv preprint arXiv:2004.08955},
year={2020}
}
```

## Results and Models

### Faster R-CNN

| Backbone | Style | Lr schd | Mem (GB) | Inf time (fps) | box AP | Download |
| :-------------: | :-----: | :-----: | :------: | :------------: | :----: | :------: |
|S-50-FPN | pytorch | 1x | 4.8 | - | 42.0 |[model](http://download.openmmlab.com/mmdetection/v2.0/resnest/faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco/faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco_20200926_125502-20289c16.pth) | [log](http://download.openmmlab.com/mmdetection/v2.0/resnest/faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco/faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco-20200926_125502.log.json) |
|S-101-FPN | pytorch | 1x | 7.1 | - | 44.5 |[model](http://download.openmmlab.com/mmdetection/v2.0/resnest/faster_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco/faster_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco_20201006_021058-421517f1.pth) | [log](http://download.openmmlab.com/mmdetection/v2.0/resnest/faster_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco/faster_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco-20201006_021058.log.json) |

### Mask R-CNN

| Backbone | Style | Lr schd | Mem (GB) | Inf time (fps) | box AP | mask AP | Download |
| :-------------: | :-----: | :-----: | :------: | :------------: | :----: | :-----: | :------: |
|S-50-FPN | pytorch | 1x | 5.5 | - | 42.6 | 38.1 |[model](http://download.openmmlab.com/mmdetection/v2.0/resnest/mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco/mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco_20200926_125503-8a2c3d47.pth) | [log](http://download.openmmlab.com/mmdetection/v2.0/resnest/mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco/mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco-20200926_125503.log.json) |
|S-101-FPN | pytorch | 1x | 7.8 | - | 45.2 | 40.2 |[model](http://download.openmmlab.com/mmdetection/v2.0/resnest/mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco/mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco_20201005_215831-af60cdf9.pth) | [log](http://download.openmmlab.com/mmdetection/v2.0/resnest/mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco/mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco-20201005_215831.log.json) |

### Cascade R-CNN

| Backbone | Style | Lr schd | Mem (GB) | Inf time (fps) | box AP | Download |
| :-------------: | :-----: | :-----: | :------: | :------------: | :----: | :------: |
|S-50-FPN | pytorch | 1x | - | - | 44.5 |[model](http://download.openmmlab.com/mmdetection/v2.0/resnest/cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco/cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco_20201122_213640-763cc7b5.pth) | [log](http://download.openmmlab.com/mmdetection/v2.0/resnest/cascade_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco/cascade_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco-20201005_113242.log.json) |
|S-101-FPN | pytorch | 1x | 8.4 | - | 46.8 |[model](http://download.openmmlab.com/mmdetection/v2.0/resnest/cascade_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco/cascade_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco_20201005_113242-b9459f8f.pth) | [log](http://download.openmmlab.com/mmdetection/v2.0/resnest/cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco/cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco-20201122_213640.log.json) |

### Cascade Mask R-CNN

| Backbone | Style | Lr schd | Mem (GB) | Inf time (fps) | box AP | mask AP | Download |
| :-------------: | :-----: | :-----: | :------: | :------------: | :----: | :-----: | :------: |
|S-50-FPN | pytorch | 1x | - | - | 45.4 | 39.5 |[model](http://download.openmmlab.com/mmdetection/v2.0/resnest/cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco/cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco_20201122_104428-99eca4c7.pth) | [log](http://download.openmmlab.com/mmdetection/v2.0/resnest/cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco/cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco-20201122_104428.log.json) |
|S-101-FPN | pytorch | 1x | 10.5 | - | 47.7 | 41.4 |[model](http://download.openmmlab.com/mmdetection/v2.0/resnest/cascade_mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco/cascade_mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco_20201005_113243-42607475.pth) | [log](http://download.openmmlab.com/mmdetection/v2.0/resnest/cascade_mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco/cascade_mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco-20201005_113243.log.json) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
_base_ = './cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py'
model = dict(
pretrained='open-mmlab://resnest101',
backbone=dict(stem_channels=128, depth=101))
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
_base_ = '../cascade_rcnn/cascade_mask_rcnn_r50_fpn_1x_coco.py'
norm_cfg = dict(type='SyncBN', requires_grad=True)
model = dict(
pretrained='open-mmlab://resnest50',
backbone=dict(
type='ResNeSt',
stem_channels=64,
depth=50,
radix=2,
reduction_factor=4,
avg_down_stride=True,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
norm_cfg=norm_cfg,
norm_eval=False,
style='pytorch'),
roi_head=dict(
bbox_head=[
dict(
type='Shared4Conv1FCBBoxHead',
in_channels=256,
conv_out_channels=256,
fc_out_channels=1024,
norm_cfg=norm_cfg,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0., 0., 0., 0.],
target_stds=[0.1, 0.1, 0.2, 0.2]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0,
loss_weight=1.0)),
dict(
type='Shared4Conv1FCBBoxHead',
in_channels=256,
conv_out_channels=256,
fc_out_channels=1024,
norm_cfg=norm_cfg,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0., 0., 0., 0.],
target_stds=[0.05, 0.05, 0.1, 0.1]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0,
loss_weight=1.0)),
dict(
type='Shared4Conv1FCBBoxHead',
in_channels=256,
conv_out_channels=256,
fc_out_channels=1024,
norm_cfg=norm_cfg,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0., 0., 0., 0.],
target_stds=[0.033, 0.033, 0.067, 0.067]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0))
],
mask_head=dict(norm_cfg=norm_cfg)))
# # use ResNeSt img_norm
img_norm_cfg = dict(
mean=[123.68, 116.779, 103.939], std=[58.393, 57.12, 57.375], to_rgb=True)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='LoadAnnotations',
with_bbox=True,
with_mask=True,
poly2mask=False),
dict(
type='Resize',
img_scale=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),
(1333, 768), (1333, 800)],
multiscale_mode='value',
keep_ratio=True),
dict(type='RandomFlip', flip_ratio=0.5),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_masks']),
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(1333, 800),
flip=False,
transforms=[
dict(type='Resize', keep_ratio=True),
dict(type='RandomFlip'),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img']),
])
]
data = dict(
train=dict(pipeline=train_pipeline),
val=dict(pipeline=test_pipeline),
test=dict(pipeline=test_pipeline))
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
_base_ = './cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py'
model = dict(
pretrained='open-mmlab://resnest101',
backbone=dict(stem_channels=128, depth=101))
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
_base_ = '../cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py'
norm_cfg = dict(type='SyncBN', requires_grad=True)
model = dict(
pretrained='open-mmlab://resnest50',
backbone=dict(
type='ResNeSt',
stem_channels=64,
depth=50,
radix=2,
reduction_factor=4,
avg_down_stride=True,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
norm_cfg=norm_cfg,
norm_eval=False,
style='pytorch'),
roi_head=dict(
bbox_head=[
dict(
type='Shared4Conv1FCBBoxHead',
in_channels=256,
conv_out_channels=256,
fc_out_channels=1024,
norm_cfg=norm_cfg,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0., 0., 0., 0.],
target_stds=[0.1, 0.1, 0.2, 0.2]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0,
loss_weight=1.0)),
dict(
type='Shared4Conv1FCBBoxHead',
in_channels=256,
conv_out_channels=256,
fc_out_channels=1024,
norm_cfg=norm_cfg,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0., 0., 0., 0.],
target_stds=[0.05, 0.05, 0.1, 0.1]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0,
loss_weight=1.0)),
dict(
type='Shared4Conv1FCBBoxHead',
in_channels=256,
conv_out_channels=256,
fc_out_channels=1024,
norm_cfg=norm_cfg,
roi_feat_size=7,
num_classes=80,
bbox_coder=dict(
type='DeltaXYWHBBoxCoder',
target_means=[0., 0., 0., 0.],
target_stds=[0.033, 0.033, 0.067, 0.067]),
reg_class_agnostic=True,
loss_cls=dict(
type='CrossEntropyLoss',
use_sigmoid=False,
loss_weight=1.0),
loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0))
], ))
# # use ResNeSt img_norm
img_norm_cfg = dict(
mean=[123.68, 116.779, 103.939], std=[58.393, 57.12, 57.375], to_rgb=True)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='LoadAnnotations',
with_bbox=True,
with_mask=False,
poly2mask=False),
dict(
type='Resize',
img_scale=[(1333, 640), (1333, 800)],
multiscale_mode='range',
keep_ratio=True),
dict(type='RandomFlip', flip_ratio=0.5),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(1333, 800),
flip=False,
transforms=[
dict(type='Resize', keep_ratio=True),
dict(type='RandomFlip'),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img']),
])
]
data = dict(
train=dict(pipeline=train_pipeline),
val=dict(pipeline=test_pipeline),
test=dict(pipeline=test_pipeline))
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
_base_ = './faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py'
model = dict(
pretrained='open-mmlab://resnest101',
backbone=dict(stem_channels=128, depth=101))
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
_base_ = '../faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
norm_cfg = dict(type='SyncBN', requires_grad=True)
model = dict(
pretrained='open-mmlab://resnest50',
backbone=dict(
type='ResNeSt',
stem_channels=64,
depth=50,
radix=2,
reduction_factor=4,
avg_down_stride=True,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
norm_cfg=norm_cfg,
norm_eval=False,
style='pytorch'),
roi_head=dict(
bbox_head=dict(
type='Shared4Conv1FCBBoxHead',
conv_out_channels=256,
norm_cfg=norm_cfg)))
# # use ResNeSt img_norm
img_norm_cfg = dict(
mean=[123.68, 116.779, 103.939], std=[58.393, 57.12, 57.375], to_rgb=True)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='LoadAnnotations',
with_bbox=True,
with_mask=False,
poly2mask=False),
dict(
type='Resize',
img_scale=[(1333, 640), (1333, 800)],
multiscale_mode='range',
keep_ratio=True),
dict(type='RandomFlip', flip_ratio=0.5),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(1333, 800),
flip=False,
transforms=[
dict(type='Resize', keep_ratio=True),
dict(type='RandomFlip'),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad', size_divisor=32),
dict(type='ImageToTensor', keys=['img']),
dict(type='Collect', keys=['img']),
])
]
data = dict(
train=dict(pipeline=train_pipeline),
val=dict(pipeline=test_pipeline),
test=dict(pipeline=test_pipeline))
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
_base_ = './mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py'
model = dict(
pretrained='open-mmlab://resnest101',
backbone=dict(stem_channels=128, depth=101))
Loading