def __init__(self, x): conv1 = layers.conv2d(x, 64, [7, 7], stride=2, scope='conv1', activation_fn=tf.nn.relu) pool1 = layers.max_pool2d(conv1, [3, 3], scope='pool1') pool1_lrn = tf.nn.local_response_normalization(pool1, name='pool1_lrn', alpha=0.0001, beta=0.75) conv2_reduce = layers.conv2d(pool1_lrn, 64, [1, 1], scope='conv2_reduce', activation_fn=tf.nn.relu) conv2 = layers.conv2d(conv2_reduce, 192, [3, 3], scope='conv2', activation_fn=tf.nn.relu) conv2_lrn = tf.nn.local_response_normalization(conv2, name='pool1_lrn', alpha=0.0001, beta=0.75) pool2 = layers.max_pool2d(conv2_lrn, [3, 3], scope='pool2') with tf.variable_scope('inception_3a'): inception_3a = inception(pool2, 64, 96, 128, 16, 32, 32) with tf.variable_scope('inception_3b'): inception_3b = inception(inception_3a, 128, 128, 192, 32, 96, 64) pool3 = layers.max_pool2d(inception_3b, [3, 3], scope='pool3') ''' with tf.variable_scope('inception_4a'): conv11 = layers.conv2d(pool3, 192, [1, 1], activation_fn=tf.nn.relu) conv33_reduce = layers.conv2d(pool3, 96, [1, 1], activation_fn=tf.nn.relu) conv33_reduce_param = layers.conv2d(conv33_reduce, 32, [1, 1], activation_fn=tf.nn.relu) conv33_reduce_param2 = layers.conv2d(conv33_reduce_param, 32, [1, 1], activation_fn=tf.nn.relu) conv33_reduce_param3 = layers.conv2d(conv33_reduce_param2, 6, [1, 1]) conv33_spatial_transfo = conv_spatial_transfo(conv33_reduce, conv33_reduce_param3, 3) conv33 = layers.conv2d(conv33_spatial_transfo, 208, [3, 3], stride=3) conv55_reduce = layers.conv2d(pool3, 16, [1, 1], activation_fn=tf.nn.relu) conv55_reduce_param = layers.conv2d(conv55_reduce, 32, [1, 1], activation_fn=tf.nn.relu) conv55_reduce_param2 = layers.conv2d(conv55_reduce_param, 32, [1, 1], activation_fn=tf.nn.relu) conv55_reduce_param3 = layers.conv2d(conv55_reduce_param2, 6, [1, 1]) conv55_spatial_transfo = conv_spatial_transfo(conv55_reduce, conv55_reduce_param3, 5) conv55 = layers.conv2d(conv55_spatial_transfo, 48, [5, 5], stride=5) pool_proj = layers.max_pool2d(pool3, [3, 3], stride=1, padding='SAME') pool11 = layers.conv2d(pool_proj, 64, [1, 1]) inception4a = tf.concat([conv11, conv33, conv55, pool11], 3) ''' feature_unnorm = layers.conv2d(pool3, 128, [1, 1], scope='feature_unnorm') self.feature = tf.nn.l2_normalize(feature_unnorm, dim=3)
def create_model(opt): """Create neural network model, defining layer architecture.""" dim_y = int((opt['crop_max_y'] - opt['crop_min_y']) / opt['scale_factor']) dim_x = int((opt['crop_max_x'] - opt['crop_min_x']) / opt['scale_factor']) inputs = Input(shape=(dim_y, dim_x, 3)) conv_1_1 = inception(inputs, 64) conv_1_2 = inception(conv_1_1, 64) pool_1 = MaxPooling2D()(conv_1_2) conv_2_1 = inception(pool_1, 128) conv_2_2 = inception(conv_2_1, 128) pool_2 = MaxPooling2D()(conv_2_2) conv_3_1 = inception(pool_2, 128) conv_3_2 = inception(conv_3_1, 128) conv_3_3 = inception(conv_3_2, 128) pool_3 = MaxPooling2D()(conv_3_3) conv_4_1 = inception(pool_3, 256) conv_4_2 = inception(conv_4_1, 256) conv_4_3 = inception(conv_4_2, 256) pool_4 = MaxPooling2D()(conv_4_3) conv_5_1 = inception(pool_4, 256) conv_5_2 = inception(conv_5_1, 256) conv_5_3 = inception(conv_5_2, 256) conv_5_4 = inception(conv_5_3, 256) conv_5_5 = inception(conv_5_4, 256) conv_5_6 = inception(conv_5_5, 256) unpool_4 = UpSampling2D()(conv_5_6) unpool_4 = Concatenate()([unpool_4, conv_4_3]) # skip layer decode_4_1 = inception(unpool_4, 256) decode_4_2 = inception(decode_4_1, 256) decode_4_3 = inception(decode_4_2, 128) unpool_3 = UpSampling2D()(decode_4_3) unpool_3 = Concatenate()([unpool_3, conv_3_3]) # skip layer decode_3_1 = inception(unpool_3, 128) decode_3_2 = inception(decode_3_1, 128) decode_3_3 = inception(decode_3_2, 128) unpool_2 = UpSampling2D()(decode_3_3) unpool_2 = Concatenate()([unpool_2, conv_2_2]) # skip layer decode_2_1 = inception(unpool_2, 128) decode_2_2 = inception(decode_2_1, 64) unpool_1 = UpSampling2D()(decode_2_2) unpool_1 = Concatenate()([unpool_1, conv_1_2]) # skip layer decode_1_1 = inception(unpool_1, 64) final_layer = Conv2D(1, 3, padding='same', kernel_regularizer=l2(0.01))(decode_1_1) final_layer = Activation('sigmoid')(final_layer) final_layer = Reshape((dim_y, dim_x))(final_layer) model = Model(inputs=inputs, outputs=final_layer, name="Road") return model