Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def inference(images, keep_prob):
- # 416 x 416 x 3
- with tf.variable_scope('downSample_block1') as scope:
- conv1 = Conv2D(filters=64, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(images)
- conv2 = Conv2D(filters=64, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv1)
- pool1 = MaxPool2D(pool_size=(2, 2), strides=(2, 2), padding='valid', name='pool')(conv2)
- with tf.variable_scope('downSample_block2') as scope:
- conv3 = Conv2D(filters=128, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(pool1)
- conv4 = Conv2D(filters=128, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv3)
- pool2 = MaxPool2D(pool_size=(2, 2), strides=(2, 2), padding='valid', name='pool')(conv4)
- with tf.variable_scope('downSample_block3') as scope:
- conv5 = Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(pool2)
- conv6 = Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv5)
- pool3 = MaxPool2D(pool_size=(2, 2), strides=(2, 2), padding='valid', name='pool')(conv6)
- with tf.variable_scope('downSample_block4') as scope:
- conv7 = Conv2D(filters=512, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(pool3)
- conv8 = Conv2D(filters=512, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv7)
- pool4 = MaxPool2D(pool_size=(2, 2), strides=(2, 2), padding='valid', name='pool')(conv8)
- with tf.variable_scope('downSample_block5') as scope:
- conv9 = Conv2D(filters=1024, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(pool4)
- conv10 = Conv2D(filters=1024, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv9)
- drop1 = tf.nn.dropout(conv10, keep_prob)
- with tf.variable_scope('upSample_block1') as scope:
- deconv1 = Conv2DTranspose(filters=512, kernel_size=(2, 2), strides=(2, 2),
- padding='same', name='deconv')(drop1)
- crop1 = 4
- crop2 = 40
- concat_deconv1 = tf.concat([conv8[:, crop1 : crop2 , crop1 : crop2, :], deconv1],axis=3)
- conv11 = Conv2D(filters=512, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(concat_deconv1)
- conv12 = Conv2D(filters=512, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv11)
- with tf.variable_scope('upSample_block2') as scope:
- deconv2 = Conv2DTranspose(filters=256, kernel_size=(2, 2), strides=(2, 2),
- padding='same', name='deconv')(conv12)
- crop1 = 16
- crop2 = 80
- concat_deconv2 = tf.concat([conv6[:, crop1 : crop2 , crop1 : crop2, :], deconv2],axis=3)
- conv13 = Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(concat_deconv2)
- conv14 = Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv13)
- with tf.variable_scope('upSample_block3') as scope:
- deconv3 = Conv2DTranspose(filters=128, kernel_size=(2, 2), strides=(2, 2),
- padding='same', name='deconv')(conv14)
- crop1 = 40
- crop2 = 160
- concat_deconv3 = tf.concat([conv4[:, crop1 : crop2 , crop1 : crop2, :], deconv3],axis=3)
- conv15 = Conv2D(filters=128, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(concat_deconv3)
- conv16 = Conv2D(filters=128, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv15)
- with tf.variable_scope('upSample_block4') as scope:
- deconv4 = Conv2DTranspose(filters=64, kernel_size=(2, 2), strides=(2, 2),
- padding='same', name='deconv')(conv16)
- crop1 = 89
- crop2 = 321
- concat_deconv4 = tf.concat([conv2[:, crop1 : crop2 , crop1 : crop2, :], deconv4],axis=3)
- conv17 = Conv2D(filters=64, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(concat_deconv4)
- conv18 = Conv2D(filters=64, kernel_size=(3, 3), strides=(1, 1),
- padding='valid', name='conv2', activation='relu')(conv17)
- drop2 = tf.nn.dropout(conv18, keep_prob)
- with tf.variable_scope('Classification') as scope:
- conv19 = Conv2D(filters=2, kernel_size=(1, 1), strides=(1, 1),
- padding='valid', name='conv1', activation='relu')(drop2)
- with tf.variable_scope('softmax') as scope:
- softmax = soft_max(conv19)
- # Output 228 x 228 x 2
- return softmax
Add Comment
Please, Sign In to add comment