SimpleBaseline-tf2
import os
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
resnet = tf.keras.applications.resnet.ResNet50(include_top=False, weights='imagenet')
#deconv module
upconv1 = tf.keras.layers.Conv2DTranspose(256, kernel_size=(4,4), strides=(2,2), padding='same')
bn1 = tf.keras.layers.BatchNormalization()
relu1 = tf.keras.layers.ReLU()
upconv2 = tf.keras.layers.Conv2DTranspose(256, kernel_size=(4,4), strides=(2,2), padding='same')
bn2 = tf.keras.layers.BatchNormalization()
relu2 = tf.keras.layers.ReLU()
upconv3 = tf.keras.layers.Conv2DTranspose(256, kernel_size=(4,4), strides=(2,2), padding='same')
bn3 = tf.keras.layers.BatchNormalization()
relu3 = tf.keras.layers.ReLU()
##중복제거
def _make_deconv_layer(num_deconv_layers):
seq_model = tf.keras.models.Sequential()
for i in range(num_deconv_layers):
seq_model.add(tf.keras.layers.Conv2DTranspose(256, kernel_size=(4,4), strides=(2,2), padding='same'))
seq_model.add(tf.keras.layers.BatchNormalization())
seq_model.add(tf.keras.layers.ReLU())
return seq_model
upconv = _make_deconv_layer(3)
final_layer = tf.keras.layers.Conv2D(17, kernel_size=(1,1), padding='same')
inputs = keras.Input(shape=(256, 192, 3))
x = resnet(inputs)
x = upconv(x)
out = final_layer(x)
model = keras.Model(inputs, out)
model.summary()
#가상 이미지 넣어서 출력 확인 코드
np_input = np.zeros((1,256,192,3), dtype=np.float32)
tf_input = tf.convert_to_tensor(np_input, dtype=tf.float32)
print('input shape')
print (tf_input.shape)
print('\n')
tf_output = model(tf_input)
print('output shape')
print (tf_output.shape)
print (tf_output[0,:10,:10,:10])