学习内容:
内容:FCN网络、DeepLabV1、V2、V3、UNet
FCN网络结构使用的是vgg16的backbone,主要区别就是抛弃了传统的全连接层,使用卷积代替,通过backbone后的卷积,将图像的通道数变成了图像的分类数,大小即为W/下采样倍数×H/下采样倍数×num_cls,再经过一个上采样,转置卷积,也可使用双线性插值,将图像还原回原大小尺寸,得到W×H×num_cls大小的图像,再经过一个softmax函数,对每个像素进行分类预测,得到分割后的图像。
对于上采样中操作的不同,可以分为32s、16s、8s
FCN-32s,即是直接将图像上采样32倍
FCN-16s,是在32s的基础上先上采样2倍,再与backbone中的某个maxpooling进行拼接,再将拼接后的图像进行16倍的上采样
FCN-8s,是在16s的基础上先上采样2倍,再与再与backbone中的某个maxpooling进行拼接,再将拼接后的图像进行8倍的上采样
模型的效果8s > 16s > 32s
总结:在上采样的这个操作上,不宜一次性进行过大倍数的上采样,而是应该分层次的进行。
膨胀卷积的作用在于不降低空间维度的条件下增大了感受野,使得图片中的信息被充分利用。
DeepLabV1主要解决在语义分割中下采样导致的图片分辨率降低和不变性,对于第一个问题,利用了膨胀卷积,对于第二个问题,使用到全连接CRF(条件随机场),比较耗时,在V3之后就不在使用。
LargeFOV(Filed of View)在于保证miou不下降的条件下减少参数的数量,从而加快模型的训练速度。
MSC(Multi-Scale)即是在正向过程中提取出一些特征图,最后统一进行特征融合。
DeepLabV2 的主要点在于Atrous Spatial Pyramid Pooling(ASPP)结构,其将输入后分成四个分支,每个分支采用不同的膨胀系数进行膨胀卷积,所以每个分支的感受野也不同,膨胀卷积后再将四个分支进行融合,使得该网络具备了解决多尺度的能力。
DeepLabV3在V2的基础上改动了ASPP,将分支数增加到五,其中一个普通卷积,三个膨胀系数不同的膨胀卷积,一个全局池化,最后再将五个分支进行融合,得到高度抽象的特征信息,将其与一个低度抽象的特征信息(提供原始图片的细节)融合,再上采样得到输出。
PSPNet的结构主要在于将主干后的feature map分为四个分支,在不同分支中将feature map划分为1×1、2×2、3×3、6×6的大小区域,随后再根据区域的大小同时进行一个全局平均池化,再进行一个1×1的卷积,最后将卷积后的特征图进行上采样(双线性插值),恢复到输入的高和宽,利用resnet中的残差结构,将其四个分支的结果与输入进行拼接。其结构称为Pyramid Scene Parsing,结构的主要作用在于将图片中的上下文信息进行一个联系,使得分割识别不仅仅只是针对于一部分,而是联系图片周围的环境,进行合理的推测,提高分割的精度。
UNet的结构大致为一个U形,即先经历四次下采样,后再经历四次上采样,可以将两种操作分为Encoder和Decoder,从其层次上看可以分为五个阶段,每个阶段中会有两次的卷积,其中的每次卷积会导致图片的尺寸高宽减少两个像素,在每次的上采样后,都会融合一个与当前层次相同的特征信息。