MCPcopy Create free account
hub / github.com/VisionXLab/OF-Diff / FeatureFusionBlock_custom

Class FeatureFusionBlock_custom

ldm/modules/midas/midas/blocks.py:291–341  ·  view source on GitHub ↗

Feature fusion block.

Source from the content-addressed store, hash-verified

289
290
291class FeatureFusionBlock_custom(nn.Module):
292 """Feature fusion block.
293 """
294
295 def __init__(self, features, activation, deconv=False, bn=False, expand=False, align_corners=True):
296 """Init.
297
298 Args:
299 features (int): number of features
300 """
301 super(FeatureFusionBlock_custom, self).__init__()
302
303 self.deconv = deconv
304 self.align_corners = align_corners
305
306 self.groups=1
307
308 self.expand = expand
309 out_features = features
310 if self.expand==True:
311 out_features = features//2
312
313 self.out_conv = nn.Conv2d(features, out_features, kernel_size=1, stride=1, padding=0, bias=True, groups=1)
314
315 self.resConfUnit1 = ResidualConvUnit_custom(features, activation, bn)
316 self.resConfUnit2 = ResidualConvUnit_custom(features, activation, bn)
317
318 self.skip_add = nn.quantized.FloatFunctional()
319
320 def forward(self, *xs):
321 """Forward pass.
322
323 Returns:
324 tensor: output
325 """
326 output = xs[0]
327
328 if len(xs) == 2:
329 res = self.resConfUnit1(xs[1])
330 output = self.skip_add.add(output, res)
331 # output += res
332
333 output = self.resConfUnit2(output)
334
335 output = nn.functional.interpolate(
336 output, scale_factor=2, mode="bilinear", align_corners=self.align_corners
337 )
338
339 output = self.out_conv(output)
340
341 return output
342

Callers 2

__init__Method · 0.85
_make_fusion_blockFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected