Constructor.
693 ):
694 super(CBAM_attention, self).__init__()
695
696 self.avg_pool = nn.AdaptiveAvgPool2d(1)
697
698 self.max_pool = nn.AdaptiveMaxPool2d(1)
699
700 self.fc1 = which_conv(
701 channels, channels // reduction, kernel_size=1, padding=0
702 )
703
704 self.relu = nn.ReLU(inplace=True)
705
706 self.fc2 = which_conv(
707 channels // reduction, channels, kernel_size=1, padding=0
708 )
709
710 self.sigmoid_channel = nn.Sigmoid()
711
712 self.conv_after_concat = which_conv(
713 2,
714 1,
715 kernel_size=attention_kernel_size,
716 stride=1,
717 padding=attention_kernel_size // 2,
718 )
719
720 self.sigmoid_spatial = nn.Sigmoid()
721