【无标题】
2022/2/10 23:17:01
本文主要是介绍【无标题】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
编码器-解码器
- 前言
- Encoder
- Decoder
- Convolution Layer in Encode and Decoder
前言
由于图像分割由一个卷积神经网络构成从而实现的,该网络主要由两部分组成:Encoder和Decoder也就是我们这里所说的编码器-解码器。
Encoder是一个沿用VGG16的网络模型,主要对物体信息进行解析。Decoder将解析后的信息对应成最终的图像形式,即每个像素都用对应其物体信息的颜色(或者是label)来表示。
Encoder
Encoder本身其实就是一连串的卷积网络。该网络主要由卷基层,池化层和BatchNormalization层组成。卷基层负责获取图像局域特征,池化层对图像进行下采样并且将尺度不变特征传送到下一层,而BN主要对训练图像的分布归一化,加速学习。
概括地说,encoder对图像的低级局域像素值进行归类与分析,从而获得高阶语义信息(“汽车”, “马路”,“行人”),Decoder收集这些语义信息,并将同一物体对应到相应的像素点上,每个物体都用不同的颜色表示。
Decoder
既然Encoder已经获取了所有的物体信息与大致的位置信息,那么下一步就需要将这些物体对应到具体的像素点上了。这一系列工作是由Decoder完成。Decoder对缩小后的特征图像进行上采样,然后对上采样后的图像进行卷积处理,目的是完善物体的几何形状,弥补Encoder当中池化层将物体缩小造成的细节损失。
Convolution Layer in Encode and Decoder
我们可以看到在Encoder和Decoder中都存在卷积层。他们在算法上一模一样,但是在作用上有一点不同。Encoder阶段,卷基层的主要作用就是获取图像的局部信息,并传送给池化层,然后由2x2最大池化处理,把最大值特征再次传递到下一层。所以在这部分当中,Convolution+Pooling的主要作用从图像中获取信息。
与此相反,Decoder阶段的处理是将特征层进行上采样,然后交给卷积层进行处理。上采样后的2x2区域只有一个前一层传来的1x1特征点,其余区域都是空值,因此这些空值需要被填补成适当的特征值,来让这个区域变得完整并且平滑。这个工作就是由卷积层担任的。所以位于Decoder当中的卷积层的作用是对图像进行“填补”。
一句话总结,两个阶段的卷积层在计算上是完全一样的,但是表现出的结果是有差异的。有些人根据此差异,将Encoder阶段的卷积命名为“卷积”,Decoder阶段的卷积命名为“反卷积“(或”转置卷积“),但实际上进行的处理是一样的。
这篇关于【无标题】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南