Professional Documents
Culture Documents
Style Transfer
Style Transfer
In [1]:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import time
import os
from PIL import Image
from tensorflow.keras.preprocessing.image import load_img, img_to_array
Image Preprocessing
In [3]:
def preprocess_content_img(image):
image = img_to_array(image)
height, width, _ = image.shape
aspect_ratio = width / height
new_width = int(aspect_ratio * 480)
image = tf.image.resize(image, (480, new_width))
image = image/255.
return image
In [4]:
def preprocess_sytle_img(image):
image = img_to_array(image)
image = image/255.
return image
In [5]:
content_img = preprocess_content_img(content_img)
style_img = preprocess_sytle_img(style_img)
Model: "efficientnetb0"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━
━━━━━━━━━━━━━━━━━━┓
┃ Layer (type) ┃ Output Shape ┃ Param # ┃ Connected
to ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━
━━━━━━━━━━━━━━━━━━┩
│ input_layer (InputLayer) │ (None, None, None, 3) │ 0 │ -
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ rescaling (Rescaling) │ (None, None, None, 3) │ 0 │ input_lay
er[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ normalization (Normalization) │ (None, None, None, 3) │ 7 │ rescaling
[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ rescaling_1 (Rescaling) │ (None, None, None, 3) │ 0 │ normaliza
tion[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ stem_conv_pad (ZeroPadding2D) │ (None, None, None, 3) │ 0 │ rescaling
_1[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ stem_conv (Conv2D) │ (None, None, None, 32) │ 864 │ stem_conv
_pad[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ stem_bn (BatchNormalization) │ (None, None, None, 32) │ 128 │ stem_conv
[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ stem_activation (Activation) │ (None, None, None, 32) │ 0 │ stem_bn[0
][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_dwconv │ (None, None, None, 32) │ 288 │ stem_acti
vation[0][0] │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_bn │ (None, None, None, 32) │ 128 │ block1a_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_activation │ (None, None, None, 32) │ 0 │ block1a_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_se_squeeze │ (None, 32) │ 0 │ block1a_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_se_reshape (Reshape) │ (None, 1, 1, 32) │ 0 │ block1a_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_se_reduce (Conv2D) │ (None, 1, 1, 8) │ 264 │ block1a_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_se_expand (Conv2D) │ (None, 1, 1, 32) │ 288 │ block1a_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_se_excite (Multiply) │ (None, None, None, 32) │ 0 │ block1a_a
ctivation[0][0], │
│ │ │ │ block1a_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_project_conv (Conv2D) │ (None, None, None, 16) │ 512 │ block1a_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block1a_project_bn │ (None, None, None, 16) │ 64 │ block1a_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_expand_conv (Conv2D) │ (None, None, None, 96) │ 1,536 │ block1a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_expand_bn │ (None, None, None, 96) │ 384 │ block2a_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_expand_activation │ (None, None, None, 96) │ 0 │ block2a_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_dwconv_pad │ (None, None, None, 96) │ 0 │ block2a_e
xpand_activation… │
│ (ZeroPadding2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_dwconv │ (None, None, None, 96) │ 864 │ block2a_d
wconv_pad[0][0] │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_bn │ (None, None, None, 96) │ 384 │ block2a_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_activation │ (None, None, None, 96) │ 0 │ block2a_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_se_squeeze │ (None, 96) │ 0 │ block2a_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_se_reshape (Reshape) │ (None, 1, 1, 96) │ 0 │ block2a_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_se_reduce (Conv2D) │ (None, 1, 1, 4) │ 388 │ block2a_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_se_expand (Conv2D) │ (None, 1, 1, 96) │ 480 │ block2a_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_se_excite (Multiply) │ (None, None, None, 96) │ 0 │ block2a_a
ctivation[0][0], │
│ │ │ │ block2a_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_project_conv (Conv2D) │ (None, None, None, 24) │ 2,304 │ block2a_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2a_project_bn │ (None, None, None, 24) │ 96 │ block2a_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_expand_conv (Conv2D) │ (None, None, None, 144) │ 3,456 │ block2a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_expand_bn │ (None, None, None, 144) │ 576 │ block2b_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_expand_activation │ (None, None, None, 144) │ 0 │ block2b_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_dwconv │ (None, None, None, 144) │ 1,296 │ block2b_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_bn │ (None, None, None, 144) │ 576 │ block2b_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_activation │ (None, None, None, 144) │ 0 │ block2b_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_se_squeeze │ (None, 144) │ 0 │ block2b_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_se_reshape (Reshape) │ (None, 1, 1, 144) │ 0 │ block2b_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_se_reduce (Conv2D) │ (None, 1, 1, 6) │ 870 │ block2b_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_se_expand (Conv2D) │ (None, 1, 1, 144) │ 1,008 │ block2b_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
──────────────────┤
│ block2b_se_excite (Multiply) │ (None, None, None, 144) │ 0 │ block2b_a
ctivation[0][0], │
│ │ │ │ block2b_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_project_conv (Conv2D) │ (None, None, None, 24) │ 3,456 │ block2b_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_project_bn │ (None, None, None, 24) │ 96 │ block2b_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_drop (Dropout) │ (None, None, None, 24) │ 0 │ block2b_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block2b_add (Add) │ (None, None, None, 24) │ 0 │ block2b_d
rop[0][0], │
│ │ │ │ block2a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_expand_conv (Conv2D) │ (None, None, None, 144) │ 3,456 │ block2b_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_expand_bn │ (None, None, None, 144) │ 576 │ block3a_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_expand_activation │ (None, None, None, 144) │ 0 │ block3a_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_dwconv_pad │ (None, None, None, 144) │ 0 │ block3a_e
xpand_activation… │
│ (ZeroPadding2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_dwconv │ (None, None, None, 144) │ 3,600 │ block3a_d
wconv_pad[0][0] │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_bn │ (None, None, None, 144) │ 576 │ block3a_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_activation │ (None, None, None, 144) │ 0 │ block3a_b
n[0][0] │
│ (Activation) │ │ │
│
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_se_squeeze │ (None, 144) │ 0 │ block3a_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_se_reshape (Reshape) │ (None, 1, 1, 144) │ 0 │ block3a_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_se_reduce (Conv2D) │ (None, 1, 1, 6) │ 870 │ block3a_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_se_expand (Conv2D) │ (None, 1, 1, 144) │ 1,008 │ block3a_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_se_excite (Multiply) │ (None, None, None, 144) │ 0 │ block3a_a
ctivation[0][0], │
│ │ │ │ block3a_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_project_conv (Conv2D) │ (None, None, None, 40) │ 5,760 │ block3a_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3a_project_bn │ (None, None, None, 40) │ 160 │ block3a_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_expand_conv (Conv2D) │ (None, None, None, 240) │ 9,600 │ block3a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_expand_bn │ (None, None, None, 240) │ 960 │ block3b_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_expand_activation │ (None, None, None, 240) │ 0 │ block3b_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_dwconv │ (None, None, None, 240) │ 6,000 │ block3b_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_bn │ (None, None, None, 240) │ 960 │ block3b_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_activation │ (None, None, None, 240) │ 0 │ block3b_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_se_squeeze │ (None, 240) │ 0 │ block3b_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_se_reshape (Reshape) │ (None, 1, 1, 240) │ 0 │ block3b_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_se_reduce (Conv2D) │ (None, 1, 1, 10) │ 2,410 │ block3b_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_se_expand (Conv2D) │ (None, 1, 1, 240) │ 2,640 │ block3b_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_se_excite (Multiply) │ (None, None, None, 240) │ 0 │ block3b_a
ctivation[0][0], │
│ │ │ │ block3b_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_project_conv (Conv2D) │ (None, None, None, 40) │ 9,600 │ block3b_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_project_bn │ (None, None, None, 40) │ 160 │ block3b_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_drop (Dropout) │ (None, None, None, 40) │ 0 │ block3b_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block3b_add (Add) │ (None, None, None, 40) │ 0 │ block3b_d
rop[0][0], │
│ │ │ │ block3a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_expand_conv (Conv2D) │ (None, None, None, 240) │ 9,600 │ block3b_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_expand_bn │ (None, None, None, 240) │ 960 │ block4a_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_expand_activation │ (None, None, None, 240) │ 0 │ block4a_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_dwconv_pad │ (None, None, None, 240) │ 0 │ block4a_e
xpand_activation… │
│ (ZeroPadding2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_dwconv │ (None, None, None, 240) │ 2,160 │ block4a_d
wconv_pad[0][0] │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_bn │ (None, None, None, 240) │ 960 │ block4a_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_activation │ (None, None, None, 240) │ 0 │ block4a_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_se_squeeze │ (None, 240) │ 0 │ block4a_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_se_reshape (Reshape) │ (None, 1, 1, 240) │ 0 │ block4a_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_se_reduce (Conv2D) │ (None, 1, 1, 10) │ 2,410 │ block4a_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_se_expand (Conv2D) │ (None, 1, 1, 240) │ 2,640 │ block4a_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_se_excite (Multiply) │ (None, None, None, 240) │ 0 │ block4a_a
ctivation[0][0], │
│ │ │ │ block4a_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_project_conv (Conv2D) │ (None, None, None, 80) │ 19,200 │ block4a_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4a_project_bn │ (None, None, None, 80) │ 320 │ block4a_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_expand_conv (Conv2D) │ (None, None, None, 480) │ 38,400 │ block4a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_expand_bn │ (None, None, None, 480) │ 1,920 │ block4b_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_expand_activation │ (None, None, None, 480) │ 0 │ block4b_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_dwconv │ (None, None, None, 480) │ 4,320 │ block4b_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_bn │ (None, None, None, 480) │ 1,920 │ block4b_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_activation │ (None, None, None, 480) │ 0 │ block4b_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_se_squeeze │ (None, 480) │ 0 │ block4b_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_se_reshape (Reshape) │ (None, 1, 1, 480) │ 0 │ block4b_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_se_reduce (Conv2D) │ (None, 1, 1, 20) │ 9,620 │ block4b_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_se_expand (Conv2D) │ (None, 1, 1, 480) │ 10,080 │ block4b_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_se_excite (Multiply) │ (None, None, None, 480) │ 0 │ block4b_a
ctivation[0][0], │
│ │ │ │ block4b_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_project_conv (Conv2D) │ (None, None, None, 80) │ 38,400 │ block4b_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_project_bn │ (None, None, None, 80) │ 320 │ block4b_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_drop (Dropout) │ (None, None, None, 80) │ 0 │ block4b_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4b_add (Add) │ (None, None, None, 80) │ 0 │ block4b_d
rop[0][0], │
│ │ │ │ block4a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_expand_conv (Conv2D) │ (None, None, None, 480) │ 38,400 │ block4b_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_expand_bn │ (None, None, None, 480) │ 1,920 │ block4c_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_expand_activation │ (None, None, None, 480) │ 0 │ block4c_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_dwconv │ (None, None, None, 480) │ 4,320 │ block4c_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_bn │ (None, None, None, 480) │ 1,920 │ block4c_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_activation │ (None, None, None, 480) │ 0 │ block4c_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_se_squeeze │ (None, 480) │ 0 │ block4c_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_se_reshape (Reshape) │ (None, 1, 1, 480) │ 0 │ block4c_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_se_reduce (Conv2D) │ (None, 1, 1, 20) │ 9,620 │ block4c_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_se_expand (Conv2D) │ (None, 1, 1, 480) │ 10,080 │ block4c_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_se_excite (Multiply) │ (None, None, None, 480) │ 0 │ block4c_a
ctivation[0][0], │
│ │ │ │ block4c_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_project_conv (Conv2D) │ (None, None, None, 80) │ 38,400 │ block4c_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_project_bn │ (None, None, None, 80) │ 320 │ block4c_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_drop (Dropout) │ (None, None, None, 80) │ 0 │ block4c_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block4c_add (Add) │ (None, None, None, 80) │ 0 │ block4c_d
rop[0][0], │
│ │ │ │ block4b_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_expand_conv (Conv2D) │ (None, None, None, 480) │ 38,400 │ block4c_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_expand_bn │ (None, None, None, 480) │ 1,920 │ block5a_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_expand_activation │ (None, None, None, 480) │ 0 │ block5a_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_dwconv │ (None, None, None, 480) │ 12,000 │ block5a_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_bn │ (None, None, None, 480) │ 1,920 │ block5a_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_activation │ (None, None, None, 480) │ 0 │ block5a_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_se_squeeze │ (None, 480) │ 0 │ block5a_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_se_reshape (Reshape) │ (None, 1, 1, 480) │ 0 │ block5a_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_se_reduce (Conv2D) │ (None, 1, 1, 20) │ 9,620 │ block5a_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_se_expand (Conv2D) │ (None, 1, 1, 480) │ 10,080 │ block5a_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_se_excite (Multiply) │ (None, None, None, 480) │ 0 │ block5a_a
ctivation[0][0], │
│ │ │ │ block5a_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_project_conv (Conv2D) │ (None, None, None, 112) │ 53,760 │ block5a_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5a_project_bn │ (None, None, None, 112) │ 448 │ block5a_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_expand_conv (Conv2D) │ (None, None, None, 672) │ 75,264 │ block5a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_expand_bn │ (None, None, None, 672) │ 2,688 │ block5b_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_expand_activation │ (None, None, None, 672) │ 0 │ block5b_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_dwconv │ (None, None, None, 672) │ 16,800 │ block5b_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_bn │ (None, None, None, 672) │ 2,688 │ block5b_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_activation │ (None, None, None, 672) │ 0 │ block5b_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_se_squeeze │ (None, 672) │ 0 │ block5b_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_se_reshape (Reshape) │ (None, 1, 1, 672) │ 0 │ block5b_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_se_reduce (Conv2D) │ (None, 1, 1, 28) │ 18,844 │ block5b_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_se_expand (Conv2D) │ (None, 1, 1, 672) │ 19,488 │ block5b_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_se_excite (Multiply) │ (None, None, None, 672) │ 0 │ block5b_a
ctivation[0][0], │
│ │ │ │ block5b_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_project_conv (Conv2D) │ (None, None, None, 112) │ 75,264 │ block5b_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_project_bn │ (None, None, None, 112) │ 448 │ block5b_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_drop (Dropout) │ (None, None, None, 112) │ 0 │ block5b_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5b_add (Add) │ (None, None, None, 112) │ 0 │ block5b_d
rop[0][0], │
│ │ │ │ block5a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_expand_conv (Conv2D) │ (None, None, None, 672) │ 75,264 │ block5b_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_expand_bn │ (None, None, None, 672) │ 2,688 │ block5c_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_expand_activation │ (None, None, None, 672) │ 0 │ block5c_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_dwconv │ (None, None, None, 672) │ 16,800 │ block5c_e
xpand_activation… │
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_bn │ (None, None, None, 672) │ 2,688 │ block5c_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_activation │ (None, None, None, 672) │ 0 │ block5c_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_se_squeeze │ (None, 672) │ 0 │ block5c_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_se_reshape (Reshape) │ (None, 1, 1, 672) │ 0 │ block5c_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_se_reduce (Conv2D) │ (None, 1, 1, 28) │ 18,844 │ block5c_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_se_expand (Conv2D) │ (None, 1, 1, 672) │ 19,488 │ block5c_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_se_excite (Multiply) │ (None, None, None, 672) │ 0 │ block5c_a
ctivation[0][0], │
│ │ │ │ block5c_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_project_conv (Conv2D) │ (None, None, None, 112) │ 75,264 │ block5c_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_project_bn │ (None, None, None, 112) │ 448 │ block5c_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_drop (Dropout) │ (None, None, None, 112) │ 0 │ block5c_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block5c_add (Add) │ (None, None, None, 112) │ 0 │ block5c_d
rop[0][0], │
│ │ │ │ block5b_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_expand_conv (Conv2D) │ (None, None, None, 672) │ 75,264 │ block5c_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_expand_bn │ (None, None, None, 672) │ 2,688 │ block6a_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_expand_activation │ (None, None, None, 672) │ 0 │ block6a_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_dwconv_pad │ (None, None, None, 672) │ 0 │ block6a_e
xpand_activation… │
│ (ZeroPadding2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_dwconv │ (None, None, None, 672) │ 16,800 │ block6a_d
wconv_pad[0][0] │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_bn │ (None, None, None, 672) │ 2,688 │ block6a_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_activation │ (None, None, None, 672) │ 0 │ block6a_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_se_squeeze │ (None, 672) │ 0 │ block6a_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_se_reshape (Reshape) │ (None, 1, 1, 672) │ 0 │ block6a_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_se_reduce (Conv2D) │ (None, 1, 1, 28) │ 18,844 │ block6a_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_se_expand (Conv2D) │ (None, 1, 1, 672) │ 19,488 │ block6a_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_se_excite (Multiply) │ (None, None, None, 672) │ 0 │ block6a_a
ctivation[0][0], │
│ │ │ │ block6a_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_project_conv (Conv2D) │ (None, None, None, 192) │ 129,024 │ block6a_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6a_project_bn │ (None, None, None, 192) │ 768 │ block6a_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_expand_conv (Conv2D) │ (None, None, None, 1152) │ 221,184 │ block6a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_expand_bn │ (None, None, None, 1152) │ 4,608 │ block6b_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_expand_activation │ (None, None, None, 1152) │ 0 │ block6b_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_dwconv │ (None, None, None, 1152) │ 28,800 │ block6b_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_bn │ (None, None, None, 1152) │ 4,608 │ block6b_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_activation │ (None, None, None, 1152) │ 0 │ block6b_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_se_squeeze │ (None, 1152) │ 0 │ block6b_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_se_reshape (Reshape) │ (None, 1, 1, 1152) │ 0 │ block6b_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_se_reduce (Conv2D) │ (None, 1, 1, 48) │ 55,344 │ block6b_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_se_expand (Conv2D) │ (None, 1, 1, 1152) │ 56,448 │ block6b_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_se_excite (Multiply) │ (None, None, None, 1152) │ 0 │ block6b_a
ctivation[0][0], │
│ │ │ │ block6b_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_project_conv (Conv2D) │ (None, None, None, 192) │ 221,184 │ block6b_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_project_bn │ (None, None, None, 192) │ 768 │ block6b_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_drop (Dropout) │ (None, None, None, 192) │ 0 │ block6b_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6b_add (Add) │ (None, None, None, 192) │ 0 │ block6b_d
rop[0][0], │
│ │ │ │ block6a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_expand_conv (Conv2D) │ (None, None, None, 1152) │ 221,184 │ block6b_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_expand_bn │ (None, None, None, 1152) │ 4,608 │ block6c_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_expand_activation │ (None, None, None, 1152) │ 0 │ block6c_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_dwconv │ (None, None, None, 1152) │ 28,800 │ block6c_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_bn │ (None, None, None, 1152) │ 4,608 │ block6c_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_activation │ (None, None, None, 1152) │ 0 │ block6c_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_se_squeeze │ (None, 1152) │ 0 │ block6c_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_se_reshape (Reshape) │ (None, 1, 1, 1152) │ 0 │ block6c_s
e_squeeze[0][0] │
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_se_reduce (Conv2D) │ (None, 1, 1, 48) │ 55,344 │ block6c_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_se_expand (Conv2D) │ (None, 1, 1, 1152) │ 56,448 │ block6c_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_se_excite (Multiply) │ (None, None, None, 1152) │ 0 │ block6c_a
ctivation[0][0], │
│ │ │ │ block6c_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_project_conv (Conv2D) │ (None, None, None, 192) │ 221,184 │ block6c_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_project_bn │ (None, None, None, 192) │ 768 │ block6c_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_drop (Dropout) │ (None, None, None, 192) │ 0 │ block6c_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6c_add (Add) │ (None, None, None, 192) │ 0 │ block6c_d
rop[0][0], │
│ │ │ │ block6b_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_expand_conv (Conv2D) │ (None, None, None, 1152) │ 221,184 │ block6c_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_expand_bn │ (None, None, None, 1152) │ 4,608 │ block6d_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_expand_activation │ (None, None, None, 1152) │ 0 │ block6d_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_dwconv │ (None, None, None, 1152) │ 28,800 │ block6d_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_bn │ (None, None, None, 1152) │ 4,608 │ block6d_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_activation │ (None, None, None, 1152) │ 0 │ block6d_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_se_squeeze │ (None, 1152) │ 0 │ block6d_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_se_reshape (Reshape) │ (None, 1, 1, 1152) │ 0 │ block6d_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_se_reduce (Conv2D) │ (None, 1, 1, 48) │ 55,344 │ block6d_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_se_expand (Conv2D) │ (None, 1, 1, 1152) │ 56,448 │ block6d_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_se_excite (Multiply) │ (None, None, None, 1152) │ 0 │ block6d_a
ctivation[0][0], │
│ │ │ │ block6d_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_project_conv (Conv2D) │ (None, None, None, 192) │ 221,184 │ block6d_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_project_bn │ (None, None, None, 192) │ 768 │ block6d_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_drop (Dropout) │ (None, None, None, 192) │ 0 │ block6d_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block6d_add (Add) │ (None, None, None, 192) │ 0 │ block6d_d
rop[0][0], │
│ │ │ │ block6c_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_expand_conv (Conv2D) │ (None, None, None, 1152) │ 221,184 │ block6d_a
dd[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_expand_bn │ (None, None, None, 1152) │ 4,608 │ block7a_e
xpand_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_expand_activation │ (None, None, None, 1152) │ 0 │ block7a_e
xpand_bn[0][0] │
│ (Activation) │ │ │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_dwconv │ (None, None, None, 1152) │ 10,368 │ block7a_e
xpand_activation… │
│ (DepthwiseConv2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_bn │ (None, None, None, 1152) │ 4,608 │ block7a_d
wconv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_activation │ (None, None, None, 1152) │ 0 │ block7a_b
n[0][0] │
│ (Activation) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_se_squeeze │ (None, 1152) │ 0 │ block7a_a
ctivation[0][0] │
│ (GlobalAveragePooling2D) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_se_reshape (Reshape) │ (None, 1, 1, 1152) │ 0 │ block7a_s
e_squeeze[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_se_reduce (Conv2D) │ (None, 1, 1, 48) │ 55,344 │ block7a_s
e_reshape[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_se_expand (Conv2D) │ (None, 1, 1, 1152) │ 56,448 │ block7a_s
e_reduce[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_se_excite (Multiply) │ (None, None, None, 1152) │ 0 │ block7a_a
ctivation[0][0], │
│ │ │ │ block7a_s
e_expand[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_project_conv (Conv2D) │ (None, None, None, 320) │ 368,640 │ block7a_s
e_excite[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ block7a_project_bn │ (None, None, None, 320) │ 1,280 │ block7a_p
roject_conv[0][0] │
│ (BatchNormalization) │ │ │
│
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ top_conv (Conv2D) │ (None, None, None, 1280) │ 409,600 │ block7a_p
roject_bn[0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ top_bn (BatchNormalization) │ (None, None, None, 1280) │ 5,120 │ top_conv[
0][0] │
├───────────────────────────────┼───────────────────────────┼─────────────────┼──────────
──────────────────┤
│ top_activation (Activation) │ (None, None, None, 1280) │ 0 │ top_bn[0]
│ top_activation (Activation) │ (None, None, None, 1280) │ 0 │ top_bn[0]
[0] │
└───────────────────────────────┴───────────────────────────┴─────────────────┴──────────
──────────────────┘
In [9]:
style_layer_names = ['block1a_activation',
'block2a_activation',
'block2b_activation',
'block3a_activation',
'block3b_activation',
'block4a_activation',
'block4b_activation',
]
num_style_layers = len(style_layer_names)
content_layer_name = ['block5a_activation']
In [10]:
def get_model(base_model, style_layer_names, content_layer_names):
outputs = []
for name in style_layer_names:
outputs.append(base_model.get_layer(name).output)
for name in content_layer_names:
outputs.append(base_model.get_layer(name).output)
model = tf.keras.models.Model(inputs=base_model.input, outputs=outputs)
model.trainable = False
return model
model = get_model(base_model_effnet, style_layer_names, content_layer_name)
In [11]:
optimizer = tf.keras.optimizers.Adam(learning_rate=0.02)
def gram_matrix(input_tensor):
channels = int(input_tensor.shape[-1])
a = tf.reshape(input_tensor, [-1, channels])
gram = tf.matmul(a, a, transpose_a=True)
return gram / tf.cast(tf.shape(input_tensor)[0]*tf.shape(input_tensor)[1]*tf.shape(i
nput_tensor)[2], tf.float32)
num_epochs = 10
steps_per_epoch = 100
start = time.time()
for epoch in range(num_epochs):
print("Epoch {} /{} ".format(epoch+1, num_epochs))
for step in range(steps_per_epoch):
train_step(image, model, optimizer, target_style_outputs, target_content_output)
plt.figure(figsize=(12,10))
stylized_image = tensor_to_image(image)
plt.imshow(stylized_image)
plt.axis('off')
plt.title("Epoch {} ".format(epoch+1))
plt.show()
end = time.time()
print("Total training time: {:.1f} seconds".format(end-start))
Epoch 1/10
generated_img = tensor_to_image(image)
plot_images([content_img, style_img, generated_img], ['Content Image', 'Style Image', 'S
tylized Image'])
Save the Stylized Image
In [ ]:
plt.figure(figsize=(12,12))
plt.imshow(generated_img)
plt.title('Stylized Image')
plt.axis('off')
plt.show()
generated_img.save('Style-transfer-image.jpeg')
In [ ]: