def encoder_layer(img_in, mask_in, filters, kernel_size, bottleneck=True): conv, mask = PConv2D(filters, kernel_size, strides=2, padding='same')([img_in, mask_in]) if bottleneck: conv = BatchNormalization(name='EncBN'+str(encoder_layer.counter))(conv, training=train_bn) conv = Activation('relu')(conv) encoder_layer.counter += 1 return conv, mask
def decoder_layer(img_in, mask_in, e_conv, e_mask, filters, kernel_size, bottleneck=True): up_img = UpSampling2D(size=(2,2))(img_in) up_mask = UpSampling2D(size=(2,2))(mask_in) concat_img = Concatenate(axis=3)([e_conv,up_img]) concat_mask = Concatenate(axis=3)([e_mask,up_mask]) conv, mask = PConv2D(filters, kernel_size, padding='same')([concat_img, concat_mask]) if bottleneck: conv = BatchNormalization()(conv) conv = LeakyReLU(alpha=0.2)(conv) return conv, mask
def decoder_layer(data_in, mask_in, e_conv, e_mask, filters, kernel_size, bn=True): up_data = UpSampling2D(size=(2, 2))(data_in) up_mask = UpSampling2D(size=(2, 2))(mask_in) concat_data = Concatenate(axis=3)([e_conv, up_data]) concat_mask = Concatenate(axis=3)([e_mask, up_mask]) conv, mask = PConv2D(filters, kernel_size, padding='same')([concat_data, concat_mask]) if bn: conv = BatchNormalization()(conv) conv = LeakyReLU(alpha=0.2)(conv) return conv, mask
def decoder_layer(img_in, mask_in, e_conv, e_mask, filters, kernel_size, bn=True): # up-sample and concatenate up_img = UpSampling2D(size=(2, 2))(img_in) up_mask = UpSampling2D(size=(2, 2))(mask_in) concat_img = Concatenate(axis=3)([e_conv, up_img]) concat_mask = Concatenate(axis=3)([e_mask, up_mask]) conv, mask = PConv2D(filters, kernel_size, padding='same')([concat_img, concat_mask]) # add batch normalization if desired if bn: conv = BatchNormalization()(conv) conv = LeakyReLU(alpha=0.2)(conv) return conv, mask
axes[2].imshow(masked_img) #plt.show() plt.savefig('masked_img_from_PConv_test.jpg') # Input images and masks input_img = Input(shape=( shape[0], shape[1], shape[2], )) input_mask = Input(shape=( shape[0], shape[1], shape[2], )) output_img, output_mask1 = PConv2D(8, kernel_size=(7, 7), strides=(2, 2))([input_img, input_mask]) output_img, output_mask2 = PConv2D(16, kernel_size=(5, 5), strides=(2, 2))([output_img, output_mask1]) output_img, output_mask3 = PConv2D(32, kernel_size=(5, 5), strides=(2, 2))([output_img, output_mask2]) output_img, output_mask4 = PConv2D(64, kernel_size=(3, 3), strides=(2, 2))([output_img, output_mask3]) output_img, output_mask5 = PConv2D(64, kernel_size=(3, 3), strides=(2, 2))([output_img, output_mask4]) output_img, output_mask6 = PConv2D(64, kernel_size=(3, 3), strides=(2, 2))([output_img, output_mask5]) output_img, output_mask7 = PConv2D(64, kernel_size=(3, 3), strides=(2, 2))([output_img, output_mask6]) output_img, output_mask8 = PConv2D(64, kernel_size=(3, 3), strides=(2, 2))([output_img, output_mask7])