前言
最近研究了三种分割算法,deeplab-v3-plus,FCN,还有Une。FCN是分割网络的开山之作,可以用来学习,deeplab-v3-plus速度比较慢,精度更高,代码改起来比较复杂。落地的话首选还是UNET,相比较与目标检测的网络,代码简单到爆炸,也推荐作为深度学习的入门网络。
网络结构
可以看到整个网络结构是一个U型的结构,前面部分通过pooling进行下采样,后面部分通过反卷积上采样。中间通过concatenate进行拼接。
inputs = Input((PIXEL, PIXEL, 3))
s = Lambda(lambda x: x / 255) (inputs)
conv1 = Conv2D(8, 3, activation='relu', padding='same', kernel_initializer='he_normal')(s)
pool1 = AveragePooling2D(pool_size=(2, 2))(conv1) # 16
conv2 = BatchNormalization(momentum=0.99)(pool1)
conv2 = Conv2D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv2)
conv2 = BatchNormalization(momentum=0.99)(conv2)
conv2 = Conv2D(64, 1, activation='relu', padding='same', kernel_initializer='he_normal')(conv2)
conv2 = Dropout(0.02)(conv2)
pool2 = AveragePooling2D(pool_size=(2, 2))(conv2) # 8
conv3 = BatchNormalization(momentum=0.99)(pool2)
conv3 = Conv2D(128, 3, activation='relu', padding='same', kernel_initializer='he_normal'