首页 > 编程知识 正文

fizz网关,BMA网络

时间:2023-05-03 21:57:35 阅读:36864 作者:3744

Q1:seq2seq

A1:根据一个输入序列x生成另外一个输出序列y

q 2:填充的三种方法

a 2:填充包括full、same、valid、其实这三种不同模式是对卷积核移动范围的不同限制

将image的大小设为7x6,将过滤器的大小设为3x3

1 .全模式

橙色的部分是image,蓝色的部分是filter。 f ull模式的意思是,从filter和image刚相交开始做卷积,白色部分填写0。 过滤器的运动范围如图所示。

2. same mode

当filter的中心(K)与image的边角重合时,开始做卷积运算注意:这里的same还有另一个含义。 卷积后输出的特性贴图的大小相对于输入图像是恒定的。 当然,same模式并不意味着完整的输入/输出大小,它还与卷积内核的步长大小有关。 same模式也是最常见的模式。 由于此模式在向前传播期间可以保持特征图的大小不变,因此调整人员无需准确计算大小的变化。 因为尺寸完全不会变化。

3 .保值模式

当filter全部在image里面的时候,进行卷积运算

编码器-解码器模型

基于编码器-解码器的模型是非常典型的图像分割模型(FNC网络,严格地说,实际上就是这个模型)。 http://www.Sina.com/http://www.Sina.com /常用的下采样网络是vgg-16、ResNet。 http://www.Sina.com/http://www.Sina.com /

更直观地理解,模型通常由两部分组成,即Encoder部分和Decoder 部分中间的高维分布,我们看不见,但是神经网络可以很好地使用它。 利用这种中间高维分布的思想,建立了原图像到像素级分类图像的桥梁,实现了端到端训练过程。

SegNet网络Encoder会通过convolutional layers对image进行下采样,使得图片size减小,而channel增加

1 .网络体系结构网络结构:

SegNet网络结构如图所示,Input是输入图像,Output是输出分割后的图像,根据颜色表现出不同的分类。 语义分割的重要性不仅在于告诉你照片中的什么,还在于告诉你照片的位置。 可以看到由中央绿色轮询层和红色upsampling层分割的对称网络。 左侧通过卷积提取高维特征,用轮询缩小图像。 SegNet作者称为Encoder,右侧为反卷积(此处不区分反卷积和反卷积)和upsampling,反卷积可以再现图像的分类特征,upsampling增大图像,SegNet作者则解码图像这就是大致的SegNet进程,

2 .编码器编码器端使用Vgg16,共使用Vgg16的13个卷积层。 如下图所示,通过去掉下采样网络的fn层,只保留卷积层,从而达到对图片下采样(Encoder)的目的有助于保持高频信息的完整性,但如果取消池中的低分辨率特征图,则邻居信息也会被忽略。 上采样后得到的是稀疏特征图,通过常规卷积得到稠密特征图,并重复上采样。 最后利用激活函数得到onehot分类结果。

在编码器过程中,通过卷积提取特征,SegNet使用的卷积是same卷积,即在卷积后保持图像原始大小的解码器过程中也使用了same卷积,但卷积的作用是upsampling SegNet的卷积与传统的CNN的卷积没有区别。

3 .轮询更新(解码器) :

Poo

ling在CNN中是使得图片缩小一半的手段,通常有max与mean两种Pooling方式,下图所示的是max Pooling。max Pooling是使用一个2x2的filter,取出这4个权重最大的一个,原图大小为4x4,Pooling之后大小为2x2,原图左上角黄色的四个数,最后只剩最大的0.8,这就是max的意思。 

在SegNet中的Pooling与其他Pooling多了一个index功能(该文章亮点之一),每次Pooling,都会保存通过max选出的权值在2x2 filter中的相对位置,对于上图的0.8来说,0.8在黄色2x2 filter中的位置为(0,1)(index从0开始),绿色的0.9的index为(1,0)。同时,从网络框架图可以看到绿色的pooling与红色的upsampling通过pool indices相连,实际上是pooling后的indices输出到对应的upsampling(因为网络是对称的,所以第1次的pooling对应最后1次的upsamping,如此类推)。 
        Upsamping就是Pooling的逆过程(index在Upsampling过程中发挥作用),Upsamping使得图片变大2倍。我们清楚的知道Pooling之后,每个filter会丢失了3个权重,这些权重是无法复原的,但是在Upsamping层中可以得到在Pooling中相对Pooling filter的位置。所以Upsampling中先对输入的特征图放大两倍,然后把输入特征图的数据根据Pooling indices放入,下图所示,Unpooling对应上述的Upsampling,switch variables对应Pooling indices。

 对比FCN可以发现SegNet在Unpooling时用index信息,直接将数据放回对应位置,后面再接Conv训练学习。这个上采样不需要训练学习(只是占用了一些存储空间)。反观FCN则是用transposed convolution策略,即将feature 反卷积后得到upsampling,这一过程需要学习,同时将encoder阶段对应的feature做通道降维,使得通道维度和upsampling相同,这样就能做像素相加得到最终的decoder输出. 

左边是SegNet的upsampling过程,就是把feature map的值 abcd, 通过之前保存的max-pooling的坐标映射到新的feature map中,其他的位置置零.

右边是FCN的upsampling过程,就是把feature map, abcd进行一个反卷积,得到的新的feature map和之前对应的encoder feature map 相加.

SegNet的分割精度略好于FCN
 

 4.Deconvolution

 pooling&Upsampling示意图中右边的Upsampling可以知道,2x2的输入,变成4x4的图,但是除了被记住位置的Pooling indices,其他位置的权值为0,因为数据已经被pooling走了。因此,SegNet使用的反卷积在这里用于填充缺失的内容,因此这里的反卷积与卷积是一模一样,在网络框架图中跟随Upsampling层后面的是也是卷积层。

5.Output:

 在网络框架中,SegNet,最后一个卷积层会输出所有的类别(包括other类),网络最后加上一个softmax层,由于是end to end, 所以softmax需要求出所有每一个像素在所有类别最大的概率,最为该像素的label,最终完成图像像素级别的分类。

总结


(1)编码器部分的特征如果可以被很好的保存,例如本文的pooling操作,保存了其索引,可以取得很好的分割效果,尤其是在边缘部分。

(2)SegNet效率很高,因为它只存储特征映射的最大池索引,并在其解码器网络中使用它们来获得良好的性能。

(3)本文的pooling操作可以解决推断过程中内存消耗大的问题。

(4)对于给定的编码器,使用更大的解码器可以提升分割的精度。

(5)Bayesian SegNet就是在SegNet基础上网络结构增加dropout,增加后处理操作,本质是一种模型集成。
 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。