【Encoder-Decoder】

怀晋
2023-12-01

前言

由于图像分割由一个卷积神经网络构成从而实现的,该网络主要由两部分组成: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阶段的卷积命名为“反卷积“(或”转置卷积“),但实际上进行的处理是一样的。

 类似资料: