Ejemplo n.º 1
0
    def __init__(self, im_size):
        super().__init__()
        self.im_size = im_size
        # feed to encoder

        # feed_input = 7
        # feed_input = 9
        feed_input = 5

        filt_dims = [32, 64, 128, 256]
        filt_const = 1
        self.to_enc = conv311(feed_input, 32 * filt_const)
        self.e1 = ConvBlock(32 * filt_const, 64 * filt_const)
        self.e2 = ConvBlock(64 * filt_const, 128 * filt_const)
        self.e2_e3 = SelfAttnBlock(128 * filt_const)
        self.e3 = ConvBlock(128 * filt_const, 256 * filt_const)

        self.res = nn.Sequential(
            ResidualBlock(256 * filt_const, 256 * filt_const),
            ResidualBlock(256 * filt_const, 256 * filt_const))

        self.d3 = TransposeConvBlock(256 * filt_const, 128 * filt_const)
        self.d3_d2 = SelfAttnBlock(128 * filt_const)
        self.d2 = TransposeConvBlock(256 * filt_const, 64 * filt_const)
        self.d1 = TransposeConvBlock(64 * filt_const, 32 * filt_const)

        self.from_dec = conv311(32 * filt_const, 3)
Ejemplo n.º 2
0
    def __init__(self, im_size):
        super().__init__()
        self.im_size = im_size
        feed_input = 5

        filt_dims = [32, 64, 128, 256]
        filt_const = 1

        self.to_enc = conv311(feed_input, 32 * filt_const)
        self.enc = nn.Sequential(ConvBlock(32 * filt_const, 64 * filt_const),
                                 ConvBlock(64 * filt_const, 128 * filt_const),
                                 SelfAttnBlock(128 * filt_const),
                                 ConvBlock(128 * filt_const, 256 * filt_const))

        self.res = nn.Sequential(
            ResidualBlock(256 * filt_const, 256 * filt_const),
            ResidualBlock(256 * filt_const, 256 * filt_const))

        self.dec = nn.Sequential(
            TransposeConvBlock(256 * filt_const, 128 * filt_const),
            SelfAttnBlock(128 * filt_const),
            TransposeConvBlock(128 * filt_const, 64 * filt_const),
            # SelfAttnBlock(64 * filt_const)
            TransposeConvBlock(64 * filt_const, 32 * filt_const),
        )

        self.from_dec = conv311(32 * filt_const, 3)
Ejemplo n.º 3
0
    def __init__(self, im_size, num_classes):
        super().__init__()
        # feed_input = 10
        feed_input = 8

        q = int(np.log2(im_size))
        filt_dims = [2**(12 - i) for i in range(q, 1, -1)]
        print("Discriminator Filters: ", filt_dims)

        self.from_rgb = conv311(feed_input, filt_dims[0])

        block = []
        for i in range(len(filt_dims) - 1):
            block.append(ConvBlock(filt_dims[i], filt_dims[i + 1]))
            if i != len(filt_dims) - 2:
                block.append(ResidualBlock(filt_dims[i + 1], filt_dims[i + 1]))
        block.append(ConvBlock(filt_dims[-1], filt_dims[-1]))

        self.down_sample = nn.Sequential(*block)

        self.conv_real = nn.Conv2d(filt_dims[-1],
                                   1,
                                   kernel_size=2,
                                   stride=1,
                                   padding=0)
        self.conv_class = nn.Conv2d(filt_dims[-1],
                                    num_classes,
                                    kernel_size=2,
                                    stride=1,
                                    padding=0)
        self.num_classes = num_classes
Ejemplo n.º 4
0
    def make_encoder(self):
        filt_dims = self.filt_dims

        enc = nn.ModuleList()
        for i_dim in range(len(filt_dims) - 1):
            enc.append([ConvBlock(filt_dims[i_dim], filt_dims[i_dim + 1])])

        self.enc = enc
        self.enc_res = ResidualBlock(filt_dims[-1], filt_dims[-1])

        self.enc_im_size = self.im_size // 2**len(enc)
Ejemplo n.º 5
0
    def make_decoder(self):
        filt_dims = self.filt_dims[::-1]
        self.dec_res = ResidualBlock(2 * filt_dims[-1], filt_dims[-1])

        dec = nn.ModuleList()
        for i_dim in range(len(filt_dims) - 1):
            dec.append([
                TransposeConvBlock(filt_dims[i_dim],
                                   TransposeConvBlock[i_dim + 1])
            ])

        self.dec = dec
        self.dec_im_size = self.im_size * 2**len(dec)
Ejemplo n.º 6
0
    def build_decoder(self):
        conv_repeat = 3
        resnet_repeat = 2
        cur_filts = self.encoded_input_filts
        decoder_block = []

        for _ in range(resnet_repeat):
            decoder_block.append(ResidualBlock(cur_filts, cur_filts))

        for _ in range(conv_repeat):
            decoder_block.append(TransposeConvBlock(cur_filts, cur_filts // 2))
            cur_filts = cur_filts // 2

        self.decoder = nn.Sequential(*decoder_block)
Ejemplo n.º 7
0
    def __init__(self, dev_id):
        super().__init__()
        self.dev_id = dev_id
        self.noise_dim = 50
        feed_input = 5

        filt_dims = [32, 64, 128, 256]
        filt_const = 2
        self.to_enc = conv311(feed_input, 32 * filt_const)
        self.e1 = ConvBlock(32 * filt_const, 64 * filt_const)
        self.e2 = ConvBlock(64 * filt_const, 128 * filt_const)
        self.e3 = ConvBlock(128 * filt_const, 256 * filt_const)
        # self.e3 = ConvBlock(128, 128) for attention change to 128

        self.res = nn.Sequential(
            ResidualBlock(256 * filt_const, 256 * filt_const),
            ResidualBlock(256 * filt_const, 256 * filt_const))

        self.d3 = TransposeConvBlock(256 * filt_const + self.noise_dim // 2,
                                     128 * filt_const)
        self.d2 = TransposeConvBlock(256 * filt_const, 64 * filt_const)
        self.d1 = TransposeConvBlock(128 * filt_const, 32 * filt_const)

        self.from_dec = conv311(32 * filt_const, 3)

        self.noise_feat = nn.Sequential(
            TransposeConvBlock(self.noise_dim,
                               self.noise_dim // 2,
                               k=2,
                               s=1,
                               p=1),
            TransposeConvBlock(
                self.noise_dim // 2,
                self.noise_dim // 2,
                k=2,
            ), TransposeConvBlock(self.noise_dim // 2, self.noise_dim // 2),
            TransposeConvBlock(self.noise_dim // 2, self.noise_dim // 2))
Ejemplo n.º 8
0
    def build_encoder_input(self):
        conv_filters = self.conv_filters
        conv_repeat = self.conv_repeat
        resnet_repeat = self.resnet_repeat

        encoder_block = []
        cur_filts = conv_filters
        for _ in range(conv_repeat):
            encoder_block.append(ConvBlock(cur_filts, cur_filts * 2))
            cur_filts = cur_filts * 2

        for _ in range(resnet_repeat):
            encoder_block.append(ResidualBlock(cur_filts, cur_filts))

        self.encoded_input_filts = cur_filts
        self.encode_input = nn.Sequential(*encoder_block)