def decoder_baseline(label_sizes, nb_bits=12, data_shape=(1, 64, 64), depth=1, nb_filter=16, optimizer='adam'): n = nb_filter input = Input(shape=data_shape) x = sequential([ conv2d_block(n, depth=depth, pooling='max'), # 32x32 conv2d_block(2*n, depth=depth, pooling='max'), # 16x16 conv2d_block(4*n, depth=depth, pooling='max'), # 8x8 conv2d_block(8*n, depth=depth, pooling='max'), # 4x4 ])(input) outputs, losses = decoder_end_block(x, label_sizes, nb_bits, activation=lambda: ELU()) model = Model(input, list(outputs.values())) model.compile(optimizer, loss=list(losses.values()),) return model
def test_resnet(): n = 4 x = Input(shape=(1, 8, 8)) y = sequential([ conv2d_block(n), resnet(n) ])(x) model = Model(x, y) assert model.get_output_shape_for((None, 1, 8, 8)) == (None, n, 8, 8)
def test_conv2d_block(): x = Input(shape=(1, 8, 8)) y = sequential( conv2d_block(4) )(x) model = Model(x, y) assert model.get_output_shape_for((None, 1, 8, 8)) == (None, 4, 8, 8) x = Input(shape=(1, 8, 8)) y = sequential( conv2d_block(4, pooling='avg') )(x) model = Model(x, y) assert model.get_output_shape_for((None, 1, 8, 8)) == (None, 4, 4, 4) x = Input(shape=(1, 8, 8)) y = sequential( conv2d_block(4, up=True) )(x) model = Model(x, y) assert model.get_output_shape_for((None, 1, 8, 8)) == (None, 4, 16, 16)
def decoder_baseline(label_sizes, nb_bits=12, data_shape=(1, 64, 64), depth=1, nb_filter=16, optimizer='adam'): n = nb_filter input = Input(shape=data_shape) x = sequential([ conv2d_block(n, depth=depth, pooling='max'), # 32x32 conv2d_block(2 * n, depth=depth, pooling='max'), # 16x16 conv2d_block(4 * n, depth=depth, pooling='max'), # 8x8 conv2d_block(8 * n, depth=depth, pooling='max'), # 4x4 ])(input) outputs, losses = decoder_end_block(x, label_sizes, nb_bits, activation=lambda: ELU()) model = Model(input, list(outputs.values())) model.compile( optimizer, loss=list(losses.values()), ) return model
def simple_gan_generator(nb_units, z, labels, depth_map, tag3d, depth=2): n = nb_units depth_map_features = sequential([ conv2d_block(n), conv2d_block(2 * n), ])(depth_map) tag3d_features = sequential([ conv2d_block(n, subsample=2), conv2d_block(2 * n, subsample=2), ])(tag3d) x = sequential([ Dense(5 * n), BatchNormalization(mode=2), Activation('relu'), Dense(5 * n), BatchNormalization(mode=2), Activation('relu'), ])(concat([z, labels])) blur = InBounds(0, 1, clip=True)(Dense(1)(x)) x = sequential([ Dense(8 * 4 * 4 * n), Activation('relu'), BatchNormalization(mode=2), Reshape((8 * n, 4, 4)), ])(x) x = sequential([ conv2d_block(8 * n, filters=1, depth=1, up=True), # 4x4 -> 8x8 conv2d_block(8 * n, depth=depth, up=True), # 8x8 -> 16x16 ])(x) off_depth_map = sequential([ conv2d_block(2 * n, depth=depth), ])(concat([x, depth_map_features])) light = sequential([ conv2d_block(2 * n, depth=depth, up=True), # 16x16 -> 32x32 conv2d_block(n, depth=depth, up=True), # 32x32 -> 64x64 ])(off_depth_map) def get_light(x): return sequential([ conv2d_block(1, filters=1, batchnorm=False), GaussianBlur(sigma=4), InBounds(0, 1, clip=True), ])(x) light_sb = get_light(light) light_sw = get_light(light) light_t = get_light(light) background = sequential([ conv2d_block(2 * n, depth=depth, up=True), # 16x16 -> 32x32 conv2d_block(n, depth=depth, up=True), # 32x32 -> 64x64 conv2d_block(1, batchnorm=False), InBounds(-1, 1, clip=True), ])(off_depth_map) details = sequential([ conv2d_block(2 * n, depth=depth, up=True), # 16x16 -> 32x32 conv2d_block(n, depth=depth, up=True), # 32x32 -> 64x64 conv2d_block(1, depth=1, batchnorm=False), InBounds(-1, 1, clip=True) ])(concat(tag3d_features, off_depth_map)) return blur, [light_sb, light_sw, light_t], background, details
def get_light(x): return sequential([ conv2d_block(1, filters=1, batchnorm=False), GaussianBlur(sigma=4), InBounds(0, 1, clip=True), ])(x)
def simple_gan_generator(nb_units, z, labels, depth_map, tag3d, depth=2): n = nb_units depth_map_features = sequential([ conv2d_block(n), conv2d_block(2*n), ])(depth_map) tag3d_features = sequential([ conv2d_block(n, subsample=2), conv2d_block(2*n, subsample=2), ])(tag3d) x = sequential([ Dense(5*n), BatchNormalization(mode=2), Activation('relu'), Dense(5*n), BatchNormalization(mode=2), Activation('relu'), ])(concat([z, labels])) blur = InBounds(0, 1, clip=True)(Dense(1)(x)) x = sequential([ Dense(8*4*4*n), Activation('relu'), BatchNormalization(mode=2), Reshape((8*n, 4, 4)), ])(x) x = sequential([ conv2d_block(8*n, filters=1, depth=1, up=True), # 4x4 -> 8x8 conv2d_block(8*n, depth=depth, up=True), # 8x8 -> 16x16 ])(x) off_depth_map = sequential([ conv2d_block(2*n, depth=depth), ])(concat([x, depth_map_features])) light = sequential([ conv2d_block(2*n, depth=depth, up=True), # 16x16 -> 32x32 conv2d_block(n, depth=depth, up=True), # 32x32 -> 64x64 ])(off_depth_map) def get_light(x): return sequential([ conv2d_block(1, filters=1, batchnorm=False), GaussianBlur(sigma=4), InBounds(0, 1, clip=True), ])(x) light_sb = get_light(light) light_sw = get_light(light) light_t = get_light(light) background = sequential([ conv2d_block(2*n, depth=depth, up=True), # 16x16 -> 32x32 conv2d_block(n, depth=depth, up=True), # 32x32 -> 64x64 conv2d_block(1, batchnorm=False), InBounds(-1, 1, clip=True), ])(off_depth_map) details = sequential([ conv2d_block(2*n, depth=depth, up=True), # 16x16 -> 32x32 conv2d_block(n, depth=depth, up=True), # 32x32 -> 64x64 conv2d_block(1, depth=1, batchnorm=False), InBounds(-1, 1, clip=True) ])(concat(tag3d_features, off_depth_map)) return blur, [light_sb, light_sw, light_t], background, details