(1)什么是超像素、语义分割、实例分割、全景分割?
图像分割(image segmentation)任务的定义是:根据某些规则将图片分成若干个特定的、具有独特性质的区域,并提出感兴趣目标的技术和过程。
目前图像分割任务发展出了以下几个子领域:语义分割(semantic segmentation)、实例分割(instance segmentation)以及今年刚兴起的新领域全景分割(panoptic segmentation)。
而想要理清三个子领域的区别就不得不提到关于图像分割中 things 和 stuff 的区别:图像中的内容可以按照是否有固定形状分为 things 类别和 stuff 类别,其中,人,车等有固定形状的物体属于 things 类别(可数名词通常属于 things);天空,草地等没有固定形状的物体属于 stuff 类别(不可数名词属于 stuff)。
语义分割更注重「类别之间的区分」,而实例分割更注重「个体之间的区分」,以下图为例,从上到下分别是原图、语义分割结果和实例分割结果。语义分割会重点将前景里的人群和背景里树木、天空和草地分割开,但是它不区分人群的单独个体,如图中的人全部标记为红色,导致右边黄色框中的人无法辨别是一个人还是不同的人;而实例分割会重点将人群里的每一个人分割开,但是不在乎草地、树木和天空的分割。
(2)什么是同物异谱、同谱异物?
同物异谱:在相同的地物上,由于周围环境、病虫害或者放射性物质等影响,造成的相同的物种但是其光谱曲线不同。
异物同谱:在某一谱段区,两个不同地物可能会呈现相同的谱线特征。这是同谱异物,也可能是同一个地物,处于不同的状态,如对太阳光相对角度不同,密度不同,含水量不同,生长环境影响光谱曲线,呈现不同的谱线特征。
这两种现象在主要依靠光谱信息进行分类的算法上影响是很大,很容易造成错分、误分,在 3D-CNN 上,利用空谱联合信息来处理高光谱影像,在某种程度上可以削弱同物异谱或者同谱异物的影响。
也给遥感分类造成了困难,遥感影像在分类时主要依靠的就是地物的光谱特征,尤其是非监督分类,它的前提就是不存在“同物异谱”和异物同谱“现象。
(3)RGB图像、全色图像、多光谱图像、高光谱图像?
参考:详细理解RGB图像、全色图像、多光谱图像、高光谱图像 - CSDN博客
(4)什么是光学图像?什么是SAR图像?它们的区别是什么?成像机制有什么差异?在图像分割上有什么不同?
SAR 是主动式侧视雷达系统,且成像几何属于斜距投影类型。因此 SAR 图像与光学图像在成像机理、几何特征、辐射特征等方面都有较大的区别。在进行 SAR 图像处理和应用前,需要了解 SAR 图像的基本特征。
——from:SAR图像简介 - xuanzi_eli的博客 - CSDN博客
按传感器采用的成像波段分类,光学图像通常是指可见光和部分红外波段传感器获取的影像数据。而 SAR 传感器基本属于微波频段,波长通常在厘米级。
可见光图像通常会包含多个波段的灰度信息,以便于识别目标和分类提取。而 SAR 图像则只记录了一个波段的回波信息,以二进制复数形式记录下来;但基于每个像素的复数数据可变换提取相应的振幅和相位信息。振幅信息通常对应于地面目标对雷达波的后向散射强度,与目标介质、含水量以及粗糙程度密切相关;该信息与可见光成像获得的灰度信息有较大的相关性。而相位信息则对应于传感器平台与地面目标的往返传播距离,这与 GPS 相位测距的原理相同。
由于 SAR 影像分辨率相对较低、信噪比较低,所以 SAR 影像中所包含的振幅信息远达不到同光学影像的成像水平;但其特有的相位信息是其他传感器所无法获取的,基于相位的干涉建模也是 SAR 的主要应用方向。
在成像模式方面,光学影像通常采用中心投影面域成像或推帚式扫描获取数据;而 SAR 处于信号处理的需要(合成孔径过程,这里就不展开讨论了)不能采用垂直向下的照射方式而只能通过测视主动成像方式发射和接受面域雷达波,并通过信号处理(聚焦、压缩、滤波等)手段后期合成对应于地面目标的复数像元。
单一 SAR 影像的相位信息基本没有统计特征,只有振幅信息可用于目标识别和分类等应用。正如前面所说,振幅信息深受噪声的影响,加之 SAR 影像特有的几何畸变(叠掩、透视收缩、多路径虚假目标等)特征,个人认为仁兄若是想在图像分割领域做探讨的话,可以直接忽略掉 SAR 影像了。
——form:什么是光学图像?什么是SAR图像?它们的区别是什么?成像机制有什么差异?在图像分割上有什么不同?_百度知道
(5)遥感图像处理和普通图像处理有哪些异同呢,本质区别是什么?
参考:遥感图像处理和普通图像处理有哪些异同呢,本质区别是什么? - 知乎
(6)什么是超分辨率?
超分辨率(Super-Resolution)即通过硬件或软件的方法提高原有图像的分辨率,通过一系列低分辨率的图像来得到一幅高分辨率的图像过程就是超分辨率重建。超分辨率重建的核心思想就是用时间带宽(获取同一场景的多帧图像序列)换取空间分辨率,实现时间分辨率向空间分辨率的转换。——from:超分辨率_百度百科
超分辨率技术(Super-Resolution)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备、卫星图像和医学影像等领域都有重要的应用价值。SR可分为两类:从多张低分辨率图像重建出高分辨率图像和从单张低分辨率图像重建出高分辨率图像。基于深度学习的SR,主要是基于单张低分辨率的重建方法,即Single Image Super-Resolution (SISR)。——from:深度学习在图像超分辨率重建中的应用 - 知乎
(7)什么是高分辨遥感?
空间分辨率能够被传感器辨识的单一地物或 2 个相邻地物间的最小尺寸。空间分辨率越高,遥感图像包含的地物形态信息就越丰富,能识别的目标就越小。
高空间分辨率图像 简称“高分图像”,包含了地物丰富的纹理、形状、结构、邻域关系等信息,可主要应用于地物分类、目标提取与识别、变化检测等。——from:不懂这些怎么好意思谈遥感 - 知乎
(8)怎么理解掩膜(Mask)?
这是我早些时候整理的计算机视觉和图像分割资料,还算比较全面:计算机视觉笔记及资料整理(含图像分割、目标检测).md
含图像分割入门基础、图像分割的模型发展及介绍、图像分割数据集等等。
我在幕布上的记录:04-图像语义分割(含FCN、UNet、SegNet、PSPNet、Deeplabv1&v2&v3等)
-
常规的深度卷积神经网络 (如 AlexNet 和 VGG ) 并不适用于密集预测的任务。首先,这些模型包含许多用于减小输入特征的空间维度的层。结果,这些层最终产生缺乏清晰细节的高度抽象的特征矢量。第二,全连接层在计算过程中具有固定的输入规模和松散的空间信息。
-
作为一个例子,试想通过一系列的卷积来传递图像,而不是使用池化和全连接层。我们将每次卷积都设置成步长为 1,padding 为「SAME」。通过这种处理,每一次卷积都保留了输入的空间维度。我们可以堆叠很多这种卷积,并最终得到一个分割模型。用于密集预测的全卷积神经网络。请注意,不存在池化层和全连接层。
-
这个模型可以输出形状为 [W,H,C] 的概率张量,其中 W 和 H 代表的是宽度和高度,C 代表的是类别标签的个数。在第三个维度上应用最大化函数会得到形状为 [W,H,1] 的张量。然后,我们计算真实图像和我们的预测的每个像素之间的交叉熵。最终,我们对计算结果取平均值,并且使用反向传播算法训练网络。
-
然而,这个方法存在一个问题。正如前面所提到的,使用步长为 1,padding 为「SAME」,保留了输入的维度。但是,那样做的后果就是模型会极其耗费内存,而且计算复杂度也是很大的。
-
为了缓解这个问题,分割网络通常会有三个主要的组成部分:卷积层、降采样层和上采样层。
- ①图像语义分割模型的编码器-解码器结构。
- 在卷积神经网络中实现降采样的常用方式有两个:通过改变卷积步长或者常规的池化操作。一般而言,降采样的目标就是减少给定特征图的空间维度。因此,降采样可以让我们在执行更深的卷积运算时不用过多地考虑内存。然而,这样一来在计算的时候会损失一些特征。
- 值得注意的是,这个架构的第一部分看上去类似于普通的分类深度卷积神经网络。不同的是,其中没有设置全连接层。
- 有很多基于编码器—解码器结构的神经网络实现。FCNs、SegNet,以及 UNet 是最流行的几个。
- ②膨胀卷积,抛弃了池化层。
- ①图像语义分割模型的编码器-解码器结构。
在学习完常见的语义分割模型后,可以看下面这些文章再梳理下。
(1)10分钟看懂全卷积神经网络(FCN):语义分割深度模型先驱 - TinyMind
所有的发展都是漫长的技术积累,加上一些外界条件满足时就会产生质变。我们简单总结了图像分割的几个时期:
2000年之前,数字图像处理时我们采用方法基于几类:阈值分割、区域分割、边缘分割、纹理特征、聚类等。
2000年到2010年期间, 主要方法有四类:基于图论、聚类、分类以及聚类和分类结合。
2010年至今,神经网络模型的崛起和深度学习的发展,主要涉及到几种模型:
截至到2017年底,我们已经分化出了数以百计的模型结构。当然,经过从技术和原理上考究,我们发现了一个特点,那就是当前最成功的图像分割深度学习技术都是基于一个共同的先驱:FCN(Fully Convolutional Network,全卷积神经网络)。
发展历程:
-
2014年 FCN 模型,主要贡献为在语义分割问题中推广使用端对端卷积神经网络,使用反卷积进行上采样
-
2015年 U-net 模型,构建了一套完整 的编码解码器
-
2015年 SegNet 模型,将最大池化转换为解码器来提高分辨率
-
2015年 Dilated Convolutions(空洞卷积),更广范围内提高了内容的聚合并不降低分辨率
-
2016年 DeepLab v1&v2
-
2016年 RefineNet 使用残差连接,降低了内存使用量,提高了模块间的特征融合
-
2016年 PSPNet 模型
-
2017年 Large Kernel Matters
-
2017年 DeepLab V3
以上几种模型可以按照语义分割模型的独有方法进行分类,如专门池化(PSPNet、DeepLab),编码器-解码器架构(SegNet、E-Net),多尺度处理(DeepLab)、条件随机场(CRFRNN)、空洞卷积(DiatedNet、DeepLab)和跳跃连接(FCN)。
(2)深度学习(十九)——FCN, SegNet, DeconvNet, DeepLab, ENet, GCN
前DL时代的语义分割:
Grab cut是微软剑桥研究院于2004年提出的著名交互式图像语义分割方法。与N-cut一样,grab cut同样也是基于图划分,不过grab cut是其改进版本,可以看作迭代式的语义分割算法。Grab cut利用了图像中的纹理(颜色)信息和边界(反差)信息,只要少量的用户交互操作即可得到比较好的前后背景分割结果。
在Grab cut中,RGB图像的前景和背景分别用一个高斯混合模型(Gaussian mixture model, GMM)来建模。两个GMM分别用以刻画某像素属于前景或背景的概率,每个GMM高斯部件(Gaussian component)个数一般设为k=5。接下来,利用吉布斯能量方程(Gibbs energy function)对整张图像进行全局刻画,而后迭代求取使得能量方程达到最优值的参数作为两个GMM的最优参数。GMM确定后,某像素属于前景或背景的概率就随之确定下来。
在与用户交互的过程中,Grab cut提供两种交互方式:一种以包围框(Bounding box)为辅助信息;另一种以涂写的线条(Scribbled line)作为辅助信息。以下图为例,用户在开始时提供一个包围框,grab cut默认的认为框中像素中包含主要物体/前景,此后经过迭代图划分求解,即可返回扣出的前景结果,可以发现即使是对于背景稍微复杂一些的图像,grab cut仍有不俗表现。
不过,在处理下图时,grab cut的分割效果则不能令人满意。此时,需要额外人为的提供更强的辅助信息:用红色线条/点标明背景区域,同时用白色线条标明前景区域。在此基础上,再次运行grab cut算法求取最优解即可得到较为满意的语义分割结果。Grab cut虽效果优良,但缺点也非常明显,一是仅能处理二类语义分割问题,二是需要人为干预而不能做到完全自动化。
不难看出,前DL时代的语义分割工作多是根据图像像素自身的低阶视觉信息(Low-level visual cues)来进行图像分割。由于这样的方法没有算法训练阶段,因此往往计算复杂度不高,但是在较困难的分割任务上(如果不提供人为的辅助信息),其分割效果并不能令人满意。
(3)基于深度学习的语义分割简述及初探[译] - AIUAI
语义分割是对图像的一种更精细的推断与理解,由粗到细为:
- 图像分类 - 初级的图片理解,其对整张图片进行整体理解.
- 目标定位与检测 - 不仅提供图像内的类别,还包括相对于物体类别的空间为位置信息.
- 语义分割 - 对每个图像像素进行密集预测,得到像素类别信息.
。。。
[1] 基于区域的语义分割
[2] 基于 FCN 的语义分割
[3] 弱监督语义分割
(1)语义分割中的深度学习方法全解:从FCN、SegNet到各代DeepLab - 知乎
该文要点:
- FCN网络;
- SegNet网络;
- 空洞卷积(Dilated Convolutions);
- DeepLab (v1和v2);
- RefineNet;
- PSPNet;
- 大内核(Large Kernel Matters);
- DeepLab v3;
对于上面的每篇论文,将会分别指出主要贡献并进行解释,也贴出了这些结构在 VOC2012 数据集中的测试分值IOU。
图像的语义分割是将输入图像中的每个像素分配一个语义类别,以得到像素化的密集分类。
虽然自 2007 年以来,语义分割/场景解析一直是计算机视觉社区的一部分,但与计算机视觉中的其他领域很相似,自 2014 年 Long 等人首次使用全卷积神经网络对自然图像进行端到端分割,语义分割才有了重大突破。
本文作者总结了 FCN、SegNet、U-Net、FC-Densenet E-Net 和 Link-Net、RefineNet、PSPNet、Mask-RCNN 以及一些半监督方法,如 DecoupledNet 和 GAN-SS,并为其中的一些网络提供了 PyTorch 实现. 在文章的最后一部分,作者总结了一些流行的数据集,并展示了一些网络训练的结果。
像分割也是一项有意思的研究领域,它的目的是把图像中各种不同物体给用不同颜色分割出来,如下图所示,其平均精度(mIoU,即预测区域和实际区域交集除以预测区域和实际区域的并集),也从最开始的 FCN 模型(图像语义分割全连接网络,该论文获得计算机视觉顶会 CVPR2015 的最佳论文的)的 62.2%,到 DeepLab 框架的 72.7%,再到牛津大学的 CRF as RNN 的74.7%。该领域是一个仍在进展的领域,仍旧有很大的进步空间。
。。。。。。
精确度:
图像分割中通常使用许多标准来衡量算法的精度。这些标准通常是像素精度及 IoU 的变种,以下我们将会介绍常用的几种逐像素标记的精度标准。为了便于解释,假设如下:共有 k+1 个类(从到,其中包含一个空类或背景),表示本属于类i但被预测为类 j 的像素数量。即,表示真正的数量,而则分别被解释为假正和假负,尽管两者都是假正与假负之和。
-
Pixel Accuracy(PA,像素精度):这是最简单的度量,为标记正确的像素占总像素的比例。
-
Mean Pixel Accuracy(MPA,均像素精度):是 PA 的一种简单提升,计算每个类内被正确分类像素数的比例,之后求所有类的平均。
-
Mean Intersection over Union(MIoU,均交并比):为语义分割的标准度量。其计算两个集合的交集和并集之比,在语义分割的问题中,这两个集合为真实值(ground truth)和预测值(predicted segmentation)。这个比例可以变形为正真数(intersection)比上真正、假负、假正(并集)之和。在每个类上计算 IoU,之后平均。
-
Frequency Weighted Intersection over Union(FWIoU,频权交并比):为 MIoU 的一种提升,这种方法根据每个类出现的频率为其设置权重。
在以上所有的度量标准中,MIoU 由于其简洁、代表性强而成为最常用的度量标准,大多数研究人员都使用该标准报告其结果。
。。。。。。
召回率、正确率:
针对预测样本而言,预测为正例的样本中真正正例的比例。
预测为正的有两种:
- 正样本被预测为正 TP
- 负样本被预测为正 FP
所以精确率:precesion = TP/(TP+FP) 其中分母预测为正样本数量。
针对原来的样本而言,表示样本中有多少正例被预测正确了(预测为正例的真是整理占所有真实正例的比例):
- 原来的正样本被预测为正样本 TP
- 原来的正样本被预测为负样本 FN
所以召回率为:racall = TP/(TP+FN) 其中分母表示原来样本中的正样本数量。
。。。。。。
参考:
可以从以下几个指标评价某个分割算法的好坏:
- mIoU:这个指标是应用最多的,也是目前排名分割算法的依据。IoU就是每一个类别的交集与并集之比,而mIoU则是所有类别的平均IoU。论文均使用这一指标比较。
- speed:由于有些分割算法是针对实时语义分割设计的,所以速度也是一个很重要的评价指标,当然评价速度需要公平比较,包括使用的图像大小、电脑配置一致。
- 当然还有其他指标,如pixel accuracy、mean accuraccy等。
下面以一个简单的例子,说明怎么计算mIoU,由于分割也是分类问题,分类问题的指标一般使用混淆矩阵来求解。
mIoU:
其中(k+1)为类别数,pii表示TP,pij表示FN,pji表示 FP(i表示真实类别,j表示其他类别),则每一个类别的IoU可以看作,IoU=TP/(TP+FN+FP)。
以三个类别为例,如下是一个混淆矩阵:
对于类别1:TP=43,FN=7,FP=2;类别2:TP=45,FN=5,FP=6;类别3:TP=49,FN=1,FP=5.因此:IoU1=43/(43+2+7)=82.69%,IoU2=45/(45+5+6)=80.36%,IoU=49/(49+1+5)=89.09%,因此mIoU=84.05%.其实就是矩阵的每一行加每一列,再减去重复的TP。
常用数据集:
目前语义分割领域使用的数据集较多,这里主要介绍3个数据集,VOC2012/Cityscape/CamVid,所有数据集均没有达到饱和,仍有很大发展空间,无论在准确性还是实时性。
忽视标签(ignore label)
在介绍数据集之前,先来了解一下忽视标签的概念与作用。忽视标签从字面上理解,就是该标签不用于计算损失,也不用于计算精度。以一个三个类别的例子为例。
该例子,包含3个目标类别,1个背景类别,1个忽视类别。
标签可以设置为:0,1,2,3,4
其中,0代表背景,1-3代表目标类别,4代表忽视目标。
那么,目标类别数到底该设为多少呢?4还是5。
这里我看了很多地方,最简单的方式就是设置为4,这样训练过程中,4这个类别将不计算损失,同时我们也不需要进行预测argmax。
(1)VOC2012
原始VOC2012数据集:1464训练集,1449验证集,1456测试集。经过加强的数据集,包含10582训练集,1449验证集,1456测试集。**目前论文结果均使用后者进行训练。**该数据集特点包括:
- 数据集包含21类别目标,20类目标+1类背景,分辨率大小不完全相同,为此训练过程为了能处理batch图像,因此需要将图像固定到某一大小,deeplab里面使用321大小。
- 该数据集中,label处理时发现并没有忽视标签,均在0-21之间,因此不需要设置忽视标签。在deeplab版本里作者将ignore_index设为255,标签里面本来就没有255,设不设置没关系.
- **每幅图像包含的目标类别很少,但每个目标的轮廓还是比较复杂,**因此,该数据集的分割精度没有想象中那么高。
(2)CamVid
训练集367,验证集101,测试集233。三个均有标注文件。有一下几个特点:
- 图像数量太少,因此很少有人跑这个数据集,只有少数轻量级分割网络会跑,如ENet/Segnet/LinkNet/Bisenet等,现在能看到的最好精度也就60多mIOU。
- 原始数据集分辨率为960×720,而Segnet将其处理为480*360,后者也是使用得多,可能是因为Segnet将其处理后的文件夹上传的原因吧。
- 该数据集也存在忽视标签,Segnet作者将其统一设置为11,类别数为11,标注为0-10,因此计算softmax损失时,需要设置ignore_index=11,或者在处理标签图片时,将mask[index==11] = -1,这样处理后不计算忽视标签的损失。
- 由于图像分辨率为480*360,且有11类目标,造成细小目标偏多,如行人,交通灯等。
(3)Cityscape
训练集2975,验证集500,测试集1525。训练集与验证集包括Fine annotations以及额外的19998个coarse annotations,可以于训练集一起训练。测试集标注没有公开。数据集主要特点包括:
。。。。。。