论文研读(二):Superpixel Segmentation with Fully Convolutional Networks

论文题目:用全卷积网络实现的超像素分割

************************************ 补充:**********************************

原文代码调试

1.超像素

  超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将像素分组,用少量的超像素代替大量的像素来表达图片特征(捕获图像的冗余信息),很大程度上降低了图像后处理的复杂度,所以通常作为分割算法的预处理步骤。已经广泛用于图像分割、姿势估计、目标跟踪、目标识别等计算机视觉应用。需要注意的是,超像素很可能把同一个物体的不同部分分成多个超像素。
  超像素:就可以简单的根据字面意思理解,超就是超过,再结合像素这个特定的语义环境就可以理解超像素就是一种“大的像素”,像素怎么还有大小?接下来看百度百科关于超像素的定义:在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。超像素由一系列位置相邻且颜色、亮度、纹理等特征相似的像素点组成的图像块(小区域)。这些小区域大多保留了进一步进行图像分割的有效信息,且一般不会破坏图像中物体的边界信息。
  也就是说超像素就是把一些具有相似特性的像素“聚合”起来,是对图像的一种压缩,以此来形成一个更具有代表性的“大的像素”。而这个新的元素-----超像素(大的像素),将被看做pixel作为其他图像处理算法的基本单位来使用。这里就知道了超像素的功能之一就是作为图像处理其他算法的预处理过程,在不牺牲太大精确度的情况下降维!

2.Stereo matching task

  Stereo matching:双目立体匹配。双目立体匹配一直是双目视觉的研究热点。双目相机拍摄同一场景的左、右两幅视点图像,运用立体匹配算法获取视差图,进而获取深度图。而深度图的应用范围非常广泛,由于其能够记录场景中物体距离摄像机的距离,可以用以测量、三维重建、以及虚拟视点的合成等。
  双目立体视觉,在百度百科里的解释是这样解释的:双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。
  视差图:双目立体视觉融合两只眼睛获得的图像并观察它们之间的差别,使我们可以获得明显的深度感,建立特征间的对应关系,将同一空间物理点在不同图像中的映像点对应起来,这个差别,我们称作视差(Disparity)图。
  深度图:深度图像也叫距离影像,是指将从图像采集器到场景中各点的距离(深度)值作为像素值的图像。获取方法有:激光雷达深度成像法、计算机立体视觉成像、坐标测量机法、莫尔条纹法、结构光法。
  立体匹配算法:主要是通过建立一个能量代价函数,通过此能量代价函数最小化来估计像素点视差值。立体匹配算法的实质就是一个最优化求解问题,通过建立合理的能量函数,增加一些约束,采用最优化理论的方法进行方程求解,这也是所有的病态问题求解方法。

3.K-means clustering module

  K-均值聚类是无监督算法。k-means clustering是一个根据数据的特征将数据分类为k组的算法。k是一个正整数。分组是根据原始数据与聚类中心(cluster centroid)的距离的平方最小来分配到对应的组中。这里和分类简单区分一下,分类需要给定分类标准或者从训练集中学习,从而得到分类的标准依据来对未知事物进行分类,这个过程叫做监督学习。而聚类并不需要知道按照没事标准进行聚类,只需要把相似的东西聚到一起就可以了。因此,聚类算法只需要知道如何计算相似度就可以了同时也不需要使用训练数据进行无监督学习。
k-means clustering实现步骤很简单。刚开始我们需要为各个聚类中心设置初始位置。我们可以从原始数据中随机取出几个对象作为聚类中心。然后k-means算法执行以下三步直至收敛。
1.确定中心的坐标
2.确定每个对象与每个中心的位置
3.根据与中心位置的距离,每个对象选择距离最近的中心归为此组。

******************************************************************************

Abstract

  在计算机视觉中,超像素是一种有效的方法被用来减少图像的基元数量以进行后续处理的有效方法(结合补充知道这里的基元其实就是我们一般意义上的像素点pixel,没有被预处理过的像素点pixel)。但是只有极少一部分人将它们与深度神经网络结合起来,一个主要的原因是标准卷积运算是在规则的网格上定义的,并且在应用于超像素时效率低下。 受传统超像素算法通常采用的初始化策略的启发,我们提出了一种新颖的方法,该方法采用简单的全卷积网络来预测规则图像网格上的超像素。实验结果显示的了优越的性能。基于预测的超像素,我们进一步开发了一种深网络的下采样/上采样方案,目的是为密集预测任务生成高分辨率输出。 具体来说,我们修改了一种流行的立体匹配网络体系结构,以同时预测超像素和差异。 我们表明,在公共数据集上可以获得更好的视差估计精度。
这篇文章关于超像素的部分是基于SLIC改进的,传统的超像素方法有俩个致命的缺陷:一个是不可微,另外一个就是不能在规则的网格上实现。SSN解决了不可微的问题,这篇文章解决了在规则网格上低效的问题。

Motivations

  在计算机视觉中,超像素是一种有效的方法被用来减少图像的基元数量以进行后续处理的有效方法(这里的基元其实就是我们一般意义上的像素点pixel,没有被预处理过的像素点pixel)。但是只有极少一部分人将它们与深度神经网络结合起来,一个主要的原因是标准卷积运算是在规则的网格上定义的,并且在应用于超像素时效率低下。也就是说motivations就是想提出一种在规则网格上学习超像素的深度学习方法。

Contributions

  在计算机视觉中,超像素通过将感知上相似的像素分组在一起,从而提供了图像数据的紧凑表示。然而,超像素尚未在DNN中被广泛采用以减小尺寸.其中一个原因就是CNN中标准的卷积操作定义在规格的网格上的。为了解决克服这个困难文中提出了一种深度学习方法在规则的网格上学习超像素。
  因此,我们将超像素分割作为一项任务,旨在找到图像像素和规则网格单元之间的关联分数,并使用完全卷积网络(FCN)直接预测该分数。

  1. 我们提出了一个简单的全卷积网络结构来实现超像素分割,并且在基础的公共数据集上性能较好。
  2. 我们为DNN引入了一个基于超像素的通用下采样/上采样框架。
    这就是文章的主要contributions,我的关注点只有第一个如何用DNN实现超像素。
    在作者的相关工作中分为三个部分,超像素分割、DNN中超像素的使用和双目立体匹配。

超像素分割

文中参考了[33]对现有的超像素分割的方法进行了研究,文中主要的讨论在初始化步骤中使用规则网格的方法。

SLIC:简单线性迭代聚类

思想:

它是2010年提出的一种思想简单、实现方便的算法,将彩色图像转化为CIELAB颜色空间和XY坐标下的5维特征向量,然后对5维特征向量构造距离度量标准,对图像像素进行局部聚类的过程。SLIC算法能生成紧凑、近似均匀的超像素,在运算速度,物体轮廓保持、超像素形状方面具有较高的综合评价,比较符合人们期望的分割效果。其实是从k-means算法演化的,算法复杂度是O(n),只与图像的像素点数有关。

创新点:
  1. 限制聚类时搜索的区域(2Sx2S),这样将k-means算法的复杂度降为常数。整个算法的复杂度为线性。
  2. 计算距离时考虑LAB颜色和XY距离,5维。这样就把颜色和距离都考虑进去了。通过M可以调整颜色和距离的比重,灵活性强,超像素更加规则。
优点:

1)生成的超像素如同细胞一般紧凑整齐,邻域特征比较容易表达。这样基于像素的方法可以比较容易的改造为基于超像素的方法。2)不仅可以分割彩色图,也可以兼容分割灰度图。3)需要设置的参数非常少,默认情况下只需要设置一个预分割的超像素的数量。4)相比其他的超像素分割方法,SLIC在运行速度、生成超像素的紧凑度、轮廓保持方面都比较理想。

LAB颜色空间:

LAB色彩模型有L、A和B三个通道,L通道主要是亮度通道,L的值域由0(黑色)到100(白色)。A和B通道主要是负责色彩变换,a表示从洋红色至绿色的范围(a为负值指示绿色而正值指示品红),b表示从黄色至蓝色的范围(b为负值指示蓝色而正值指示黄色)。Lab颜色空间的优点:1)不像RGB和CMYK色彩空间,Lab 颜色被设计来接近人类生理视觉。它致力于感知均匀性,它的 L 分量密切匹配人类亮度感知。因此可以被用来通过修改 a 和 b 分量的输出色阶来做精确的颜色平衡,或使用 L 分量来调整亮度对比。这些变换在 RGB 或 CMYK 中是困难或不可能的。2)因为 Lab 描述的是颜色的显示方式,而不是设备(如显示器、打印机或数码相机)生成颜色所需的特定色料的数量,所以 Lab 被视为与设备无关的颜色模型。3)色域宽阔。它不仅包含了RGB,CMYK的所有色域,还能表现它们不能表现的色彩。人的肉眼能感知的色彩,都能通过Lab模型表现出来。另外,Lab色彩模型的绝妙之处还在于它弥补了RGB色彩模型色彩分布不均的不足,因为RGB模型在蓝色到绿色之间的过渡色彩过多,而在绿色到红色之间又缺少黄色和其他色彩。如果我们想在数字图形的处理中保留尽量宽阔的色域和丰富的色彩,最好选择Lab。

算法原理:

整个算法的输入只有一个,即超像素的个数K。图片原有N个像素,要分割成K个像素,那么每个像素的大小是N/K。超像素之间的距离(即规则情况下超像素的边长)就是S=√N/K。我们的目标是使代价函数(cost function)最小。具体到本算法中,就是每个像素到所属的中心点的距离之和最小。首先,将K个超像素种子(也叫做聚类,即超像素的中心),均匀撒到图像的像素点上。一次迭代的第一步,对每个超像素的中心,2S范围内的所有像素点,判断他们是否属于这个超像素。这样之后,就缩短了像素点到超像素中心的距离。一次迭代的第二步,对每个超像素,将它的超像素中心移动到这个超像素的中点上。这样也缩短了像素点到超像素中心的距离。一般来说,迭代10是聚类效果和计算成本折中的次数。

实现步骤:
  1. 撒种子。将K个超像素中心分布到图像的像素点上。
  2. 微调种子的位置。以K为中心的3×3范围内,移动超像素中心到这9个点中梯度最小的点上。这样是为了避免超像素点落到噪点或者边界上。
  3. 初始化数据。取一个数组label保存每一个像素点属于哪个超像素。dis数组保存像素点到它属于的那个超像素中心的距离。
  4. 对每一个超像素中心x,它2S范围内的点:如果点到超像素中心x的距离(5维)小于这个点到它原来属于的超像素中心的距离,那么说明这个点属于超像素x。更新dis,更新label。
  5. 对每一个超像素中心,重新计算它的位置。
  6. 重复4、5 两步。

SSN

在这里插入图片描述
  图中的箭头是双线性插值上采样,多个输入会被拼接起来送入卷积。卷积使用的都是3x3卷积,每一层输出为64通道,除了最后一层的输出为k-5,因为要和原图像的XYLab特征向量进行拼接,一起生成一个k维的特征张量集合。k维特征被送入两个可微的SLIC模块,迭代更新关联与聚类中心v步,整个网络端到端训练。

在这里插入图片描述  结合上图给出的SSN和本文的结构区别,本文使用的是全卷积结构图参考下图:PPT.5大致是一个encoder-decoder的框架。Encoder就相当于SSN中的特征提取部分,而decoder就相当于是SSN中的进行分割的部分。SSN中的特征提取和超像素分割是分了俩步进行并且最后是将合并的张量送入网络进行分割的本文应用一个encoder-decoder的结构合二为一,不仅包含了SSN的优点而且还加快了推理速度。
  关于损失函数由俩部分组成。第一项将属性相近的像素进行分组,第二项强制超像素在空间的紧凑性(就是图二中的红色框,限制搜索区域)。根据f§属性的不同有俩种距离度量方法,一种是color vector,按照这种方法最后的损失函数和SLIC类似。另外一种是语义标签的one-hot encoding vector的交叉熵损失函数。这个在双目立体匹配是使用的color的形式。

实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文章读的似懂非懂,如有错误请大家指出,这也是我的荣幸!!!
1.超像素分割算法研究综述

猜你喜欢

转载自blog.csdn.net/weixin_44825185/article/details/106916182