Texture Enhancement Module Args: inputs: input to the tem module Returns: permute_2: output from the tem module
(inputs)
| 169 | return tf.keras.layers.concatenate(concat_list) |
| 170 | |
| 171 | def tem_block(inputs): |
| 172 | """ |
| 173 | Texture Enhancement Module |
| 174 | Args: |
| 175 | inputs: input to the tem module |
| 176 | Returns: |
| 177 | permute_2: output from the tem module |
| 178 | """ |
| 179 | conv_1 = tf.keras.layers.Conv2D(filters=256, |
| 180 | kernel_size=(3, 3), |
| 181 | padding="same", |
| 182 | name="conv_1")(inputs) |
| 183 | gap_1 = tf.keras.layers.GlobalAveragePooling2D(keepdims=True, |
| 184 | name="gap_1")(conv_1) |
| 185 | conv_2 = tf.keras.layers.Conv2D(filters=256, |
| 186 | kernel_size=(1, 1), |
| 187 | activation="relu", |
| 188 | padding="same", |
| 189 | name="conv_2")(gap_1) |
| 190 | conv_3 = tf.keras.layers.Conv2D(filters=256, |
| 191 | kernel_size=(1, 1), |
| 192 | activation="sigmoid", |
| 193 | padding="same", |
| 194 | name="conv_3")(conv_2) |
| 195 | mult_1 = tf.keras.layers.Multiply(name="mult_1")([conv_1, conv_3]) |
| 196 | add_1 = tf.keras.layers.Add(name="add_123")([conv_1, mult_1]) |
| 197 | |
| 198 | gap_2 = tf.keras.layers.GlobalAveragePooling2D(keepdims=True, |
| 199 | name="gap_2")(add_1) |
| 200 | cos_sim_1 = tf.keras.layers.Dot(axes=(3), |
| 201 | normalize=True, |
| 202 | name="cos_sim1")([gap_2, add_1]) |
| 203 | reshape_1 = tf.keras.layers.Flatten()(cos_sim_1) |
| 204 | transpose_1 = tf.keras.backend.transpose(reshape_1) |
| 205 | mat_mul_1 = tf.keras.backend.dot(transpose_1, |
| 206 | reshape_1) |
| 207 | |
| 208 | conv_4 = tf.keras.layers.Conv2D(filters=256, |
| 209 | kernel_size=(1, 1), |
| 210 | padding="same", |
| 211 | name="conv_4")(add_1) |
| 212 | permute_1 = tf.keras.layers.Permute((3, 1, 2), |
| 213 | name="permute_1")(conv_4) |
| 214 | reshape_2 = tf.keras.layers.Reshape((-1, |
| 215 | int(conv_4.shape[-2]) * int(conv_4.shape[-3])), |
| 216 | name="reshape_2")(permute_1) |
| 217 | mat_mul_2 = tf.keras.backend.dot(reshape_2, |
| 218 | mat_mul_1) |
| 219 | |
| 220 | reshape_3 = tf.keras.layers.Reshape((-1, |
| 221 | int(conv_4.shape[-2]), |
| 222 | int(conv_4.shape[-3])), name="reshape_3")(mat_mul_2) |
| 223 | permute_2 = tf.keras.layers.Permute((2, 3, 1), |
| 224 | name="permute_2")(reshape_3) |
| 225 | |
| 226 | return permute_2 |
| 227 | |
| 228 | def learning_module(input_layer): |