1.keras实现unet
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a20b09d9405e31cd1303e0b440e946a5.png)
def unet(input_size = (512,512,3),base_filter_num=64):
inputs = Input(input_size)
conv1 = Conv2D(base_filter_num, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(inputs)
conv1 = Conv2D(base_filter_num, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv1)
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)
conv2 = Conv2D(base_filter_num*2, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool1)
conv2 = Conv2D(base_filter_num*2, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv2)
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)
conv3 = Conv2D(base_filter_num*4, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool2)
conv3 = Conv2D(base_filter_num*4, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv3)
pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)
conv4 = Conv2D(base_filter_num*8, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool3)
conv4 = Conv2D(base_filter_num*8, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv4)
pool4 = MaxPooling2D(pool_size=(2, 2))(conv4)
conv5 = Conv2D(base_filter_num*16, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(pool4)
conv5 = Conv2D(base_filter_num*16, 3, activation = 'relu', padding = 'same', kernelinitializer = 'he_normal')(conv5)
up6 = Conv2DTranspose(base_filter_num*8, (2, 2), strides=(2, 2), padding='same')(conv5)
merge6 = concatenate([conv4,up6], axis = -1)
conv6 = Conv2D(base_filter_num*8, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(merge6)
conv6 = Conv2D(base_filter_num*8, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv6)
up7 = Conv2DTranspose(base_filter_num*4, (2, 2), strides=(2, 2), padding='same')(conv6)
merge7 = concatenate([conv3,up7], axis = -1)
conv7 = Conv2D(base_filter_num*4, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(merge7)
conv7 = Conv2D(base_filter_num*4, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv7)
up8 = Conv2DTranspose(base_filter_num*2, (2, 2), strides=(2, 2), padding='same')(conv7)
merge8 = concatenate([conv2,up8], axis = -1)
conv8 = Conv2D(base_filter_num*2, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(merge8)
conv8 = Conv2D(base_filter_num*2, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv8)
up9 = Conv2DTranspose(base_filter_num, (2, 2), strides=(2, 2), padding='same')(conv8)
merge9 = concatenate([conv1,up9], axis = -1)
conv9 = Conv2D(base_filter_num, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(merge9)
conv9 = Conv2D(base_filter_num, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv9)
conv10 = Conv2D(1, 1, activation = 'sigmoid')(conv9)
model = Model(input = inputs, output = conv10)
model.compile(optimizer=Adam(lr = 1e-4), loss='binary_crossentropy', metrics=['acc'])
model.summary()
return model
2.keras实现unet++
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8bcdd7582a27e3b36451315d2150d38a.png)
def unet_plus_plus(input_size = (512,512,3),base_filter_num=64):
inputs = Input(input_size)
conv0_0 = Conv2D(base_filter_num, 3, activation = 'relu', padding = 'same', kernel_initializer