
`import tensorflow as tf
import tensorflow.contrib.slim as slim
def FCN_net(inputs,num_classes,keep_prob=None):
nets = {}
with slim.arg_scope([slim.conv2d,slim.conv2d_transpose],padding = ‘SAME’,
weights_initializer=tf.truncated_normal_initializer(stddev=0.01),
weights_regularizer=slim.l2_regularizer(0.0005),
activation_fn=tf.nn.relu):
with slim.arg_scope([slim.conv2d_transpose],stride=2):#stride=2意味着2倍上采樣
net = slim.conv2d(inputs,64,[3,3],scope=‘conv1_1’)
net = slim.conv2d(net,64,[3,3],scope=‘conv1_2’)
net = slim.max_pool2d(net,kernel_size=[2,2],scope=‘pool1’)
nets[‘poo11’] = net #1/2
net = slim.conv2d(net,128,[3,3],scope='conv2_1')
net = slim.conv2d(net,128,[3,3],scope='conv2_2')
net = slim.max_pool2d(net,[2,2],scope='pool2')
nets['poo12'] = net #1/4
net = slim.conv2d(net,256,[3,3],scope='conv3_1')
net = slim.conv2d(net,256,[3,3],scope='conv3_2')
net = slim.conv2d(net,256,[3,3],scope='conv3_3')
net = slim.max_pool2d(net,[2,2],scope='pool3')
nets['poo13'] = net #1/8
net = slim.conv2d(net,512,[3,3],scope='conv4_1')
net = slim.conv2d(net,512,[3,3],scope='conv4_2')
net = slim.conv2d(net,512,[3,3],scope='conv4_3')
net = slim.max_pool2d(net,[2,2],scope='pool4')
nets['poo14'] = net #1/16
net = slim.conv2d(net,512,[3,3],scope='conv5_1')
net = slim.conv2d(net,512,[3,3],scope='conv5_2')
net = slim.conv2d(net,512,[3,3],scope='conv5_3')
net = slim.max_pool2d(net,[2,2],scope='pool5')
nets['poo15'] = net #1/32
net = slim.conv2d(net,4096,[7,7],scope='conv6')
net = slim.conv2d(net,4096,[1,1],scope='conv7')
net = slim.conv2d(net,num_classes,[1,1],scope='conv8')
# 開始反卷積對net
deconv1_shape = nets['pool4'].get_shape()
conv_t1 = slim.conv2d_transpose(net,deconv1_shape[3],[4,4]) #這裡反卷積kernalsize{[4,4],[4,4],[16,16]尚不明白}
fuse_1 = tf.add(conv_t1,nets['pool4'],name='fuse_1') #1/16
deconv2_shape = nets['pool3'].getshape()
conv_t2 = slim.conv2d_transpose(fuse_1,deconv2_shape[3],[4,4])
fuse_2 = tf.add(conv_t2,nets['pool3'],name='fuse_2') #1/8
conv_t3 = slim.conv2d_transpose(fuse_2,num_classes,[16,16],stride=8)
pre=tf.argmax(conv_t3,axis=-1)
pre=tf.expand_dims(pre,-1)#expand dim
return pre, conv_t3
`