示例#1
0
    def __init__(self,
                 in_channels,
                 out_channels,
                 stride=1,
                 dropout=0,
                 use_se=False):
        super().__init__()
        self.use_se = use_se
        self._dropout = dropout

        self.norm1 = Norm(in_channels)
        self.act1 = Act()
        self.conv1 = Conv2d(in_channels,
                            out_channels,
                            kernel_size=3,
                            stride=stride)
        self.norm2 = Norm(out_channels)
        self.act2 = Act()
        if self._dropout:
            self.dropout = nn.Dropout(dropout)
        self.conv2 = Conv2d(out_channels, out_channels, kernel_size=3)
        if self.use_se:
            self.se = SEModule(out_channels, reduction=8)

        self.shortcut = Conv2d(in_channels,
                               out_channels,
                               kernel_size=1,
                               stride=stride)
示例#2
0
    def __init__(self,
                 in_channels,
                 channels,
                 out_channels,
                 kernel_size,
                 stride=1,
                 se_ratio=1 / 16):
        super().__init__()

        self.bn = get_norm_layer('default', in_channels)
        if in_channels != channels:
            self.expand = Conv2d(in_channels,
                                 channels,
                                 kernel_size=1,
                                 norm_layer='default',
                                 activation='default')

        self.dwconv = Conv2d(channels,
                             channels,
                             kernel_size,
                             stride=stride,
                             groups=channels,
                             norm_layer='default',
                             activation='default')

        if se_ratio:
            assert 0 < se_ratio < 1
            self.se = SEModule(channels, reduction=int(1 / se_ratio))

        if out_channels is not None:
            self.project = Conv2d(channels,
                                  out_channels,
                                  kernel_size=1,
                                  norm_layer='default')
        self.use_res_connect = stride == 1 and in_channels == out_channels
示例#3
0
 def __init__(self, in_channels, out_channels, shuffle_groups=2):
     super().__init__()
     channels = out_channels - in_channels // 2
     self.conv1 = Conv2d(
         in_channels // 2,
         channels,
         kernel_size=1,
         norm='default',
         act='default',
     )
     self.conv2 = Conv2d(
         channels,
         channels,
         kernel_size=3,
         groups=channels,
         norm='default',
     )
     self.conv3 = Conv2d(
         channels,
         channels,
         kernel_size=1,
         norm='default',
     )
     self.shortcut = nn.Sequential()
     self.se = SEModule(channels, reduction=2)
     if in_channels != out_channels:
         self.shortcut = Conv2d(in_channels // 2,
                                channels,
                                kernel_size=1,
                                norm='default')
     self.relu = Act('default')
     self.shuffle = ShuffleBlock(shuffle_groups)
示例#4
0
 def __init__(self, in_channels, shuffle_groups=2):
     super().__init__()
     channels = in_channels // 2
     self.conv1 = Conv2d(
         channels,
         channels,
         kernel_size=1,
         norm='default',
         act='default',
     )
     self.conv2 = Conv2d(
         channels,
         channels,
         kernel_size=3,
         groups=channels,
         norm='default',
     )
     self.conv3 = Conv2d(
         channels,
         channels,
         kernel_size=1,
         norm='default',
         act='default',
     )
     self.se = SEModule(channels, reduction=2)
     self.shuffle = ShuffleBlock(shuffle_groups)
示例#5
0
 def __init__(self, in_channels, shuffle_groups=2, with_se=False):
     super().__init__()
     self.with_se = with_se
     channels = in_channels // 2
     self.conv1 = Conv2d(
         channels,
         channels,
         kernel_size=1,
         norm_layer='default',
         activation='default',
     )
     self.conv2 = Conv2d(
         channels,
         channels,
         kernel_size=5,
         groups=channels,
         norm_layer='default',
     )
     self.conv3 = Conv2d(
         channels,
         channels,
         kernel_size=1,
         norm_layer='default',
         activation='default',
     )
     if with_se:
         self.se = SEModule(channels, reduction=8)
     self.shuffle = ShuffleBlock(shuffle_groups)
示例#6
0
 def __init__(self, in_channels, out_channels, use_se, drop_path):
     super().__init__()
     self.bn1 = Norm(in_channels)
     self.nl1 = Act("default")
     self.conv1 = Conv2d(in_channels, out_channels, kernel_size=3)
     self.bn2 = Norm(out_channels)
     self.nl2 = Act("default")
     self.conv2 = Conv2d(out_channels, out_channels, kernel_size=3)
     if use_se:
         self.se = SEModule(out_channels, reduction=8)
     if drop_path:
         self.drop_path = DropPath(drop_path)
示例#7
0
 def __init__(self, in_channels, out_channels, dropout, use_se, drop_path):
     super().__init__()
     self.norm1 = Norm(in_channels)
     self.act1 = Act()
     self.conv1 = Conv2d(in_channels, out_channels, kernel_size=3)
     self.norm2 = Norm(out_channels)
     self.act2 = Act()
     if dropout:
         self.dropout = nn.Dropout(dropout)
     self.conv2 = Conv2d(out_channels, out_channels, kernel_size=3)
     if use_se:
         self.se = SEModule(out_channels, reduction=8)
     if drop_path:
         self.drop_path = DropPath(drop_path)
示例#8
0
    def __init__(self, in_channels, out_channels, stride=1, use_se=False):
        super().__init__()
        self.use_se = use_se
        self.bn1 = Norm(in_channels)
        self.nl1 = Act("default")
        self.conv1 = Conv2d(in_channels,
                            out_channels,
                            kernel_size=3,
                            stride=stride)
        self.bn2 = Norm(out_channels)
        self.nl2 = Act("default")
        self.conv2 = Conv2d(out_channels, out_channels, kernel_size=3)
        if self.use_se:
            self.se = SEModule(out_channels, reduction=8)

        self.shortcut = Conv2d(in_channels,
                               out_channels,
                               kernel_size=1,
                               stride=stride)
示例#9
0
 def __init__(self, in_channels_list, num_scales, num_levels,
              f_channels=256, no_padding=0, se_reduction=16, lite=False):
     super().__init__()
     assert len(in_channels_list) == 2
     assert num_levels >= 2
     self.ffm1 = FFMv1(in_channels_list, f_channels, lite=lite)
     self.tums = nn.ModuleList([
         TUM(f_channels * 3, f_channels, num_scales, no_padding, lite)
     ])
     for _ in range(num_levels - 1):
         self.tums.append(
             TUM(f_channels, f_channels, num_scales, no_padding, lite)
         )
     self.ffm2 = nn.ModuleList([
         FFMv2(f_channels * 3, f_channels // 2)
         for _ in range(num_levels - 1)
     ])
     self.se = nn.ModuleList([
         SEModule(f_channels // 2 * num_levels, se_reduction)
         for _ in range(num_scales)
     ])
     self.out_channels = [ f_channels // 2 * num_levels ] * num_scales
示例#10
0
 def __init__(self, in_channels_list, reduction=16):
     super().__init__()
     self.se = nn.ModuleList([
         SEModule(c, reduction)
         for c in in_channels_list
     ])