Ejemplo n.º 1
0
    def build_net(self):
        depth = self.depth
        input_img = tf.keras.layers.Input(shape=(128, 128, self.input_im))

        xs = Lambda(BaseNet.normalize)(input_img)

        x0 = Conv2D(depth, (7, 7), padding='same')(xs)
        x1 = Conv2D(depth, (5, 5), padding='same')(xs)
        x2 = Conv2D(depth, (3, 3), padding='same')(xs)
        x3 = Conv2D(depth, (1, 1), padding='same')(xs)

        m0 = BaseNet.res_block(x0, 3, depth)
        m1 = BaseNet.res_block(x1, 3, depth)
        m2 = BaseNet.res_block(x2, 3, depth)
        m3 = BaseNet.res_block(x3, 3, depth)

        x1 = Add()([x0, x1, x2, x3])
        x2 = Add()([m0, m1, m2, m3])

        x = Add()([x1, x2])

        x = Conv2D(depth * 9, (3, 3), padding='same')(x)

        x = Lambda(BaseNet.pixel_shuffle(3))(x)

        x = Conv2D(depth, (3, 3), padding='same')(x)
        x = Conv2D(depth, (1, 1), padding='same')(x)

        x = Conv2D(1, (1, 1), padding='same')(x)

        x = Lambda(BaseNet.denormalize)(x)

        return Model(input_img, x)
Ejemplo n.º 2
0
    def build_net(self):
        depth = self.depth
        input_img = tf.keras.layers.Input(shape=(128, 128, self.input_im))

        xs = tf.keras.layers.Lambda(BaseNet.normalize)(input_img)

        x0 = Conv2D(depth, (7, 7), padding='same')(xs)
        x1 = Conv2D(depth, (5, 5), padding='same')(xs)
        x2 = Conv2D(depth, (3, 3), padding='same')(xs)
        x3 = Conv2D(depth, (1, 1), padding='same')(xs)

        ss = Add()([x0, x1, x2, x3])

        x = Conv2D(depth * 9, (5, 5), padding='same')(ss)
        x = Lambda(BaseNet.pixel_shuffle(3))(x)
        x = Conv2D(depth * 4, (7, 7), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        s = Conv2D(depth * 9 * 4, (5, 5), padding='same')(ss)
        s = Lambda(BaseNet.pixel_shuffle(3))(s)
        s = Conv2D(depth * 4, (5, 5), padding='same')(s)
        x = Add()([s, x])

        x1 = x

        x = Conv2D(depth * 2, (5, 5), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        s = Conv2D(depth * 9 * 2, (5, 5), padding='same')(ss)
        s = Lambda(BaseNet.pixel_shuffle(3))(s)
        s = Conv2D(depth * 2, (5, 5), padding='same')(s)
        x = Add()([s, x])

        x2 = x

        x = Conv2D(depth * 1, (3, 3), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        s = Conv2D(depth * 9, (5, 5), padding='same')(ss)
        s = Lambda(BaseNet.pixel_shuffle(3))(s)
        s = Conv2D(depth, (5, 5), padding='same')(s)

        x1 = Conv2D(depth, (5, 5), padding='same')(x1)
        x2 = Conv2D(depth, (5, 5), padding='same')(x2)

        x = Add()([s, x, x1, x2])

        x = Conv2D(int(depth * 0.5), (3, 3), padding='same')(x)
        x = Conv2D(1, (3, 3), padding='same')(x)

        x = tf.keras.layers.Lambda(BaseNet.denormalize)(x)

        return Model(input_img, x)
Ejemplo n.º 3
0
    def build_net(self):
        depth = self.depth
        input_img = tf.keras.layers.Input(shape=(128, 128, self.input_im))
        x = Conv2D(depth * 9, (5, 5), padding='same')(input_img)
        x = Lambda(BaseNet.pixel_shuffle(3))(x)
        x = Conv2D(depth * 4, (7, 7), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        x1 = x

        x = Conv2D(depth * 9, (5, 5), padding='same')(x)
        x = Lambda(BaseNet.pixel_shuffle(3))(x)
        x = Conv2D(depth * 4, (7, 7), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        x = Conv2D(depth * 9, (5, 5), padding='same')(x)
        x = Lambda(BaseNet.pixel_shuffle(3))(x)
        x = Conv2D(depth * 4, (7, 7), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        x = Conv2D(depth * 4, (7, 7), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        x = Conv2D(depth * 4, (5, 5), padding='same')(x)
        x = MaxPooling2D((3, 3), padding='same')(x)
        x = Conv2D(depth * 4, (7, 7), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        x = Conv2D(depth * 4, (5, 5), padding='same')(x)
        x = MaxPooling2D((3, 3), padding='same')(x)
        x = Conv2D(depth * 4, (7, 7), padding='same')(x)
        x = Dropout(0.2)(x)
        x = LeakyReLU(0.2)(x)

        x = Add()([x, x1])

        x = Conv2D(int(depth * 0.5), (3, 3), padding='same')(x)
        x = Conv2D(1, (3, 3), padding='same')(x)

        return Model(input_img, x)
Ejemplo n.º 4
0
    def build_net(self):
        depth = self.depth
        input_img = tf.keras.layers.Input(shape=(128, 128, self.input_im))
        xs = tf.keras.layers.Lambda(BaseNet.normalize)(input_img)

        x_a = []
        for i in range(0, self.input_im, 2):
            x0 = tf.keras.layers.Conv2D(depth, (1, 1),
                                        padding='same')(xs[:, :, :, i:i + 1])
            x0 = tf.keras.layers.Conv2D(depth, (1, 1), padding='same')(x0)
            x0 = tf.keras.layers.LeakyReLU(alpha=0.2)(x0)
            x0 = tf.keras.layers.Conv2D(depth, (1, 1), padding='same')(x0)
            x0 = tf.keras.layers.LeakyReLU(alpha=0.4)(x0)

            x1 = tf.keras.layers.Conv2D(depth, (1, 1),
                                        padding='same')(xs[:, :, :,
                                                           i + 1:i + 2])
            x1 = tf.keras.layers.Conv2D(depth, (1, 1), padding='same')(x1)
            x1 = tf.keras.layers.LeakyReLU(alpha=0.2)(x1)
            x1 = tf.keras.layers.Conv2D(depth, (1, 1), padding='same')(x1)
            x1 = tf.keras.layers.LeakyReLU(alpha=0.4)(x1)

            x = tf.keras.layers.Add()([x0, x1])

            x = tf.keras.layers.Conv2D(depth, (3, 3), padding='same')(x)
            x = tf.keras.layers.LeakyReLU(alpha=0.2)(x)

            x_a.append(x)

        x_l = []
        for i in range(len(x_a) - 1):
            print(np.shape(x_a[i:i + 1][:]))
            x0 = tf.keras.layers.Add()(x_a[i:i + 2])
            x0 = tf.keras.layers.Conv2D(depth, (1, 1), padding='same')(x0)

            x0 = tf.keras.layers.Conv2D(depth * 9, (1, 1), padding='same')(x0)
            x0 = tf.keras.layers.Lambda(BaseNet.pixel_shuffle(3))(x0)

            x0 = tf.keras.layers.Conv2D(depth, (1, 1), padding='same')(x0)
            x0 = tf.keras.layers.LeakyReLU(alpha=0.2)(x0)
            x_l.append(x0)

        x = tf.keras.layers.Add()(x_l)

        x = tf.keras.layers.Conv2D(depth, (2, 2), padding='same')(x)
        x = tf.keras.layers.LeakyReLU(alpha=0.2)(x)
        x = tf.keras.layers.Conv2D(depth, (1, 1), padding='same')(x)
        x = tf.keras.layers.Conv2D(depth, (1, 1), padding='same')(x)
        x = tf.keras.layers.Conv2D(1, (1, 1), padding='same')(x)

        x = tf.keras.layers.Lambda(BaseNet.denormalize)(x)

        autoencoder = Model(input_img, x)

        return autoencoder
Ejemplo n.º 5
0
    def build_net(self):
        depth = self.depth
        input_img = tf.keras.layers.Input(shape=(128, 128, self.input_im))
        xs = tf.keras.layers.Lambda(BaseNet.normalize)(input_img)

        m = tf.keras.layers.Conv2D(depth * 4, 3, padding='same')(xs)
        for j in range(self.num_rez_block):
            m = BaseNet.res_block(m, 3, depth * 4)
        m = tf.keras.layers.Conv2D(3 * 3**2, 3, padding='same')(m)
        m = tf.keras.layers.Lambda(BaseNet.pixel_shuffle(3))(m)

        # skip branch
        s = tf.keras.layers.Conv2D(3 * 3**2, 5, padding='same')(xs)
        s = tf.keras.layers.Lambda(BaseNet.pixel_shuffle(3))(s)

        x = tf.keras.layers.Add()([m, s])

        x = tf.keras.layers.Conv2D(depth, (3, 3), padding='same')(x)
        x = tf.keras.layers.Conv2D(1, (1, 1), padding='same')(x)
        x = tf.keras.layers.Lambda(BaseNet.denormalize)(x)

        return Model(input_img, x)
Ejemplo n.º 6
0
    def build_net(self):
        depth = self.depth
        input_img = tf.keras.layers.Input(shape=(128, 128, self.input_im))
        xs = tf.keras.layers.Lambda(BaseNet.normalize)(input_img)

        x0 = Conv2D(depth, (7, 7), padding='same')(xs)
        x1 = Conv2D(depth, (5, 5), padding='same')(xs)
        x2 = Conv2D(depth, (3, 3), padding='same')(xs)
        x3 = Conv2D(depth, (1, 1), padding='same')(xs)

        x = Add()([x0, x1, x2, x3])
        x = Conv2D(depth * 9, (3, 3), padding='same')(x)

        x = Lambda(BaseNet.pixel_shuffle(3))(x)

        x = Conv2D(depth, (3, 3), padding='same')(x)
        x = Conv2D(depth, (1, 1), padding='same')(x)

        x = Conv2D(1, (1, 1), padding='same')(x)

        x = tf.keras.layers.Lambda(BaseNet.denormalize)(x)

        return Model(input_img, x)
Ejemplo n.º 7
0
    def build_net(self):
        depth = self.depth
        input_img = tf.keras.layers.Input(shape=(128, 128, self.input_im))
        xs = tf.keras.layers.Lambda(BaseNet.normalize)(input_img)

        x_a = []
        for i in range(0, self.input_im):
            m = tf.keras.layers.Conv2D(depth, 3, padding='same')(xs[:, :, :,
                                                                    i:i + 1])

            for i in range(self.num_rez_block):
                m = BaseNet.res_block(m, 3, depth)

            x0 = tf.keras.layers.Conv2D(depth, (3, 3), padding='same')(m)
            x0 = tf.keras.layers.Conv2D(depth * 4, (1, 1), padding='same')(x0)
            x0 = tf.keras.layers.Conv2D(depth * 9, (1, 1), padding='same')(x0)
            x0 = tf.keras.layers.Lambda(BaseNet.pixel_shuffle(3))(x0)

            x_0 = x0

            x1 = tf.keras.layers.Conv2D(depth, (3, 3), padding='same')(m)
            x1 = tf.keras.layers.Conv2D(depth * 4, (1, 1), padding='same')(x1)
            x1 = tf.keras.layers.Conv2D(depth * 9, (1, 1), padding='same')(x1)
            x1 = tf.keras.layers.Lambda(BaseNet.pixel_shuffle(3))(x1)

            x0 = tf.keras.layers.add([x1, x0])
            x0 = tf.keras.layers.Conv2D(depth * 2, (1, 1), padding='same')(x0)
            x0 = tf.keras.layers.LeakyReLU(alpha=0.2)(x0)

            x1 = tf.keras.layers.add([x_0, x1])
            x1 = tf.keras.layers.Conv2D(depth * 2, (1, 1), padding='same')(x1)
            x1 = tf.keras.layers.LeakyReLU(alpha=0.2)(x1)

            x3 = tf.keras.layers.add([x0, x1])

            x = tf.keras.layers.Conv2D(depth, (3, 3), padding='same')(x3)
            x = tf.keras.layers.LeakyReLU(alpha=0.2)(x)
            x = tf.keras.layers.Conv2D(depth * 2, (3, 3), padding='same')(x)

            x = tf.keras.layers.add([x, x3])

            x_a.append(x)

        x_l = []
        for i in range(len(x_a) - 1):
            x0 = tf.keras.layers.concatenate(x_a[i:i + 2])
            x0 = tf.keras.layers.Conv2D(depth * 4, (3, 3), padding='same')(x0)
            x0 = tf.keras.layers.Conv2D(depth * 2, (1, 1), padding='same')(x0)
            x0 = tf.keras.layers.LeakyReLU(alpha=0.2)(x0)
            x_l.append(x0)

        x = tf.keras.layers.add(x_l)

        encoded = tf.keras.layers.Conv2D(depth * 4, (2, 2), padding='same')(x)
        x = tf.keras.layers.LeakyReLU(alpha=0.2)(encoded)
        x = tf.keras.layers.Conv2D(depth * 2, (1, 1), padding='same')(x)
        x = tf.keras.layers.Conv2D(depth, (5, 5), padding='same')(x)
        x = tf.keras.layers.Conv2D(depth, (3, 3), padding='same')(x)
        x = tf.keras.layers.Conv2D(1, (1, 1), padding='same')(x)
        x = tf.keras.layers.Conv2D(1, (1, 1),
                                   padding='same',
                                   activation='sigmoid')(x)

        x = tf.keras.layers.Lambda(BaseNet.denormalize)(x)

        autoencoder = Model(input_img, x)

        return autoencoder