def u_net_inference(image, is_training=False): net = {} l2_reg = FLAGS.learning_rate # added for resume better global_iter_counter = tf.Variable(0, name='global_step', trainable=False) net['global_step'] = global_iter_counter with tf.variable_scope("inference"): inputs = image # 1, 1, 3 Encoder 1st conv1_1 = Utils.conv(inputs, filters=64, l2_reg_scale=l2_reg, is_training=is_training) conv1_2 = Utils.conv(conv1_1, filters=64, l2_reg_scale=l2_reg, is_training=is_training) pool1 = Utils.pool(conv1_2) # 1/2, 1/2, 64 Encoder 2nd conv2_1 = Utils.conv(pool1, filters=128, l2_reg_scale=l2_reg, is_training=is_training) conv2_2 = Utils.conv(conv2_1, filters=128, l2_reg_scale=l2_reg, is_training=is_training) pool2 = Utils.pool(conv2_2) # 1/4, 1/4, 128 Encoder 3rd conv3_1 = Utils.conv(pool2, filters=256, l2_reg_scale=l2_reg, is_training=is_training) conv3_2 = Utils.conv(conv3_1, filters=256, l2_reg_scale=l2_reg, is_training=is_training) pool3 = Utils.pool(conv3_2) # 1/8, 1/8, 256 Encoder 4th conv4_1 = Utils.conv(pool3, filters=512, l2_reg_scale=l2_reg, is_training=is_training) conv4_2 = Utils.conv(conv4_1, filters=512, l2_reg_scale=l2_reg, is_training=is_training) pool4 = Utils.pool(conv4_2) # 1/16, 1/16, 512 Encoder 5th, upsample, skip 1 conv5_1 = Utils.conv(pool4, filters=1024, l2_reg_scale=l2_reg, is_training=is_training) conv5_2 = Utils.conv(conv5_1, filters=1024, l2_reg_scale=l2_reg, is_training=is_training) concated1 = tf.concat([ Utils.conv_transpose(conv5_2, filters=512, l2_reg_scale=l2_reg, is_training=is_training), conv4_2 ], axis=3) # Decoder 1st, skip 2 conv_up1_1 = Utils.conv(concated1, filters=512, l2_reg_scale=l2_reg, is_training=is_training) conv_up1_2 = Utils.conv(conv_up1_1, filters=512, l2_reg_scale=l2_reg, is_training=is_training) concated2 = tf.concat([ Utils.conv_transpose(conv_up1_2, filters=256, l2_reg_scale=l2_reg, is_training=is_training), conv3_2 ], axis=3) # Decoder 2nd, skip 3 conv_up2_1 = Utils.conv(concated2, filters=256, l2_reg_scale=l2_reg, is_training=is_training) conv_up2_2 = Utils.conv(conv_up2_1, filters=256, l2_reg_scale=l2_reg, is_training=is_training) concated3 = tf.concat([ Utils.conv_transpose(conv_up2_2, filters=128, l2_reg_scale=l2_reg, is_training=is_training), conv2_2 ], axis=3) # Decoder 3rd, skip 4 conv_up3_1 = Utils.conv(concated3, filters=128, l2_reg_scale=l2_reg, is_training=is_training) conv_up3_2 = Utils.conv(conv_up3_1, filters=128, l2_reg_scale=l2_reg, is_training=is_training) concated4 = tf.concat([ Utils.conv_transpose(conv_up3_2, filters=64, l2_reg_scale=l2_reg, is_training=is_training), conv1_2 ], axis=3) # Decoder 4th conv_up4_1 = Utils.conv(concated4, filters=64, l2_reg_scale=l2_reg, is_training=is_training) conv_up4_2 = Utils.conv(conv_up4_1, filters=64, l2_reg_scale=l2_reg, is_training=is_training) # logits/probability logits = Utils.conv(conv_up4_2, filters=NUM_OF_CLASSES, kernel_size=[1, 1], activation=None) # Output/prediction annotation_pred = tf.argmax(logits, dimension=3, name="prediction") outputs = tf.expand_dims(annotation_pred, dim=3) return outputs, logits, net, conv5_2
def unetinference(image, keep_prob): net = {} l2_reg = FLAGS.learning_rate # added for resume better global_iter_counter = tf.Variable(0, name='global_step', trainable=False) net['global_step'] = global_iter_counter with tf.variable_scope("inference"): inputs = image teacher = tf.placeholder( tf.float32, [None, IMAGE_SIZE, IMAGE_SIZE, NUM_OF_CLASSES]) is_training = True # 1, 1, 3 conv1_1 = Utils.conv(inputs, filters=64, l2_reg_scale=l2_reg, batchnorm_istraining=is_training) conv1_2 = Utils.conv(conv1_1, filters=64, l2_reg_scale=l2_reg, batchnorm_istraining=is_training) pool1 = Utils.pool(conv1_2) # 1/2, 1/2, 64 conv2_1 = Utils.conv(pool1, filters=128, l2_reg_scale=l2_reg, batchnorm_istraining=is_training) conv2_2 = Utils.conv(conv2_1, filters=128, l2_reg_scale=l2_reg, batchnorm_istraining=is_training) pool2 = Utils.pool(conv2_2) # 1/4, 1/4, 128 conv3_1 = Utils.conv(pool2, filters=256, l2_reg_scale=l2_reg, batchnorm_istraining=is_training) conv3_2 = Utils.conv(conv3_1, filters=256, l2_reg_scale=l2_reg, batchnorm_istraining=is_training) pool3 = Utils.pool(conv3_2) # 1/8, 1/8, 256 conv4_1 = Utils.conv(pool3, filters=512, l2_reg_scale=l2_reg, batchnorm_istraining=is_training) conv4_2 = Utils.conv(conv4_1, filters=512, l2_reg_scale=l2_reg, batchnorm_istraining=is_training) pool4 = Utils.pool(conv4_2) # 1/16, 1/16, 512 conv5_1 = Utils.conv(pool4, filters=1024, l2_reg_scale=l2_reg) conv5_2 = Utils.conv(conv5_1, filters=1024, l2_reg_scale=l2_reg) concated1 = tf.concat([ Utils.conv_transpose(conv5_2, filters=512, l2_reg_scale=l2_reg), conv4_2 ], axis=3) conv_up1_1 = Utils.conv(concated1, filters=512, l2_reg_scale=l2_reg) conv_up1_2 = Utils.conv(conv_up1_1, filters=512, l2_reg_scale=l2_reg) concated2 = tf.concat([ Utils.conv_transpose(conv_up1_2, filters=256, l2_reg_scale=l2_reg), conv3_2 ], axis=3) conv_up2_1 = Utils.conv(concated2, filters=256, l2_reg_scale=l2_reg) conv_up2_2 = Utils.conv(conv_up2_1, filters=256, l2_reg_scale=l2_reg) concated3 = tf.concat([ Utils.conv_transpose(conv_up2_2, filters=128, l2_reg_scale=l2_reg), conv2_2 ], axis=3) conv_up3_1 = Utils.conv(concated3, filters=128, l2_reg_scale=l2_reg) conv_up3_2 = Utils.conv(conv_up3_1, filters=128, l2_reg_scale=l2_reg) concated4 = tf.concat([ Utils.conv_transpose(conv_up3_2, filters=64, l2_reg_scale=l2_reg), conv1_2 ], axis=3) conv_up4_1 = Utils.conv(concated4, filters=64, l2_reg_scale=l2_reg) conv_up4_2 = Utils.conv(conv_up4_1, filters=64, l2_reg_scale=l2_reg) outputs = Utils.conv(conv_up4_2, filters=NUM_OF_CLASSES, kernel_size=[1, 1], activation=None) annotation_pred = tf.argmax(outputs, dimension=3, name="prediction") return tf.expand_dims(annotation_pred, dim=3), outputs, net, conv5_2
def unetinference(image, is_training=False): net = {} l2_reg = FLAGS.learning_rate # added for resume better global_iter_counter = tf.Variable(0, name='global_step', trainable=False) net['global_step'] = global_iter_counter with tf.variable_scope("inference"): inputs = image # 1, 1, 3 conv1_1 = Utils.conv(inputs, filters=64, l2_reg_scale=l2_reg, is_training=is_training) conv1_2 = Utils.conv(conv1_1, filters=64, l2_reg_scale=l2_reg, is_training=is_training) pool1 = Utils.pool(conv1_2) # 1/2, 1/2, 64 conv2_1 = Utils.conv(pool1, filters=128, l2_reg_scale=l2_reg, is_training=is_training) conv2_2 = Utils.conv(conv2_1, filters=128, l2_reg_scale=l2_reg, is_training=is_training) pool2 = Utils.pool(conv2_2) # 1/4, 1/4, 128 conv3_1 = Utils.conv(pool2, filters=256, l2_reg_scale=l2_reg, is_training=is_training) conv3_2 = Utils.conv(conv3_1, filters=256, l2_reg_scale=l2_reg, is_training=is_training) pool3 = Utils.pool(conv3_2) # 1/8, 1/8, 256 conv4_1 = Utils.conv(pool3, filters=512, l2_reg_scale=l2_reg, is_training=is_training) conv4_2 = Utils.conv(conv4_1, filters=512, l2_reg_scale=l2_reg, is_training=is_training) pool4 = Utils.pool(conv4_2) # 1/16, 1/16, 512 conv5_1 = Utils.conv(pool4, filters=1024, l2_reg_scale=l2_reg, is_training=is_training) conv5_2 = Utils.conv(conv5_1, filters=1024, l2_reg_scale=l2_reg, is_training=is_training) concated1 = tf.concat([ Utils.conv_transpose(conv5_2, filters=512, l2_reg_scale=l2_reg, is_training=is_training), attention_gate(conv4_2, conv5_2, 512) ], axis=3) conv_up1_1 = Utils.conv(concated1, filters=512, l2_reg_scale=l2_reg, is_training=is_training) conv_up1_2 = Utils.conv(conv_up1_1, filters=512, l2_reg_scale=l2_reg, is_training=is_training) concated2 = tf.concat([ Utils.conv_transpose(conv_up1_2, filters=256, l2_reg_scale=l2_reg, is_training=is_training), attention_gate(conv3_2, conv_up1_2, 256) ], axis=3) conv_up2_1 = Utils.conv(concated2, filters=256, l2_reg_scale=l2_reg, is_training=is_training) conv_up2_2 = Utils.conv(conv_up2_1, filters=256, l2_reg_scale=l2_reg, is_training=is_training) concated3 = tf.concat([ Utils.conv_transpose(conv_up2_2, filters=128, l2_reg_scale=l2_reg, is_training=is_training), attention_gate(conv2_2, conv_up2_2, 128) ], axis=3) conv_up3_1 = Utils.conv(concated3, filters=128, l2_reg_scale=l2_reg, is_training=is_training) conv_up3_2 = Utils.conv(conv_up3_1, filters=128, l2_reg_scale=l2_reg, is_training=is_training) concated4 = tf.concat([ Utils.conv_transpose(conv_up3_2, filters=64, l2_reg_scale=l2_reg, is_training=is_training), attention_gate(conv1_2, conv_up3_2, 64) ], axis=3) conv_up4_1 = Utils.conv(concated4, filters=64, l2_reg_scale=l2_reg, is_training=is_training) conv_up4_2 = Utils.conv(conv_up4_1, filters=64, l2_reg_scale=l2_reg, is_training=is_training) logits = Utils.conv(conv_up4_2, filters=NUM_OF_CLASSES, kernel_size=[1, 1], activation=None, is_training=is_training) annotation_pred = tf.argmax(logits, dimension=3, name="prediction") return tf.expand_dims(annotation_pred, dim=3), logits, net