图像分割是我大二2019年做的东西,这篇文章用来总结。
一、什么是图像分割
分语义【像素级别图像】,实例【分割物体有进一步分类】。
二、常用图像分割算法:
(一)、传统
1、基于阈值的分割方法
基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值作比较,最后将像素根据比较结果分到合适的类别中。
确定某个准则函数来求解最佳灰度阈值。【阈值法特别适用于目标和背景占据不同灰度级范围的图。】
值得一提的是:特征点检测也有此方法
2、基于区域的分割方法
直接寻找区域。有两种基本形式:一种是区域生长,从单个像素出发,逐步合并以形成所需要的分割区域;另一种是从全局出发,逐步切割至所需的分割区域。
3、基于边缘检测的分割方法
基于边缘检测的图像分割算法试图通过检测包含不同区域的边缘来解决分割问题。它可以说是人们最先想到也是研究最多的方法之一。通常不同区域的边界上像素的灰度值变化比较剧烈,如果将图片从空间域通过傅里叶变换到频率域,边缘就对应着高频部分,这是一种非常简单的边缘检测算法。
(二)、深度学习
1、基于特征编码(feature encoder based)【暴力编码】
(1)VGGNet
常规卷积
(2)ResNet
常规卷积+残差【解决梯度消失,网络变深】
Efficient Neural Network(ENet)
ResNet-38
full-resolution residual network(FRRN)
AdapNey
2、基于区域选择(regional proposal based)
由目标检测发展而来(R-CNN、Fast R-CNN)
(1)Mask R-CNN【R-CNN用到图像分割】
在Faster R-CNN的结构基础上加上了Mask预测分支,并且改良了ROI Pooling,提出了ROI Align。
(2)Mask Scoring R-CNN
评价函数只对目标检测的候选框进行打分,而不是分割模板
3、基于RNN
(1)ReSeg模型【FCN改进】
FCN的不足:没有考虑到局部或者全局的上下文依赖关系,而在语义分割中这种依赖关系是非常有用的。所以在ReSeg中作者使用RNN去检索上下文信息,以此作为分割的一部分依据。
4、基于上采样/反卷积的分割方法
卷积神经网络在进行采样的时候会丢失部分细节信息,这样的目的是得到更具特征的价值。但是这个过程是不可逆的,有的时候会导致后面进行操作的时候图像的分辨率太低,出现细节丢失等问题。因此我们通过上采样在一定程度上可以不全一些丢失的信息,从而得到更加准确的分割边界。
(1)、FCN
卷积后进行一次上采样,得到segment map。
优点:
FCN对图像进行了像素级的分类,从而解决了语义级别的图像分割问题;
FCN可以接受任意尺寸的输入图像,可以保留下原始输入图像中的空间信息;
缺点:
得到的结果由于上采样的原因比较模糊和平滑,对图像中的细节不敏感;
对各个像素分别进行分类,没有充分考虑像素与像素的关系,缺乏空间一致性。
(2)U-net
5、基于提高特征分辨率的分割方法
(1)DeepLab
恢复在深度卷积神经网络中下降的分辨率,从而获取更多的上下文信息。
DeepLab是结合了深度卷积神经网络和概率图模型的方法,应用在语义分割的任务上,目的是做逐像素分类,其先进性体现在DenseCRFs(概率图模型)和DCNN的结合。是将每个像素视为CRF节点,利用远程依赖关系并使用CRF推理直接优化DCNN的损失函数。
在图像分割领域,FCN的一个众所周知的操作就是平滑以后再填充,就是先进行卷积再进行pooling,这样在降低图像尺寸的同时增大感受野,但是在先减小图片尺寸(卷积)再增大尺寸(上采样)的过程中一定有一些信息损失掉了,所以这里就有可以提高的空间。
DeepLab提出空洞卷积解决这一问题
三、图像分割实现时具体细节问题
1、常用Loss(特指语义分割)
(1)常规图像分割
交叉熵Loss
Focal Loss【解决难易样本不均衡】
(2)医疗影像分割
Dice Loss(该损失函数的提出有一个背景,直接优化性能度量,涉及到我的另一个课题非凸优化)
IOU(常做为评价指标)
基于以上几个基本的Loss还有各种各样的改进
四、图像分割的难点在哪里?【https://zhuanlan.zhihu.com/p/72743589】
1、分割边缘不准的问题。
因为相邻临的像素对应感受野内的图像信息太过相似了,如果临近的像素都属于所需分割区域的内部,那么这种‘相似’是有利的,但是如果相邻 像素刚好处在所需分割区域的边界上,那么这种相似就是有害的了。
2、在同一副图像中不同类别或实例的像素不均衡的问题。不同物体分割的难度也并不一样。
3、标注费事费力,且标注中是可能存在噪声的。
4、如何对遮挡区域进行建模?
5、CNN的分割网络耗显存的问题。
6、如何定义图像的上下文问题。
上下文特征是很常见的,其实上下文大概去理解就是图像中的每一个像素点不可能是孤立的,一个像素一定和周围像素是有一定的关系的,大量像素的互相联系才产生了图像中的各种物体,所以上下文特征就指像素以及周边像素的某种联系。
7、模型的设计上缺少显示的不同图像中语义相同区域特征的交互。
8、如何简单有效区分同一类物体的不同实例?
五、针对图像分割难点有哪些可能有效的的解决方法?【来源同上】
1、对网络输出的分割的边界增加额外的损失,或者让网络对边界的特征和区域内部的特征分开建模学习。其本质上的思想还是让网络同时做两个任务:分割和边缘检测。另外,提高输入图像的输入分辨率和中间层特征图的分辨率同样也是简单有效的。
2、利用loss动态加权或者在图像二维空间上采样来解决同一张图像中不同语义的像素个数不均衡以及学习的难易程度不同的问题。
3、利用半监督或者弱监督学习的方法减少标注昂贵的问题。利用多个标签有噪声的样本或其特征构建虚拟的标签干净的虚拟样本或特征来减少标签的噪声。
4、利用合理的上下文的建模机制,帮助网络猜测遮挡部分的语义信息。
5、在网络中构建不同图像之间损失或者特征交互模块。