语义分割初识U-Net

Posted Andrew Xiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语义分割初识U-Net相关的知识,希望对你有一定的参考价值。

背景介绍 

U-Net可以说是当今时代下一个炙手可热的网络模型,作为分割领域的一种基础网络,其代表了一种高性能的基础网络设计架构,很多网络为了延续U-Net的核心思想,加入了新的模块或者融入其他设计理念设计而成。如今,所有的图像分割问题,人们都会尝试着用各种U-Net网络架构看看效果。

论文传送门

​​​ttps://www.sogou.com/link?url=hedJjaC291OjP4LRzIQNfjvl79yF6uWC5_wsdhbtYuEOX3hBKf-DUA…

什么是U-Net模型?

论文中构建了一个优雅的结构,即所谓的“全卷积神经网络”,U-Net正是基于全卷积网络拓展和修改而来的,这个方法能使用更少的训练图片,同时能更精确的分割。U-Net是一个优秀的语义分割模型,其主要执行过程与其他语义分割模型类似。

使用全卷积神经网络

不同于传统的卷积网络,全卷积网络使用卷积层取代全连接层,这个策略的使用,使得输入的图片可以是任意尺寸,所以,这也是一种端到端的网络。

收缩路径(contracting path)

通常可以理解为主干特征提取网络,该部分遵循卷积网络的经典结构,通过收缩路径获得一个又一个的特征层。

扩张路径(expanding path)

利用主干特征提取网络获取到的初步的有效特征层进行特征融合,特征融合的方式就是对特征层进行上采样并且进行堆叠,之后进行两次卷积,然后逐层上采样。达到最后的heatmap之前,用1*1卷积做分类,得到最后的heatmap。上采样的作用就是能把抽象的特征以解码的形式还原成输入图像的尺寸,最终得到分割结果。

预测网络

将每一个获取到的有效特征层对每一个特征点(像素点)进行分类

网络体系架构

U-NeT整体流程其实就是编码和解码的过程,其结构主要是由收缩路径(contracting path)和扩展路径(expanding path)构成。收缩路径遵循卷积网络的经典结构,包括两个3*3卷积的重复利用,之后使用激活函数(ReLU)和一个2*2最大池化(Max PooL),步长为2,并进行下采样,在每个下采样过程中,特征层的通道数数量增加一倍。扩展路径的每一步都是由特征映射的上采样进行2*2的上采样(up-convolution),特征通道数减半,将对应的收缩路径特征层中的图像进行裁剪,使其与扩展路径上采样之后的图像维度相同,并与其进行特征融合,随后进行两个3*3卷积,之后使用激活函数(ReLU)。

数据处理

医学影像数据存在一个共同的特点,就是样本量一般较少,当训练样本过少时,容易使得训练效果不佳。面对训练数据较少的情况,该论文所采取的方法是通过对训练图像施加弹性变换(elastic deformations)进行数据增强,如下图所示,人为的增加这种样本量使得U-Net网络能够学习到这种形变的不变性。

同时,在图像输入前,将目标区域的四个边都进行镜像扩大操作,保证在一系列的卷积操作之后的结果能够与原图大小一致。由于医学图像尺寸通常较大,可以采取分块输入的训练方式,最后将结构一块块拼接起来,为了预测边缘像素,避免在拼接过程中出现不连接等问题,在训练之前,每一小块都会选择镜像扩大,以保留更多的边缘信息。

训练模型

该论文是基于Caffe的随机梯度下降去训练网络,使用用动量为0.99的SGD,损失函数为交叉熵损失函数,最后通过softmax函数计算并获取每一个像素点的最大概率,对其进行分类。该训练模型与传统的多分类训练模型类似。

公式1是softmax函数,ak(x)表示每一像素点对应类的概率;
公式2是给每个像素点分配权值然后进行加权,d1(x)表示图中某一背景像素点到离这个点最近的细胞边界的距离,d2(x)表示离这个像素点第二近的细胞的距离。这样做的目的是为了对两个细胞的重合边缘部分增加权重来加强损失函数的回归维度和性能,换一种方式来理解就是:为了防止同类细胞因贴得过近而导致训练难度增加(同类细胞贴得过近容易误判),减少准确率,所以对同类细胞贴在一起的边界给予较大的权值,使得训练之后的分割更精准。

网络改进和创新

Encoding & Decoding 结构

该模型通过编码和解码的结构去除输入图像的噪声,增强网络的鲁棒性

跳级连接

对于主干网络采取类似VGG这样的强调深度的网络模型,会忽略输入图像的部分细节和低级特征,对于一些尺寸较小的目标来说,如果采取此类主干网络,会导致部分像素点丢失,甚至可能导致目标消失。U-Net模型在编码和解码的过程通过跳级连接的方式能很好保留低级特征,尽可能保留图像的细节和低级特征

损失函数

设计损失函数时,对两个细胞的重合边缘部分增加了损失权重来加强损失函数的回归维度与性能,从设计组成上将边缘部分的检测进行强调

以上是关于语义分割初识U-Net的主要内容,如果未能解决你的问题,请参考以下文章

使用 U-Net 作为单层进行语义分割的输入标签

使用 TensorRT 部署语义分割网络(U-Net)(不支持上采样)

深度学习语义分割网络介绍对比-FCN,SegNet,U-net DeconvNet

U-net 与 FCN 背后的直觉用于语义分割

语义分割项目实战制作语义分割数据集,并使用U-Net进行实战检测

U-Net 语义分割模型在新图像上测试时失败