MCPcopy Create free account
hub / github.com/alinlab/SelfPatch / _make_fuse_layers

Method _make_fuse_layers

segmentation/backbones/hrnet.py:125–189  ·  view source on GitHub ↗

Build fuse layer.

(self)

Source from the content-addressed store, hash-verified

123 return ModuleList(branches)
124
125 def _make_fuse_layers(self):
126 """Build fuse layer."""
127 if self.num_branches == 1:
128 return None
129
130 num_branches = self.num_branches
131 in_channels = self.in_channels
132 fuse_layers = []
133 num_out_branches = num_branches if self.multiscale_output else 1
134 for i in range(num_out_branches):
135 fuse_layer = []
136 for j in range(num_branches):
137 if j > i:
138 fuse_layer.append(
139 nn.Sequential(
140 build_conv_layer(
141 self.conv_cfg,
142 in_channels[j],
143 in_channels[i],
144 kernel_size=1,
145 stride=1,
146 padding=0,
147 bias=False),
148 build_norm_layer(self.norm_cfg, in_channels[i])[1],
149 # we set align_corners=False for HRNet
150 Upsample(
151 scale_factor=2**(j - i),
152 mode='bilinear',
153 align_corners=False)))
154 elif j == i:
155 fuse_layer.append(None)
156 else:
157 conv_downsamples = []
158 for k in range(i - j):
159 if k == i - j - 1:
160 conv_downsamples.append(
161 nn.Sequential(
162 build_conv_layer(
163 self.conv_cfg,
164 in_channels[j],
165 in_channels[i],
166 kernel_size=3,
167 stride=2,
168 padding=1,
169 bias=False),
170 build_norm_layer(self.norm_cfg,
171 in_channels[i])[1]))
172 else:
173 conv_downsamples.append(
174 nn.Sequential(
175 build_conv_layer(
176 self.conv_cfg,
177 in_channels[j],
178 in_channels[j],
179 kernel_size=3,
180 stride=2,
181 padding=1,
182 bias=False),

Callers 1

__init__Method · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected