Constructor.
721 ):
722 super(CBAM_attention, self).__init__()
723
724 self.avg_pool = nn.AdaptiveAvgPool2d(1)
725
726 self.max_pool = nn.AdaptiveMaxPool2d(1)
727
728 self.fc1 = which_conv(
729 channels, channels // reduction, kernel_size=1, padding=0
730 )
731
732 self.relu = nn.ReLU(inplace=True)
733
734 self.fc2 = which_conv(
735 channels // reduction, channels, kernel_size=1, padding=0
736 )
737
738 self.sigmoid_channel = nn.Sigmoid()
739
740 self.conv_after_concat = which_conv(
741 2,
742 1,
743 kernel_size=attention_kernel_size,
744 stride=1,
745 padding=attention_kernel_size // 2,
746 )
747
748 self.sigmoid_spatial = nn.Sigmoid()
749