【CV实践】之零基础入门语义分割---Task3语义分割模型发展

参加本次活动的目标:通过本次赛题可以引导大家熟练掌握语义分割任务的定义,具体的解题流程和相应的模型,并掌握语义分割任务的发展

0x10:学习目标

  1. 掌握语义分割模型的原理和训练过程
  2. 掌握语义分割的发展脉络
  3. 掌握语义分割模型的使用

0x20:FCN

0x21:FCN原理及网络结构

FCN首先将一副RGB图像输入到卷积神经网络后,经过多次卷积以及池化过程得到一系列的特征图,然后利用反卷积层对最后一个卷积层得到的特征图进行上采样,使得上采样后特征图与原图像的大小一样,从而实现对特征图上的每个像素值进行预测的同时保留其在原图像中的空间位置信息,最后对上采样特征图进行逐像素分类,逐个像素计算softmax分类损失。

主要特点

  • 不含全连接层(FC)的全卷积(Fully Conv)网络。从而可适应任意尺寸输入。
  • 引入增大数据尺寸的反卷积(Deconv)层。能够输出精细的结果。
  • 结合不同深度层结果的调剂(skip)结构。同时确保鲁棒性和精确性。
    在这里插入图片描述
    网络结构详解图:输入可为任意尺寸图像彩色图像;输出与输入尺寸相同,深度为20类目标 + 背景 = 21,这里的类别与数据集类别保持一致。
    在这里插入图片描述
    在这里插入图片描述

0x21:反卷积(Deconvolutional)

unsampling(不取样)的操作可以看成是反卷积(Deconvolutional),卷积运算的参数和CNN的参数一样是在训练FCN模型的过程中通过bp算法学习得到。
普通的池化会缩小图片的尺寸,比如VGG16经过5次池化后图片杯缩小了32倍。为了得到和原图等大小的分割图,我们需要上采样、反卷积。
反卷积和卷积类似,都是相乘相加的运算。只不过后者是多对一,前者是一对多。而反卷积的前向和反向传播,只用颠倒卷积的前后传播即可。如下图所示:
图像卷积:

图像反卷积:
在这里插入图片描述

0x23:跳跃结构

经过全卷积后的结果进行反卷积,基本上就能实现语义分割了,但是得到的结果通常是比较粗糙的。在这里插入图片描述
如上图所示,对原图像进行conv1、pool1后图像缩小了1/2;之后对图像进行第二次conv2、pool2后图像缩小为1/4;接着继续对图像进行第三次卷积操作conv3、pool3缩小为原图像的1/8,此时保留pool3的featureMap;连接继续对图像进行第五次卷积操作conv4、pool4,缩小为原图像的1/16,保留pool4的featureMap;最后对图像进行第五次卷积操作conv5、pool5,缩小为原图像的1/32,然后把原来的CNN操作的全连接层变成卷积操作conv6、conv7,图像的featureMap数量改变但是图像大小依然为原图的1/32,此时图像不再叫featureMap而是叫heatMap

现在我们由1/32尺寸的heatMap,1/16尺寸的featureMap和1/8尺寸的featureMap,1/32尺寸的heatMap进行upsampling(上采样)操作之后,因为这样操作还原的图片仅仅是conv5中卷积核中的特征,限于精度问题不能够很好地还原图像当中的特征。因此在这里向前迭代,把conv4中的卷积核对上一次upsampling之后的图像进行反卷积补充细节(相当于一个插值过程),最后把conv3中的卷积内核对刚才upsampling之后的图像再次反卷积补充细节,最后就完成了整个图像的还原。

具体来说,就是将不同池化层的结果进行上采样,然后结合这些结果来优化输出,分为FCN-32s,FCN-16s,FCN-8s三种,第一行对应FCN-32s,第二行对应FCN-16s,第三行对应这FCN-8s。具体结构如下:
在这里插入图片描述
图中,image是原图像,conv1,conv2…conv5为卷积操作,pool1,pool2…pool5为pool操作(pool就是使得图片变为原图的1/2),注意conv6-7是最后的卷积层,最右边一列是upsample后的end to end结果。必须说明的是图中nx是指对应的特征图上采样n倍(即放大n倍),并不是指有n个特征图,如32x upsampled中的32x是图像只变大32倍,不是有32个上采样图像,又如2x conv7是指conv7的特征图变大2倍

0x24:FCN-32s过程

只需要留意第一行,网络里面有5个pool,所以conv7的特征图是原始图像的1/32,可以发现最左边image的是32 × 32(假设以倍数计),同时我们知道在FCN中卷积是不会改变图像大小(或者只有少量像素的减少,特征图大小不会小很多)。看到pool1是16 × 16,pool2是8 × 8,pool3是4 × 4,pool4是2 × 2,pool5是1 × 1,所以conv7对应特征图大小为1 × 1,然后再经过32x upsampled prediction 图片变回32 × 32。FCN作者再这里增加一个卷积层,卷积后的大小为输入图像的32倍,我们简单假设这个卷积核大小也为32,这样就是需要通过反馈训练32 × 32个权重变量即可让图像实现end to end,完成了一个32s的upsample。FCN作者称做后卷积,他也提及可以称为反卷积。事时上在源码中卷积核大小为64,同时没有偏置bias。还有一点就是FCN论文中最后都是21 × * ,这里的21是指FCN使用的数据集分类,总共有21类。

0x25:FCN-16s过程

现在我们把1,2两行一起看,忽略32x upsampled prediction,说明FCN-16s的upsample过程。FCN作者在conv7先进行一个2x conv7操作,其实这里也只是增加一个卷积层,这次卷积后特征图的大小为conv7的2倍,可以从pool5与2x conv7中看出来。此时2x conv7与pool4的大小时一样的,FCN作者提出pool4与2x conv7进行一个fuse操作(事实上就是将pool4与2x conv7相加,另一篇博客说是拼接,个人认为是拼接)。fuse结果进行16x upsampled prediction,与FCN-32s一样,也是增加一个卷积层,卷积后的大小为输入图像的16倍。我们知道pool4大小是2 × 2,放大16倍,就是32 × 32,这样最后图像大小也变为原来的大小,至此完成一个16s的upsample。现在我们可以知道,FCN中的upsample实际是通过增加卷积层,通过bp反馈的训练方法训练卷积层达到end to end,这时卷积层的作用可以看作是pool的逆过程。

0x26:FCN-8s过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值