FCN系列之一 FCN

本文介绍全卷积神经网络(FCN)在图像分割任务中的应用,重点讲解了其网络结构、上采样技术和损失函数等内容,并对比了FCN与传统CNN在图像分割上的优势与局限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备继续狂补基础知识啊。

这里主要参考了

@simshang 的一篇:

http://simtalk.cn/2016/11/01/Fully-Convolutional-Networks/

@shenxiaolu1984 的一篇博文:

https://blog.youkuaiyun.com/shenxiaolu1984/article/details/51348149

@飞跃重洋的思念的一篇

https://blog.youkuaiyun.com/taigw/article/details/51401448

github实现代码:@Evan Shelhamer 非常感谢

https://github.com/shelhamer/fcn.berkeleyvision.org/blob/master/voc-fcn32s/net.py

本文是深度学习应用于图像分割的代表作,作为Oral发表于CVPR 2015,在许多教程中都被推荐(例如Li Feifei在Standford的视觉识别CNN)。第二作者Evan Shelhamer也是Caffe的首席开发者。 

本文在图像分割问题中应用了当下CNN的几种最新思潮,在PASCAL VOC分割任务上IU(交比并)达到62.2%,速度达到5fps。提供了基于Caffe的 模型和测试python代码

辨:两种分割任务 
semantic segmentation - 只标记语义。下图中。 
instance segmentation - 标记实例和语义。下图右。 
本文研究第一种:语义分割

这里写图片描述


网络特点

结构图

1:如下对比图的结构:全卷积神经网络中不再有全连接层,而是全部换成卷积层。



传统的网络(像LeNet, Alexnet等)需要固定输入图片的尺寸,因为它们固定维度的全连接层,导致需要丢弃一些受空间限制的部分。但全连接层可以看做是被一种卷积核卷积得到,这种卷积核能够覆盖整个输入区域。而且不用管输入图片的大小,反正卷积无所谓输入,只管卷积出feature map即可。文中还着重说明这样计算会比全连接层快很多。(使劲自夸啊偷笑

FCN将传统CNN中的全连接层转化成一个个的卷积层。如下图所示,在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,1,1)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。 

比如20个类,最终输出是16*16*21维度的feature map,由上图倒数最后一个16*16*4096经过1*1*21的卷积核得到。再进行上采样和上一层细致的feature map 相加。


2:上采样进行特征的细化重现

可以发现,经过多次卷积(还有pooling)以后,得到的图像越来越小,分辨率越来越低(粗略的图像),那么FCN是如何得到图像中每一个像素的类别的呢?为了从这个分辨率低的粗略图像恢复到原图的分辨率,FCN使用了上采样。例如经过5次卷积(和pooling)以后,图像的分辨率依次缩小了2,4,8,16,32倍。对于最后一层的输出图像,需要进行32倍的上采样,以得到原图一样的大小。

这个上采样是通过反卷积(deconvolution)实现的。对第5层的输出(32倍放大)反卷积到原图大小,得到的结果还是不够精确,一些细节无法恢复。于是Jonathan将第4层的输出和第3层的输出也依次反卷积,分别需要16倍和8倍上采样,结果就精细一些了。

主要是在论文的第三章介绍的。本文使用反卷积的方式进行上采样扩大尺寸,作者说在像素级别的分类上反卷积效果非常不错。这里提及一下论文中还提及Shift-and-Stitch和差值的方法进行输出maps的尺寸转换的方法,Shift-and-Stitch参考了下面月@牙眼的楼下小黑这篇博客

https://www.jianshu.com/p/e534e2be5d7d


caffee中

对于convolution:  output = (input + 2 * p  - k)  / s + 1;

对于deconvolution:                          output = (input - 1) * s + k - 2 * p               (1)


下图是32倍,16倍和8倍上采样得到的结果的对比,可以看到它们得到的结果越来越精确: 

对应上一幅结构示意图的FCN-32S, FCN-16S, FCN-8S

这里写图片描述

3. loss函数:

最后和G.T.比较的是原图尺寸w*h*21的feature map,逐像素去计算softmax误差,那么G.T.也转化为w*h*21,对齐计算。

FCN的优点和不足

与传统用CNN进行图像分割的方法相比,FCN有两大明显的优点:一是可以接受任意大小的输入图像,而不用要求所有的训练图像和测试图像具有同样的尺寸。二是更加高效,因为避免了由于使用像素块而带来的重复存储和计算卷积的问题(这部分优点不太懂啊)。

同时FCN的缺点也比较明显:一是得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。二是对各个像素进行分类,没有充分考虑像素与像素之间的关系,忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值