当前位置:   article > 正文

【详解】计算机视觉之目标分割_unet网络结构如何实现小目标分割的

unet网络结构如何实现小目标分割的

目标分割

在这里插入图片描述

  • 图像分割是目标检测更进阶的任务,目标检测只需要框出每个目标的包围盒,语义分割需要进一步判断图像中哪些像素属于哪个目标。但是,语义分割不区分属于相同类别的不同实例。如上图所示,当图像中有多个cube时,语义分割会将所有立方体整体的所有像素预测为“cube”这个类别。与此不同的是,实例分割需要区分出哪些像素属于第一个cube、哪些像素属于第二个cube……。
1 定义

在计算机视觉领域,图像分割(Object Segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)的过程,并且同一个子区域内的特征具有一定相似性,不同子区域的特征呈现较为明显的差异。

图像分割的目标就是为图像中的每个像素分类。应用领域非常的广泛:自动驾驶、医疗影像,图像美化、三维重建等等。

  • 自动驾驶(Autonomous vehicles):汽车需要安装必要的感知系统以了解它们的环境,这样自动驾驶汽车才能够安全地驶入现有的道路
  • 医疗影像诊断(Medical image diagnostics):机器在分析能力上比放射科医生更强,而且可以大大减少诊断所需时间。
2 任务描述和类型
2.1 任务描述

简单来说,我们的目标是输入一个RGB彩色图片(heigh**t×width×3)或者一个灰度图(heigh**t×width×1),然后输出一个包含各个像素类别标签的分割图(heigh**t×width×1)。如下图所示:

在这里插入图片描述

与我们处理分类值的方式类似,预测目标可以采用one-hot编码,即为每一个可能的类创建一个输出通道。通过取每个像素点在各个channel的argmax可以得到最终的预测分割图,(如下图所示):

在这里插入图片描述

比如:person的编码为:10000,而Grass的编码为:00100

当将预测结果叠加到单个channel时,称这为一个掩膜mask,它可以给出一张图像中某个特定类的所在区域:

在这里插入图片描述

2.2 任务类型

目前的图像分割任务主要有两类: 语义分割和实例分割

我们以下图为例,来介绍这两种分割方式:

在这里插入图片描述

  • 语义分割就是把图像中每个像素赋予一个类别标签,如下图我们将图像中的像素分类为人,羊,狗,草地即可。

在这里插入图片描述

  • 实例分割,相对于语义分割来讲,不仅要区分不同类别的像素,还需要需要对同一类别的不同个体进行区分。如下图所示,不仅需要进行类别的划分,还要将各个个体划分出来:羊1,羊2,羊3,羊4,羊5等。

在这里插入图片描述

目前图像分割的任务主要集中在语义分割,而目前的难点也在于“语义”,表达某一语义的同一物体并不总是以相同的形象出现,如包含不同的颜色、纹理等,这对精确分割带来了很大的挑战。而且以目前的模型表现来看,在准确率上还有很大的提升空间。而实例分割的思路主要是目标检测+语义分割,即用目标检测方法将图像中的不同实例框出,再用语义分割方法在不同检测结果内进行逐像素标记。

3 评价指标

图像分割中通常使用许多标准来衡量算法的精度。这些标准通常是像素精度及IoU的变种,以下我们将会介绍常用的几种逐像素标记的精度标准。

为了便于解释,假设如下:共有k+1个类(从L0到L**k,其中包含一个背景类),pij表示本属于类i但被预测为类j的像素。即pii表示预测正确的像素。

3.1 像素精度

Pixel Accuracy(PA,像素精度):这是最简单的度量,为预测正确的像素占总像素的比例。

在这里插入图片描述

对于样本不均衡的情况,例如医学图像分割中,背景与标记样本之间的比例往往严重失衡。因此并不适合使用这种方法进行度量。

3.2 平均像素精度

Mean Pixel Accuracy(MPA,平均像素精度):是PA的一种简单提升,计算每个类内被正确分类像素数的比例,之后求所有类的平均。

在这里插入图片描述

3.3 平均交并比

Mean Intersection over Union(MIoU,平均交并比):为语义分割的标准度量,其计算两个集合的交集和并集之比,在语义分割的问题中,这两个集合为真实值(ground truth)和预测值(predicted segmentation)。交集为预测正确的像素数(intersection),并集为预测或真实值为i类的和减去预测正确的像素,在每个类上计算IoU,之后求平均即可。

在这里插入图片描述

那么,如何理解这里的公式呢?如下图所示,红色圆代表真实值,黄色圆代表预测值。橙色部分红色圆与黄色圆的交集,即预测正确的部分,红色部分表示假负(真实值为该类预测错误)的部分,黄色表示假正(预测值为i类,真实值为其他)的部分。

在这里插入图片描述

MIoU计算的是计算A与B的交集(橙色部分)与A与B的并集(红色+橙色+黄色)之间的比例,在理想状态下A与B重合,两者比例为1 。

在以上所有的度量标准中,MIoU由于其简洁、代表性强而成为最常用的度量标准,大多数研究人员都使用该标准报告其结果。PA对于样本不均衡的情况不适用。

4 经典深度学习网络
4.1 FCN

FCN(Fully Convolutional Networks) 用于图像语义分割,自从该网络提出后,就成为语义分割的基本框架,后续算法基本都是在该网络框架中改进而来。

对于一般的分类CNN网络,如VGG和Resnet,都会在网络的最后加入一些全连接层,经过softmax后就可以获得类别概率信息。

在这里插入图片描述

但是这个概率只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。

而FCN提出可以把后面几个全连接都换成卷积,这样就可以获得一张2维的feature map,后接softmax获得每个像素点的分类信息,从而解决了分割问题,如下图所示:

在这里插入图片描述

简而言之,FCN和CNN的区别就是:CNN卷积层之后连接的是全连接层;FCN卷积层之后仍连接卷积层,输出的是与输入大小相同的特征图。

1 网络结构

FCN是一个端到端,像素对像素的全卷积网络,用于进行图像的语义分割。整体的网络结构分为两个部分:全卷积部分和上采样部分。

在这里插入图片描述

1.1 全卷积部分

全卷积部分使用经典的CNN网络(以AlexNet网络为例),并把最后的全连接层换成[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OlWEDzDo-1624508143015)(https://math.jianshu.com/math?formula=1%5Ctimes%201)]卷积,用于提取特征。

  • 在传统的Alex结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个不同类别的概率。

在这里插入图片描述

  • FCN将最后的3层转换为卷积层,卷积核的大小 (通道数,宽,高) 分别为 (4096,1,1)、(4096,1,1)、(1000,1,1),虽然参数数目相同,但是计算方法就不一样了,这时还可使用预训练模型的参数。

在这里插入图片描述

  • CNN中输入的图像固定成227x227大小,第一层pooling后为55x55,第二层pooling后图像大小为27x27,第五层pooling后的图像大小为13x13, 而FCN输入的图像是H*W大小,第一层pooling后变为原图大小的½,第二层变为原图大小的¼,第五层变为原图大小的⅛,第八层变为原图大小的1/16,如下所示:

在这里插入图片描述

  • 经过多次卷积和pooling以后,得到的图像越来越小,分辨率越来越低。对最终的特征图进行upsampling,把图像进行放大到原图像的大小,就得到原图像的分割结果。

1.2 上采样部分

上采样部分将最终得到的特征图上采样得到原图像大小的语义分割结果。

在这里采用的上采样方法是反卷积(Deconvolution),也叫做转置卷积(Transposed Convolution):

  • 反卷积是一种特殊的正向卷积
  • 通俗的讲,就是输入补0+卷积。先按照一定的比例通过补0来扩大输入图像的尺寸,再进行正向卷积即可。

如下图所示:输入图像尺寸为3x3,卷积核kernel为3x3,步长strides=2,填充padding=1

在这里插入图片描述

假设反卷积的输入是n x n ,反卷积的输出为mxm ,padding=p,stride=s,kernel_size = k。

那么此时反卷积的输出就为:

m=s(n−1)+k−2pm=s(n−1)+k−2p

在这里插入图片描述

与正向卷积不同的是,要先根据步长strides对输入的内部进行填充,这里strides可以理解成输入放大的倍数,而不能理解成卷积移动的步长。

这样我们就可以通过反卷积实现上采样。

1.3 跳层连接

如果只利用反卷积对最后一层的特征图进行上采样的到原图大小的分割,由于最后一层的特征图太小,会损失很多细节。因而提出增加Skips结构将最后一层的预测(有更富的全局信息)和更浅层(有更多的局部细节)的预测结合起来。

在这里插入图片描述

那么:

  • 对于FCN-32s,直接对pool5 feature进行32倍上采样获得32x upsampled feature,再对32x upsampled feature每个点做softmax prediction获得32x upsampled feature prediction(即分割图)。
  • 对于FCN-16s,首先对pool5 feature进行2倍上采样获得2x upsampled feature,再把pool4 feature和2x upsampled feature逐点相加,然后对相加的feature进行16倍上采样,并softmax prediction,获得16x upsampled feature prediction。
  • 对于FCN-8s,首先进行pool4+2x upsampled feature逐点相加,然后又进行pool3+2x upsampled逐点相加,即进行更多次特征融合。具体过程与16s类似,不再赘述。

下面有一张32倍,16倍和8倍上采样得到的结果图对比:

在这里插入图片描述

可以看到随着上采样做得越多,分割结果越来越精细。

4.2 UNet

Unet网络是建立在FCN网络基础上的,它的网络架构如下图所示,总体来说与FCN思路非常类似。

在这里插入图片描述

整个网络由编码部分(左) 和 解码部分(右)组成,类似于一个大大的U字母,具体介绍如下:

1、编码部分是典型的卷积网络架构:

  • 架构中含有着一种重复结构,每次重复中都有2个 3 x 3卷积层、非线性ReLU层和一个 2 x 2 max pooling层(stride为2)。(图中的蓝箭头、红箭头,没画ReLu)
  • 每一次下采样后我们都把特征通道的数量加倍

2、解码部分也使用了类似的模式:

  • 每一步都首先使用反卷积(up-convolution),每次使用反卷积都将特征通道数量减半,特征图大小加倍。(图中绿箭头)
  • 反卷积过后,将反卷积的结果与编码部分中对应步骤的特征图拼接起来。(白/蓝块)
  • 编码部分中的特征图尺寸稍大,将其修剪过后进行拼接。(左边深蓝虚线)
  • 对拼接后的map再进行2次3 x 3的卷积。(右侧蓝箭头)
  • 最后一层的卷积核大小为1 x 1,将64通道的特征图转化为特定类别数量(分类数量)的结果。(图中青色箭头)

数,而不能理解成卷积移动的步长。

这样我们就可以通过反卷积实现上采样。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/782266
推荐阅读
相关标签
  

闽ICP备14008679号