MCPcopy Create free account
hub / github.com/thygate/stable-diffusion-webui-depthmap-script / FeatureFusionBlock_custom

Class FeatureFusionBlock_custom

dmidas/blocks.py:382–441  ·  view source on GitHub ↗

Feature fusion block.

Source from the content-addressed store, hash-verified

380
381
382class FeatureFusionBlock_custom(nn.Module):
383 """Feature fusion block.
384 """
385
386 def __init__(self, features, activation, deconv=False, bn=False, expand=False, align_corners=True, size=None):
387 """Init.
388
389 Args:
390 features (int): number of features
391 """
392 super(FeatureFusionBlock_custom, self).__init__()
393
394 self.deconv = deconv
395 self.align_corners = align_corners
396
397 self.groups=1
398
399 self.expand = expand
400 out_features = features
401 if self.expand==True:
402 out_features = features//2
403
404 self.out_conv = nn.Conv2d(features, out_features, kernel_size=1, stride=1, padding=0, bias=True, groups=1)
405
406 self.resConfUnit1 = ResidualConvUnit_custom(features, activation, bn)
407 self.resConfUnit2 = ResidualConvUnit_custom(features, activation, bn)
408
409 self.skip_add = nn.quantized.FloatFunctional()
410
411 self.size=size
412
413 def forward(self, *xs, size=None):
414 """Forward pass.
415
416 Returns:
417 tensor: output
418 """
419 output = xs[0]
420
421 if len(xs) == 2:
422 res = self.resConfUnit1(xs[1])
423 output = self.skip_add.add(output, res)
424 # output += res
425
426 output = self.resConfUnit2(output)
427
428 if (size is None) and (self.size is None):
429 modifier = {"scale_factor": 2}
430 elif size is None:
431 modifier = {"size": self.size}
432 else:
433 modifier = {"size": size}
434
435 output = nn.functional.interpolate(
436 output, **modifier, mode="bilinear", align_corners=self.align_corners
437 )
438
439 output = self.out_conv(output)

Callers 2

__init__Method · 0.85
_make_fusion_blockFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected