【SegNet】 A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
日常吐槽
为什么明明英文论文动辄8,9页,十来页的,结果最后看人家翻译成中文,也并不多!!??我还是看的很吃力??
反(上)卷积-反(上)池化-上采样
- 反卷积 Deconvolution
如上图的(a)。反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸
。那么到底反卷积有什么作用呢?通过反卷积可以用来可视化卷积的过程,反卷积在GAN等领域中有着大量的应用。
- 反池化 Unpooling
在池化的过程中,上图中,橙色一个区进行最大池化,绿色一个区进行最大池化。记录最大值以及最大值的位置,在uppooling的过程中,原来的最大值重新出现在了它原来的位置,其他位置给0.
- 上采样 Unsampling
在 第一个图中的b)图,在于UnSampling阶段没有使用MaxPooling时的位置信息,而是直接将内容复制来扩充Feature Map。从图中即可看到两者结果的不同。
DeConvNet
Learning Deconvolution Network for Semantic Segmentation
ICCV2015
- FCN的不足
DeConvNet是针对FCN进行了改善。
下图是FCN 的结构
1)FCN 因为其固定尺寸receptive field只能解决单尺度的semantics ,对于过大过小的目标分割都有可能有问题
the network can handle only a single scale semantics within image due to the fixed-size receptive field. Therefore, the object that is substantially larger or smaller than the receptive field may be fragmented or mislabeled.
如图,a)图由于bus太大了,挡住了person,bicycle,car的分割。b)图则由于person太小了,根本检测不到2333.
2)FCN 的 deconvolution procedure 太粗糙太简单,FCN 的 deconvolution procedure输入尺寸只有16 × 16,将这个尺寸通过 bilinear interpolation 放大到输入图像尺寸。目标很多细节信息丢失
- DeConNet的架构
DeconvNet 和 SegNet 的结构非常类似,只不过 DeconvNet 在 encoder 和 decoder 之间使用了 FC 层作为中介,用于增强类别的分类。
卷积层:使用VGG-16(去除分类层),把最后分类的全连接层去掉,在适当的层间应用Relu和Maxpooling。增加两个全连接层(1x1卷积)来强化特定类别的投影。
反卷积层:卷积层的镜像,包括一系列的 unpooling,deconvolution,Relu 层
网络输出:概率图,和输入图像大小相同,表明每个像素点属于预定义类别的概率
-
和SegNet的关系
DeConvNet基于FCN改进了上采样层,用到了反池化和反卷积操作,参数量2亿多,非常大.
Segnet把两个全连接层去掉,效果也能很好,显著减少了参数,只有290万,提升了性能
SegNet
- 应用场景
SegNet背后的主要动机是需要设计一种有效的道路和室内场景理解架构。
截了个图https://www.youtube.com/watch?v=CxanE_W46ts
- SegNet的架构
在编码器处,执行卷积和最大池化。VGG-16有13个卷积层。 不用全连接的层。在进行2×2最大池化时,存储相应的最大池化索引(位置)。
使用最大池化的索引进行Unpooling。
在解码器处,执行反池化和卷积。最后,每个像素送到softmax分类器。调用相应编码器层处的最大池化索引以进行反池化。
最后,使用K类softmax分类器来预测每个像素的类别。
反池化如图(前面也介绍了):
参考链接
语义分割--DeconvNet--Learning Deconvolution Network for Semantic Segmentation
[论文笔记]SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
【论文翻译】SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation