SegNet学习笔记
1.网络结构
SegNet由一个编码网络(Encoder Network)和与之对应的解码网络(Decoder NetWork)组成。编码网络与解码网络是在结构上是对称的,即不管是feature map size和channels,在对应位置上都是相同的,唯一的不同在于:解码网络最后的输出是多通道(类别数K),与它对应的编码网络的输入则是三通道(RGB图像三通道),其他的通道数都相同。
在上采样阶段,以往的网络要么采用双线插值法进行拉伸放大,要么进行反卷积(如FCN、U-Net)。SegNet很大的一个亮点直接记录下编码网络中MaxPool操作滑动窗口最大值的位置,然后在解码网络的上采样操作中,直接根据最大值的位置将其放回去,其他位置则直接填充0。因此可以知道,SegNet的上采样是不需要学习的,它只需要使用一些内存空间来把位置存起来即可。它的优点主要有两个:
(1)减少了参数。(因为上采样不需要参数)
(2) it improves boundary delineation(提升了边界划定??没看懂什么意思)
2.编码网络(Encoder NetWork)
SegNet的编码网络实际上就是VGG16的前13个卷积层部分(此外还有5个最大池化层),因此可以将SegNet编码网络初始化VGG16预训练结果的前13个卷积层部分。
编码网络由5个encdoer组成,每个encoder又由若干个卷积层(2个或3个,看图)加一个最大池化层组成,假设为两个卷积层,则一个encoder为:(Conv-BN-Relu)-(Conv-BN-Relu)-MaxPool。具体的kernel_size、stride、channels等配置与VGG16一样,故不在此赘述。
在MaxPool操作的过程中,需要将每个滑动窗口中最大值的坐标存起来,以待在解码网络的上采样阶段使用。
3.解码网络(Decoder Network)
SegNet的解码网络由5个decoder组成,每个decoder由一个unsample加若干个卷积层组成。其配置与编码网络的encoder一一对应。
上采样unsample直接用编码网络中记录的MaxPool坐标,对每个窗口的最大值放到窗口上相应的位置,其余位置全部设为0。
4.与U-Net的区别
许多分割结构的编码网络都是相同的,无非就是用VGG16、AlexNet、ResNet等网络的卷积基作为特征提取,即编码部分。这这些分割网络最大的不同是在于解码网络,而解码网络可以决定了整个分割网络的性能和表现。SegNet和U-Net分割结构类似,但却是有区别的:
(1)上采样阶段SegNet是直接记录滑动窗口中最大值的坐标,不用学习,没有参数;U-Net则是要记录整张特征图以备在上采样阶段concatenate起来,而且需要学习反卷积核,故需要花费更多内存和计算力。
(2)SegNet可以利用VGG16预训练网络,而UNet没有对应的预训练网络。
posted on 2020-07-28 23:03 ZhicongHou 阅读(408) 评论(0) 编辑 收藏 举报