fcn8 = FCN8_helper(nClasses, input_height, input_width)
# Conv to be applied on Pool4
skip_con1 = Conv2D(nClasses, kernel_size=(1, 1), padding="same", activation=None, kernel_initializer="he_normal",
name="score_pool4")(fcn8.get_layer("block4_pool").output)
Summed = add(inputs=[skip_con1, fcn8.output])
x = Conv2DTranspose(nClasses, kernel_size=(2, 2), strides=(2, 2), padding="valid", activation=None,
name="score4")(Summed)
###
skip_con2 = Conv2D(nClasses, kernel_size=(1, 1), padding="same", activation=None, kernel_initializer="he_normal",
name="score_pool3")(fcn8.get_layer("block3_pool").output)
Summed2 = add(inputs=[skip_con2, x])
#####
Up = Conv2DTranspose(nClasses, kernel_size=(8, 8), strides=(8, 8),
padding="valid", activation=None, name="upsample")(Summed2)
Up = Reshape((-1, nClasses))(Up)#这里的shape设置
Up = Activation("softmax")(Up)
mymodel = Model(inputs=fcn8.input, outputs=Up)
return mymodel`