Example #1
0
    def __init__(self, num_blocks=None, num_channel=64, block=ResBlock):
        super().__init__()
        if num_blocks is None:
            num_blocks = [5, 10, 15]
        assert len(num_blocks) == 3
        self.init = nn.Sequential(
            MeanShift(sign=-1),
            ConvolutionBlock(in_channels=3, out_channels=num_channel))

        self.model_1 = nn.Sequential(
            *tuple([
                block(in_channels=num_channel) for _ in range(num_blocks[0])
            ]), ConvolutionDownscale(channels=num_channel),
            ConvolutionDownscale(channels=num_channel))
        self.model_2 = nn.Sequential(
            *tuple([
                block(in_channels=num_channel) for _ in range(num_blocks[1])
            ]), ConvolutionDownscale(channels=num_channel))
        self.model_3 = nn.Sequential(*tuple(
            [block(in_channels=num_channel) for _ in range(num_blocks[2])]))

        self.downscale_1 = ConvolutionDownscale(channels=num_channel)
        self.downscale_2 = ConvolutionDownscale(channels=num_channel)

        self.end = nn.Sequential(
            ConvolutionBlock(in_channels=num_channel * 3, out_channels=3),
            MeanShift(sign=1))
Example #2
0
 def __init__(self, num_blocks=32, num_channels=256):
     super().__init__()
     self.conv_in = ConvolutionBlock(in_channels=3, out_channels=num_channels, kernel_size=1, padding=0)
     res_blocks = [Res2Block(in_channels=num_channels, up_channels=num_channels, out_channels=num_channels) for i in range(num_blocks)]
     self.res_blocks = nn.Sequential(*res_blocks)
     self.upsample = TransposeUpscale(channels=num_channels*2, scale=4, mode=2)
     self.conv_out = ConvolutionBlock(in_channels=num_channels*2, out_channels=3)
Example #3
0
 def __init__(self, num_blocks=50, channel=128):
     super().__init__()
     self.model = nn.Sequential(
         ConvolutionBlock(in_channels=3, out_channels=channel),
         *tuple([ResBlock(in_channels=channel) for _ in range(num_blocks)]),
         ConvolutionBlock(in_channels=channel)
     )
Example #4
0
    def __init__(self, block_sequence=None, num_channel=256,
                 rgb_mean=(0.4488, 0.4371, 0.4040),
                 rgb_std=(1.0, 1.0, 1.0), rgb_range=255):
        super().__init__()

        if block_sequence is None:
            block_sequence = [15, 10, 5]

        self.init = nn.Sequential(
            MeanShift(rgb_range, rgb_mean, rgb_std, sign=-1),
            ConvolutionBlock(in_channels=3, out_channels=num_channel)
        )

        self.skip_upscale = nn.Sequential(
            TransposeUpscale(channels=num_channel),
            ConvolutionBlock(in_channels=num_channel, out_channels=3)
        )

        model_body = []
        for seq in block_sequence:
            model_body.extend([ResBlock(in_channels=num_channel) for _ in range(seq)])
            model_body.append(PixelShuffleUpscale(channels=num_channel))
        model_body.append(ConvolutionBlock(in_channels=num_channel, out_channels=3))
        self.blocks = nn.Sequential(*tuple(model_body))

        self.model_end = nn.Sequential(
            ConvolutionBlock(in_channels=num_channel, out_channels=3),
            MeanShift(rgb_range, rgb_mean, rgb_std, sign=1)
        )
Example #5
0
 def __init__(self, in_channels):
     super().__init__()
     self.preproc = nn.Sequential(
         ConvolutionBlock(in_channels=in_channels,
                          out_channels=4,
                          activation=nn.ReLU))
     self.postproc = nn.Sequential(
         ConvolutionBlock(in_channels=4, out_channels=1, activation=None),
         nn.Sigmoid())
Example #6
0
 def __init__(self, num_res=30, channel=128):
     super().__init__()
     self.model = nn.Sequential(
         ConvolutionBlock(in_channels=3, out_channels=channel),
         *tuple([ResBlock(in_channels=channel) for _ in range(num_res)]),
         ConvolutionBlock(in_channels=channel),
         PixelShuffleUpscale(channels=channel),
         PixelShuffleUpscale(channels=channel),
         ConvolutionBlock(in_channels=channel, out_channels=3)
     )
Example #7
0
 def __init__(self, num_se=30, channel=128, bias=True):
     super().__init__()
     self.model = nn.Sequential(
         ConvolutionBlock(in_channels=3, out_channels=channel),
         *tuple([
             ResBlock(in_channels=channel),
             ChannelAttentionBlock(channel=channel)
         ] for _ in range(num_se)),
         ConvolutionBlock(in_channels=channel, out_channels=channel),
         PixelShuffleUpscale(channels=channel),
         PixelShuffleUpscale(channels=channel),
         ConvolutionBlock(in_channels=channel, out_channels=3))
Example #8
0
 def __init__(self, scale, num_blocks=32, num_channel=256):
     super().__init__()
     self.model_0 = nn.Sequential(
         MeanShift(sign=-1),
         ConvolutionBlock(in_channels=3, out_channels=num_channel) 
     )
     self.model_1 = nn.Sequential(*tuple([ResBlock(num_channel) for _ in range(num_blocks)]))
     self.model_2 = nn.Sequential(
         *tuple([PixelShuffleUpscale(channels=num_channel) for _ in range(int(log2(scale)))]),
         ConvolutionBlock(in_channels=num_channel, out_channels=3),
         MeanShift(sign=1)
     )
Example #9
0
    def __init__(self, scale=4, num_groups=12, num_channel=128, rep_pad=False):
        super().__init__()
        self.model_0 = nn.Sequential(
            MeanShift(sign=-1),
            ConvolutionBlock(in_channels=3, out_channels=num_channel, rep_pad=rep_pad)
        )
        self.model_1 = nn.Sequential(*tuple([BasicGroup(num_channel, rep_pad=rep_pad) for _ in range(num_groups)]))

        upscaler = [PixelShuffleUpscale(channels=num_channel,
                                        basic_block=DepthSeparableConvBlock, rep_pad=rep_pad) for _ in range(int(log2(scale)))]
        self.model_2 = nn.Sequential(
            *tuple(upscaler),
            ConvolutionBlock(in_channels=num_channel, out_channels=3, rep_pad=rep_pad),
            MeanShift(sign=1)
        )
Example #10
0
 def __init__(self, num_channel, num_block=5, res_scale=1, rep_pad=False):
     super().__init__()
     self.model_body = nn.Sequential(
         *tuple([BasicBlock(num_channel, rep_pad=rep_pad) for _ in range(num_block)]),
         ConvolutionBlock(in_channels=num_channel, rep_pad=rep_pad)
     )
     self.res_scale = res_scale
Example #11
0
    def __init__(self, scale=4, num_groups=20, num_channel=64):
        super().__init__()
        self.model_0 = nn.Sequential(
            MeanShift(sign=-1),
            ConvolutionBlock(in_channels=3, out_channels=num_channel))
        self.model_1 = nn.Sequential(
            *tuple([BasicGroup(num_channel) for _ in range(num_groups)]))

        upscaler = [
            PixelShuffleUpscale(channels=num_channel)
            for _ in range(int(log2(scale)))
        ]
        self.model_2 = nn.Sequential(
            *tuple(upscaler),
            ConvolutionBlock(in_channels=num_channel, out_channels=3),
            MeanShift(sign=1))
Example #12
0
 def __init__(self,
              channels,
              scale=2,
              activation=nn.LeakyReLU,
              batch_norm=None,
              mode=1,
              rep_pad=False):
     super().__init__()
     if mode == 1:
         k_size, p_size = 4, 1
     elif mode == 2:
         k_size, p_size = 6, 2
     else:
         raise ValueError('wrong mode parameters')
     model_body = []
     for _ in range(int(log2(scale))):
         model_body.append(ConvolutionBlock(channels))
         model_body.append(
             nn.ConvTranspose2d(in_channels=channels,
                                out_channels=channels,
                                kernel_size=k_size,
                                padding=p_size,
                                stride=2,
                                rep_pad=rep_pad))
         if activation is not None:
             model_body.append(activation(True))
         if batch_norm is not None:
             model_body.append(batch_norm(channels))
     self.model = nn.Sequential(*tuple(model_body))
Example #13
0
    def __init__(self, num_groups=None, num_channel=128):
        super().__init__()
        if num_groups is None:
            num_groups = [6, 3]
        self.model_0 = nn.Sequential(
            MeanShift(sign=-1),
            ConvolutionBlock(in_channels=3, out_channels=num_channel)
        )
        self.model_1 = nn.Sequential(*tuple([BasicGroup(num_channel) for _ in range(num_groups[0])]))
        self.upscale_1 = PixelShuffleUpscale(channels=num_channel)

        self.model_2 = nn.Sequential(*tuple([BasicGroup(num_channel) for _ in range(num_groups[1])]))
        self.upscale_2 = PixelShuffleUpscale(channels=num_channel)

        self.model_3 = nn.Sequential(
            ConvolutionBlock(in_channels=num_channel, out_channels=3),
            MeanShift(sign=1)
        )
Example #14
0
    def __init__(self, channels, out_channels=None, scale=2):
        super().__init__()
        out_channels = channels if out_channels is None else out_channels

        filter_size = scale * 4
        stride = scale

        pad = scale * 3
        pad_top, pad_left = pad // 2, pad // 2
        pad_bottom, pad_right = pad - pad_top, pad - pad_left

        self.model = nn.Sequential(
            nn.ReplicationPad2d((pad_left, pad_right, pad_top, pad_bottom)),
            nn.Conv2d(in_channels=channels,
                      out_channels=out_channels,
                      kernel_size=filter_size,
                      stride=stride), nn.ReLU(inplace=True),
            ConvolutionBlock(in_channels=channels))
Example #15
0
 def __init__(self):
     super().__init__()
     self.model = nn.Sequential(
         ChannelPool(),
         ConvolutionBlock(in_channels=3, out_channels=1, activation=None),
         nn.Sigmoid())