赞
踩
卷积:用卷积核去“卷”图像,即为提取图像的特征。卷积后会出现三种结果:结果图像比原图小(valid卷积),结果图像与原图大小相同(same卷积),结果图像比原图大(full卷积)。在卷积后需要激活,就是用激励层(激活函数Relu)把卷积层输出结果做非线性映射。 激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。
池化层:夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。一般有最大池化(Max Pooling)和平均池化。
U-Net源自论文U-Net: Convolutional Networks for Biomedical Image Segmentation,是一个U型的encoder-decoder的对称网络结构,通过skip-connection操作更好的融合浅层的位置信息和深层的语义信息。Encoder 由卷积操作和下采样操作组成,Decoder由卷积、skip-connection(通过拼接的方式实现特征融合)和上采样组成,将feature map恢复为原始分辨率,这里的上采样使用的是插值方法(bilinear 双线性插值)。
如下图所示,U-net网络一共有四层,分别对图片进行了4次下采样(池化层)和4次上采样(可以理解为full卷积)。主要流程如下:
第一部分(从左边开始):输入的是一张572×572×1的图片,然后经过64个3×3的卷积核进行卷积(本文统一将此处的卷积理解为“卷积+ReLU”)得到64个570×570×1的特征通道;然后把这570×570×64的结果再经过64个3×3的卷积核进行卷积得到64个568×568×1的特征提取结果。在这个网络中的卷积是valid卷积,结果图像比原图小。
第二部分(下采样):第一层的处理结果通过2×2的池化核得到284×284×64,然后通过128个卷积核进行两次卷积提取图片特征。之后的下采样过程以此类推,最终下采样部分的结果是28×28×1024,也就是一共有1024个特征层,每一层的特征大小为28×28。
第三部分(上采样):把28×28×1024的特征矩阵经过512个2×2的卷积核进行反卷积(full卷积),把矩阵扩大为56×56×512(蓝色框框部分)通过skip-connection操作把左边对应降采样的结果(白色框框,56×56×512)直接拼过来的,再进行两次valid卷积来提取特征。以此类推,进行4次上采样,最后结果是388×388×64(64个特征层,每一层的特征大小为388×388)。
第四部分(输出层):选择了2个1×1的卷积核把64个特征通道变成2个,最后的输出时388×388×2(二分类操作,把图片分成背景和目标两个类别)。注意:此处的输出比原图像小,因此为了避免数据丢失,在图像输入前都需要进行镜像扩大(overlap-tile),以保证在通过一系列的valid卷积操作之后的结果能够与原图大小相一致。
一般认为网络层越深得到的特征图有着更大的视野域(对特征更深层次的理解)。
浅层卷积关注纹理特征,深层网络则是关注本质的那些特征。
unet的创新点在u型的encoder-decoder的设计思想,文章中的层数、卷积大小可能对于作者的应用场景、数据集表现更好,但不代表大家必须用这个结构,具体实现应该根据数据集来进行调整。浅层结构可以抓取图像的一些简单的特征,比如边界,颜色,而深层结构能抓取到图像的一些本质特症,可以根据需要进行层数、卷积的调整。
设定一个图像的输入(未扩大前)和输出大小一致,进入这个结构后其实就是一个压缩图像和还原图像的过程。输入是一幅图,经过下采样的编码,得到一串比原先图像更小的特征,相当于压缩,然后再经过一个解码,理想状况就是能还原到原来的图像。这样的话存一幅图的时候就只需要存一个特征和一个解码器即可。
那么跳出压缩还原的思路外,下采样的必要性又是什么呢?
增加对输入图像的鲁棒性,比如旋转、平移等,减少过拟合的风险;降低运算量和增加感受野的大小。
联系了输入图像的很多信息,有助于还原降采样所带来的信息损失。由于每一次下采样提炼特征的时候会损失一些边缘特征,而失去的特征并不能从上采样中找回,因此通过特征的拼接,来实现边缘特征的找回。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。