0
点赞
收藏
分享

微信扫一扫

三.语义分割

有点d伤 2022-05-03 阅读 44

一.FCN

与经典CNN在卷积层使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷基层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后奇偶在上采样的特征图进行像素的分类。如下图所示:

1.三种上采样方式:双线性插值,反卷积,反池化,其中反卷积可以训练.

1)双线性插值

2)反卷积

其重点为转置卷积操作,详情为:转置卷积反卷积详解_bestrivern的博客-CSDN博客_反卷积

首先,卷积操作的卷积核是需要进行180度翻转的,这其中的理由不少,可以理解为进行信号处理fft变换时的卷积操作的二维情况;

其次,转置卷积其核心是利用一个维度和正向卷积维度转置的矩阵对特征图进行上采样;但通常情况下(fcn)直接对其进行补零然后进行正常的卷积(full类型),该过程的权重参数需要学习:

3)反池化

其重点为使用index进行反池化,直接或得上采样的feature map,不需要学习

 2.跳级结构

二.Segnet:

 

Encoder过程中,通过卷积提取特征,SegNet使用的卷积为same卷积,即卷积后保持图像原始尺寸;在Decoder过程中,同样使用same卷积,不过卷积的作用是为upsampling变大的图像丰富信息,使得在Pooling过程丢失的信息可以通过学习在Decoder得到。SegNet中的卷积与传统CNN的卷积并没有区别。

 与fcn相比,segnet的上采样方式有所不同,使用index的unpooling,使得可以直接放大特征图,随后做正常的卷及操作即可恢复像素为0的地方;fcn使用转置卷积,并且需要将编码阶段对应的特征图与之相加并进行学习:


三.deeplab:

第一,对于FCN网络,其虽然首次实现了end-to-end的分割,但是其下采样使用VGG网络为了增加score map的稠密程度,直接在第一次卷积时候加了100的padding,这样不优雅并且只得到了16*16的特征图;因此为了得到更加稠密的图,又不能直接减少池化层(这样会导致无法finetuning即微调即使用预训练的权重与模型),作者使用了将VGG网络的pool4和pool5层的stride由原来的2改为了1,再加上 1 padding。就是这样一个改动,使得vgg网络总的stride由原来的32变成8,进而使得在输入图像为514x514时,fc7能得到67x67的score map, 要比FCN确实要dense很多很多。但是同时感受野也会发生变化:

此时作者使用atrous convelutional,空洞卷积操作,保证了感受野不变。

第二, 使用CRF解决概率图比较模糊,细节丢失的问题,但后续版本并没有使用。

deeplab v2,3

v2主要引入了ASSP结构,进行多尺度特征的融合;

 

v3改进了这种结构

 

举报

相关推荐

0 条评论