深度学习整理:semantic segmentation 继续学习(4)-基本概念与思路
目录
1.nearest neighbor pooling and bed of nails unpooling
1.基本概念
1.super-pixels :超像素最直观的解释,便是把一些具有相似特性的像素“聚合”起来,形成一个更具有代表性的大“元素”。而这个新的元素,将作为其他图像处理算法的基本单位。非常详细的介绍,如传送门。
2.under segmentation和over segmentation:
(自己的话,不专业)我认为翻译过来是欠分割和过分割。欠分割就是想分割出来的objects没完全分割出来,过分割是分割过头了。另外的图像解释如传送门。
3.The Mean Shift segmentation:Mean Shift分割是一种局部均匀化技术,对于抑制局部对象中的阴影或色调差异非常有用。这是一个示意图:
详细内容见传送门。
4.Shift-and-stitch:FCN文章中出现的知识点,在FCN中,与输入相比,获得的最终输出(默认情况下不使用任何上采样技巧)的分辨率较低。假设有一个100x100的输入图像,并且您获得了10x10的输出(来自网络)。将输出直接映射到输入分辨率将看起来不完整(即使使用高阶插值)。现在,采用相同的输入并稍微移位并获得输出并重复此过程多次。最终得到一组输出图像和一个与每个输出相对应的移位向量。可以利用具有移位矢量的这些输出图像(stitch)以在最终示意图中获得更好的分辨率。大概思路是这样。
paper看了很多遍没看懂,最后有个博主讲的很详细,如传送门。
5.mean IU:
FCN中叫Intersection over Union (IU) ,其实有些论文叫IoU,中文翻译是交并比,就是predication和label之间重叠的比例。详细解释与python代码如传送门。
6.semantic segmentation,instance segmentation ,Panoptic Segmentation(全景分割)与detection的关系
见我另一篇总结:semantic segmentation,instance segmentation ,Panoptic Segmentation(全景分割)与detection的关系
2.semantic segmentation的宏观方法:
一般的语义分割体系结构可以被广泛地认为是编码器网络,后面跟随解码器网络:
- 编码器通常是为预训练的分类网络等VGG / RESNET随后由解码器网络,用来提取feature map。
- 解码器的任务是将由编码器学习的判别特征(较低分辨率)语义地投影到像素空间(较高分辨率)上以获得dense predication。
3.解码器
由上所述,编码器通常由预训练的分类网络(VGG 等)构成,如何将经过分类网络的feature map还原回input的size就是decoder要做的部分。
根据传送门,主要方法:
1.nearest neighbor pooling and bed of nails unpooling
启发于average pooling和 max pooling。左图是最近邻上采样,右图是bed of nails unpooling(不知道如何翻译),补零的原因是因为flat(平坦)。upooling也可以叫upsample。
2.max unpooling
为了准确还原最大像素位置,干脆直接使用encoder端的max position,这种pooling方式必须在encoder端提前记录好哪一个元素是最大的,然后解码端用类似bed of nails unpooling的方式还原。
为什么它可以work?因为maxpooling 后,总会丢失一些spatial information,,semantic segmentation最重要的就是纹理边缘了,所以max upsample有助于recover 这些已经丢失的spatial information。
3.transpose convolution
刚刚介绍的都是固定的形式(fixed form),如何让upsample变得可学习那?transpose convolution就出现了。
3.1 1-D signal
针对上图的两点解释:
- 造成output 这样子 overlap的原因是 stride=2
- transpose convolution的receptive field基本上没有人care。。。(我调研了下发现的,如有错误,请指出)
顺便说一下,正常的receptive field可以简单地这么计算 kernel size / stride。
3.2 2-d signal
主流的框架(pytorch等)都是补零(padding)+stride>1,也就是说做成了卷积的模样。
reference:
https://medium.com/nanonets/how-to-do-image-segmentation-using-deep-learning-c673cc5862ef
和原文中一系列传送门。