FCN网络结构学习

参考文章:
https://blog.csdn.net/qq_31347869/article/details/89429211
https://www.cnblogs.com/gujianhan/p/6030639.html

CNN与FCN

通常CNN网络在卷积层之后会连接若干个全连接层,将卷积图产生的特征图映射成一个固定的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类任务,因为它们最后都希望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。FCN则对图像进行像素级的分类,与经典CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样,使它恢复到输入图像相同的尺寸,从而对每个像素都产生了一个预测,同时保留了原始输入图像的空间信息,最后在上采样的特征图上进行逐像素分类。最后逐个像素计算softmax分类的损失,相当于每一个像素对应一个训练样本。

CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。这些抽象的特征对分类很有帮助,可以很好地判断出一幅图像中包含什么类别的物体,但是因为丢失了一些物体的细节,不能很好的给出物体的具体轮廓、指出每个像素具体属于哪个物体,因此做到精确的分割就很有难度。

传统的基于CNN的分割方法的一些缺点

  • 存储开销很大。(例如对每个像素使用的图像块的大小为15x15,然后不断滑动窗口,每次滑动的窗口给CNN进行判别分类,因此所需的存储空间随着滑动窗口的次数和大小急剧上升)
  • 计算效率低下。(相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很大程度上的重复)。
  • 像素块的大小限制了感知域的大小。(通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。)

关键点

上采样
对原图像进行卷积conv1、pool1后原图像缩小为1/2,之后对图像进行第二次conv2、pool2后图像缩小为1/4,接着继续对图像进行第三次卷积操作conv3、pool3缩小为原图像的1/8,此时保留pool3的feature map,接着继续进行第四次卷积操作conv4、pool4,缩小为原图像的1/16,保留pool4的feature map,最后对图像进行第五次卷积操作conv5、pool5,缩小为原图像的1/32,然后把原来CNN操作中全连接变成卷积操作conv6、conv7,图像的featuremap数量改变但是图像大小依然为原图的1/32,此时图像不再叫feature map而是叫heatmap。

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

缺点

  • 得到的结果还是不够精确。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。
  • 是对各个像素进行分类,没有充分考虑像素与像素之间的关系,忽略了在通常的基于像素分类的分割方法中使用的空间规整步骤,缺乏空间统一性。
发布了352 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/strawqqhat/article/details/103390712