发展历程
FCN,端到端的语义分割,将端到端的卷积网络推广到语义分割中;重新将预训练好的Imagenet网络用于分割问题中;使用反卷积层进行上采样;提出了跳跃连接来改善上采样的粗糙程度。
结构如下
segnet
将最大池化指数转移至解码器中,改善了分割分辨率。
具体解释:
在FCN网络中,通过上卷积层和一些跳跃连接产生了粗糙的分割图,为了提升效果而引入了更多的跳跃连接。
然而,FCN网络仅仅复制了编码器特征,而Segnet网络复制了最大池化指数。这使得在内存使用上,SegNet比FCN更为高效
UNET编码器-解码器结构,
deeplab v1 v2使用了空洞卷积;提出了在空间维度上实现金字塔型的空洞池化atrous spatial pyramid pooling(ASPP);使用了全连接条件随机场
缺点:DeepLab得到的预测结果只有原始输入的1/8大小。
deeplabv3改进了空间维度上的金字塔空洞池化方法(ASPP);该模块级联了多个空洞卷积结构。
示例代码
with tf.variable_scope("aspp"): if output_stride not in [8, 16]: raise ValueError('output_stride must be either 8 or 16.') atrous_rates = [6, 12, 18] if output_stride == 8: atrous_rates = [2*rate for rate in atrous_rates] with tf.contrib.slim.arg_scope(resnet_v2.resnet_arg_scope(batch_norm_decay=batch_norm_decay)): with arg_scope([layers.batch_norm], is_training=is_training): inputs_size = tf.shape(inputs)[1:3] # (a) one 1×1 convolution and three 3×3 convolutions with rates = (6, 12, 18) when output stride = 16.