FCN全卷积网络理解

FCN我以前总是把它很1*1 conv弄混,实际上这是两个不同的概念,FCN意思是把FC层用卷积层替代,用于处理segmentation问题的一个网络;1*1是一种卷积形式,用于改变feature map的channel

理解FCN的过程中我参考了这个博客的介绍:

博客1:https://www.cnblogs.com/gujianhan/p/6030639.html

虽然点赞很多,但是我仍有疑惑,并有不同的想法。

首先建议参读原文https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf,这是最权威的FCN解释。

1. FCN是用来解决segmentation问题的,传统的网络是用滑动窗口的方法在每个像素点周围进行滑动,如一个15*15的滑动窗口,送进传统的卷积池化全连接层,得到这个像素点的类别。这一点在博客1有解释:

FCN全卷积网络理解_第1张图片

我的理解是一张100*100的原图,,用传统方法做segmentation,需要让100*100=10000个滑动窗口通过传统CNN网络,这样确实很低效。

于是FCN提出替换全连接层的方法,也是博客1的解释:

FCN全卷积网络理解_第2张图片

意思是说不用滑动窗口多次评价,直接在原图上做卷积,得到一个6*6的feature map(通道数为预测类别数),效果是一样的。6*6的feature map再通过上采样,变成原图尺寸,这时每个像素点的label就有了。

 

2. FCN相比传统CNN的优势:

个人认为有两个,如果其他优势欢迎告知谢谢:

1. 在做segmentation任务的时候可以提高效率

2. 在做classification任务的时候可以接受任意尺寸大小的图片输入。博客一中的解释让我疑惑很久,让人觉得好像segmentation任务用传统CNN来做只能接受固定大小的图片输入,但是我觉得传统CNN做segmentation用什么尺寸的图片都可以,只要滑动窗口尺寸不变就行。做classification任务的时候传统CNN之所以不接受任意尺寸大小的图片输入是因为有全连接层,而FCN没有这个问题是因为它可以直接在整张图片上做卷积。(见原文解释如下图2)对原文这里也有些疑惑,卷积核的大小不是仍然不是固定的吗?怎么可以接受任意尺寸大小的图片输入呢?反正我写训练前都是要把图片resize成统一大小的。

 

如有其它合理解释欢迎交流,谢谢

FCN全卷积网络理解_第3张图片

FCN全卷积网络理解_第4张图片

你可能感兴趣的:(FCN,全卷积网络)