Feaure fusion module between learning module and feature extractor module outputs: Args: learning_layer: output of learning module fe_layer: output of feature extracted module Returns: fusion_layer: output of feature fusion module
(learning_layer, fe_layer)
| 289 | return fe_layer4 |
| 290 | |
| 291 | def fusion_module(learning_layer, fe_layer): |
| 292 | """ |
| 293 | Feaure fusion module between learning module and feature extractor module outputs: |
| 294 | Args: |
| 295 | learning_layer: output of learning module |
| 296 | fe_layer: output of feature extracted module |
| 297 | Returns: |
| 298 | fusion_layer: output of feature fusion module |
| 299 | """ |
| 300 | fusion_layer1 = conv_block(learning_layer, |
| 301 | conv_type="conv", |
| 302 | filters=96, |
| 303 | kernel_size=(1, 1), |
| 304 | padding="same", |
| 305 | strides=(1, 1), |
| 306 | relu=True) |
| 307 | |
| 308 | fusion_layer2 = tf.keras.layers.UpSampling2D((4, 4))(fe_layer) |
| 309 | fusion_layer2 = tf.keras.layers.DepthwiseConv2D(kernel_size=(3, 3), |
| 310 | strides=(1, 1), |
| 311 | depth_multiplier=1, |
| 312 | padding="same")(fusion_layer2) |
| 313 | fusion_layer2 = tf.keras.layers.BatchNormalization()(fusion_layer2) |
| 314 | fusion_layer2 = tf.keras.activations.relu(fusion_layer2) |
| 315 | fusion_layer2 = tf.keras.layers.Conv2D(filters=96, |
| 316 | kernel_size=(1, 1), |
| 317 | strides=(1, 1), |
| 318 | padding="same", |
| 319 | activation=None)(fusion_layer2) |
| 320 | |
| 321 | fusion_layer = tf.keras.layers.add([fusion_layer1, fusion_layer2]) |
| 322 | fusion_layer = tf.keras.layers.BatchNormalization()(fusion_layer) |
| 323 | fusion_layer = tf.keras.activations.relu(fusion_layer) |
| 324 | |
| 325 | return fusion_layer |
| 326 | |
| 327 | def get_encoder(image_height, image_width): |
| 328 | """ |
no test coverage detected