Skip to content

Commit 7b0a416

Browse files
committed
add ade20k news & mmseg support
1 parent a92ccc0 commit 7b0a416

File tree

5 files changed

+699
-1
lines changed

5 files changed

+699
-1
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
- The PyTroch 0.4.1 version is available [here](https://github.com/HRNet/HRNet-Semantic-Segmentation/tree/master).
66

77
## News
8-
- [2020/07] Our paper is accepted by ECCV 2020: [Object-Contextual Representations for Semantic Segmentation](https://arxiv.org/pdf/1909.11065.pdf). Notably, the reseachers from Nvidia set a new state-of-the-art performance on Cityscapes leaderboard: [85.4%](https://www.cityscapes-dataset.com/method-details/?submissionID=7836) via combining our HRNet + OCR with a new [hierarchical mult-scale attention scheme](https://arxiv.org/abs/2005.10821).
8+
- [2020/08/16] [MMSegmentation](https://github.com/open-mmlab/mmsegmentation) has supported our HRNet + OCR.
9+
- [2020/07/20] The researchers from AInnovation have achieved **Rank#1** on [ADE20K Leaderboard](http://sceneparsing.csail.mit.edu/) via training our HRNet + OCR with a semi-supervised learning scheme. More details are in their [Technical Report](https://arxiv.org/pdf/2007.10591.pdf).
10+
- [2020/07/09] Our paper is accepted by ECCV 2020: [Object-Contextual Representations for Semantic Segmentation](https://arxiv.org/pdf/1909.11065.pdf). Notably, the reseachers from Nvidia set a new state-of-the-art performance on Cityscapes leaderboard: [85.4%](https://www.cityscapes-dataset.com/method-details/?submissionID=7836) via combining our HRNet + OCR with a new [hierarchical mult-scale attention scheme](https://arxiv.org/abs/2005.10821).
911
- [2020/03/13] Our paper is accepted by TPAMI: [Deep High-Resolution Representation Learning for Visual Recognition](https://arxiv.org/pdf/1908.07919.pdf).
1012
- HRNet + OCR + SegFix: Rank \#1 (84.5) in [Cityscapes leaderboard](https://www.cityscapes-dataset.com/benchmarks/). OCR: object contextual represenations [pdf](https://arxiv.org/pdf/1909.11065.pdf). ***HRNet + OCR is reproduced [here](https://github.com/HRNet/HRNet-Semantic-Segmentation/tree/HRNet-OCR)***.
1113
- Thanks Google and UIUC researchers. A modified HRNet combined with semantic and instance multi-scale context achieves SOTA panoptic segmentation result on the Mapillary Vista challenge. See [the paper](https://arxiv.org/pdf/1910.04751.pdf).

hubconf.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""File for accessing HRNet via PyTorch Hub https://pytorch.org/hub/
2+
3+
Usage:
4+
import torch
5+
model = torch.hub.load('AlexeyAB/PyTorch_YOLOv4:u5_preview', 'yolov4_pacsp_s', pretrained=True, channels=3, classes=80)
6+
"""
7+
8+
dependencies = ['torch']
9+
import torch
10+
from lib.models.seg_hrnet import get_seg_model
11+
12+
13+
state_dict_url = 'https://github.com/huawei-noah/ghostnet/raw/master/pytorch/models/state_dict_93.98.pth'
14+
15+
16+
def hrnet_w48_cityscapes(pretrained=False, **kwargs):
17+
""" # This docstring shows up in hub.help()
18+
HRNetW48 model pretrained on Cityscapes
19+
pretrained (bool): kwargs, load pretrained weights into the model
20+
"""
21+
model = ghostnet(num_classes=1000, width=1.0, dropout=0.2)
22+
if pretrained:
23+
state_dict = torch.hub.load_state_dict_from_url(state_dict_url, progress=True)
24+
model.load_state_dict(state_dict)
25+
return model

lib/config/hrnet_config.py

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# ------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft
3+
# Licensed under the MIT License.
4+
# Create by Bin Xiao ([email protected])
5+
# Modified by Ke Sun ([email protected]), Rainbowsecret ([email protected])
6+
# ------------------------------------------------------------------------------
7+
8+
from __future__ import absolute_import
9+
from __future__ import division
10+
from __future__ import print_function
11+
12+
from yacs.config import CfgNode as CN
13+
14+
15+
# configs for HRNet48
16+
HRNET_48 = CN()
17+
HRNET_48.FINAL_CONV_KERNEL = 1
18+
19+
HRNET_48.STAGE1 = CN()
20+
HRNET_48.STAGE1.NUM_MODULES = 1
21+
HRNET_48.STAGE1.NUM_BRANCHES = 1
22+
HRNET_48.STAGE1.NUM_BLOCKS = [4]
23+
HRNET_48.STAGE1.NUM_CHANNELS = [64]
24+
HRNET_48.STAGE1.BLOCK = 'BOTTLENECK'
25+
HRNET_48.STAGE1.FUSE_METHOD = 'SUM'
26+
27+
HRNET_48.STAGE2 = CN()
28+
HRNET_48.STAGE2.NUM_MODULES = 1
29+
HRNET_48.STAGE2.NUM_BRANCHES = 2
30+
HRNET_48.STAGE2.NUM_BLOCKS = [4, 4]
31+
HRNET_48.STAGE2.NUM_CHANNELS = [48, 96]
32+
HRNET_48.STAGE2.BLOCK = 'BASIC'
33+
HRNET_48.STAGE2.FUSE_METHOD = 'SUM'
34+
35+
HRNET_48.STAGE3 = CN()
36+
HRNET_48.STAGE3.NUM_MODULES = 4
37+
HRNET_48.STAGE3.NUM_BRANCHES = 3
38+
HRNET_48.STAGE3.NUM_BLOCKS = [4, 4, 4]
39+
HRNET_48.STAGE3.NUM_CHANNELS = [48, 96, 192]
40+
HRNET_48.STAGE3.BLOCK = 'BASIC'
41+
HRNET_48.STAGE3.FUSE_METHOD = 'SUM'
42+
43+
HRNET_48.STAGE4 = CN()
44+
HRNET_48.STAGE4.NUM_MODULES = 3
45+
HRNET_48.STAGE4.NUM_BRANCHES = 4
46+
HRNET_48.STAGE4.NUM_BLOCKS = [4, 4, 4, 4]
47+
HRNET_48.STAGE4.NUM_CHANNELS = [48, 96, 192, 384]
48+
HRNET_48.STAGE4.BLOCK = 'BASIC'
49+
HRNET_48.STAGE4.FUSE_METHOD = 'SUM'
50+
51+
52+
# configs for HRNet32
53+
HRNET_32 = CN()
54+
HRNET_32.FINAL_CONV_KERNEL = 1
55+
56+
HRNET_32.STAGE1 = CN()
57+
HRNET_32.STAGE1.NUM_MODULES = 1
58+
HRNET_32.STAGE1.NUM_BRANCHES = 1
59+
HRNET_32.STAGE1.NUM_BLOCKS = [4]
60+
HRNET_32.STAGE1.NUM_CHANNELS = [64]
61+
HRNET_32.STAGE1.BLOCK = 'BOTTLENECK'
62+
HRNET_32.STAGE1.FUSE_METHOD = 'SUM'
63+
64+
HRNET_32.STAGE2 = CN()
65+
HRNET_32.STAGE2.NUM_MODULES = 1
66+
HRNET_32.STAGE2.NUM_BRANCHES = 2
67+
HRNET_32.STAGE2.NUM_BLOCKS = [4, 4]
68+
HRNET_32.STAGE2.NUM_CHANNELS = [32, 64]
69+
HRNET_32.STAGE2.BLOCK = 'BASIC'
70+
HRNET_32.STAGE2.FUSE_METHOD = 'SUM'
71+
72+
HRNET_32.STAGE3 = CN()
73+
HRNET_32.STAGE3.NUM_MODULES = 4
74+
HRNET_32.STAGE3.NUM_BRANCHES = 3
75+
HRNET_32.STAGE3.NUM_BLOCKS = [4, 4, 4]
76+
HRNET_32.STAGE3.NUM_CHANNELS = [32, 64, 128]
77+
HRNET_32.STAGE3.BLOCK = 'BASIC'
78+
HRNET_32.STAGE3.FUSE_METHOD = 'SUM'
79+
80+
HRNET_32.STAGE4 = CN()
81+
HRNET_32.STAGE4.NUM_MODULES = 3
82+
HRNET_32.STAGE4.NUM_BRANCHES = 4
83+
HRNET_32.STAGE4.NUM_BLOCKS = [4, 4, 4, 4]
84+
HRNET_32.STAGE4.NUM_CHANNELS = [32, 64, 128, 256]
85+
HRNET_32.STAGE4.BLOCK = 'BASIC'
86+
HRNET_32.STAGE4.FUSE_METHOD = 'SUM'
87+
88+
89+
# configs for HRNet18
90+
HRNET_18 = CN()
91+
HRNET_18.FINAL_CONV_KERNEL = 1
92+
93+
HRNET_18.STAGE1 = CN()
94+
HRNET_18.STAGE1.NUM_MODULES = 1
95+
HRNET_18.STAGE1.NUM_BRANCHES = 1
96+
HRNET_18.STAGE1.NUM_BLOCKS = [4]
97+
HRNET_18.STAGE1.NUM_CHANNELS = [64]
98+
HRNET_18.STAGE1.BLOCK = 'BOTTLENECK'
99+
HRNET_18.STAGE1.FUSE_METHOD = 'SUM'
100+
101+
HRNET_18.STAGE2 = CN()
102+
HRNET_18.STAGE2.NUM_MODULES = 1
103+
HRNET_18.STAGE2.NUM_BRANCHES = 2
104+
HRNET_18.STAGE2.NUM_BLOCKS = [4, 4]
105+
HRNET_18.STAGE2.NUM_CHANNELS = [18, 36]
106+
HRNET_18.STAGE2.BLOCK = 'BASIC'
107+
HRNET_18.STAGE2.FUSE_METHOD = 'SUM'
108+
109+
HRNET_18.STAGE3 = CN()
110+
HRNET_18.STAGE3.NUM_MODULES = 4
111+
HRNET_18.STAGE3.NUM_BRANCHES = 3
112+
HRNET_18.STAGE3.NUM_BLOCKS = [4, 4, 4]
113+
HRNET_18.STAGE3.NUM_CHANNELS = [18, 36, 72]
114+
HRNET_18.STAGE3.BLOCK = 'BASIC'
115+
HRNET_18.STAGE3.FUSE_METHOD = 'SUM'
116+
117+
HRNET_18.STAGE4 = CN()
118+
HRNET_18.STAGE4.NUM_MODULES = 3
119+
HRNET_18.STAGE4.NUM_BRANCHES = 4
120+
HRNET_18.STAGE4.NUM_BLOCKS = [4, 4, 4, 4]
121+
HRNET_18.STAGE4.NUM_CHANNELS = [18, 36, 72, 144]
122+
HRNET_18.STAGE4.BLOCK = 'BASIC'
123+
HRNET_18.STAGE4.FUSE_METHOD = 'SUM'
124+
125+
126+
MODEL_CONFIGS = {
127+
'hrnet18': HRNET_18,
128+
'hrnet32': HRNET_32,
129+
'hrnet48': HRNET_48,
130+
}

0 commit comments

Comments
 (0)