MCPcopy Create free account
hub / github.com/NVIDIA/semantic-segmentation / _make_fuse_layers

Method _make_fuse_layers

network/hrnetv2.py:181–225  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

179 return nn.ModuleList(branches)
180
181 def _make_fuse_layers(self):
182 if self.num_branches == 1:
183 return None
184
185 num_branches = self.num_branches
186 num_inchannels = self.num_inchannels
187 fuse_layers = []
188 for i in range(num_branches if self.multi_scale_output else 1):
189 fuse_layer = []
190 for j in range(num_branches):
191 if j > i:
192 fuse_layer.append(nn.Sequential(
193 nn.Conv2d(num_inchannels[j],
194 num_inchannels[i],
195 1,
196 1,
197 0,
198 bias=False),
199 Norm2d(num_inchannels[i], momentum=BN_MOMENTUM)))
200 elif j == i:
201 fuse_layer.append(None)
202 else:
203 conv3x3s = []
204 for k in range(i-j):
205 if k == i - j - 1:
206 num_outchannels_conv3x3 = num_inchannels[i]
207 conv3x3s.append(nn.Sequential(
208 nn.Conv2d(num_inchannels[j],
209 num_outchannels_conv3x3,
210 3, 2, 1, bias=False),
211 Norm2d(num_outchannels_conv3x3,
212 momentum=BN_MOMENTUM)))
213 else:
214 num_outchannels_conv3x3 = num_inchannels[j]
215 conv3x3s.append(nn.Sequential(
216 nn.Conv2d(num_inchannels[j],
217 num_outchannels_conv3x3,
218 3, 2, 1, bias=False),
219 Norm2d(num_outchannels_conv3x3,
220 momentum=BN_MOMENTUM),
221 nn.ReLU(inplace=relu_inplace)))
222 fuse_layer.append(nn.Sequential(*conv3x3s))
223 fuse_layers.append(nn.ModuleList(fuse_layer))
224
225 return nn.ModuleList(fuse_layers)
226
227 def get_num_inchannels(self):
228 return self.num_inchannels

Callers 1

__init__Method · 0.95

Calls 1

Norm2dFunction · 0.90

Tested by

no test coverage detected