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)
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
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)
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)
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)
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)
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)
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)
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
def __init__(self, in_channels_list, reduction=16): super().__init__() self.se = nn.ModuleList([ SEModule(c, reduction) for c in in_channels_list ])