转:全卷积网络(FCN)与图像分割
学习收藏。
转载:https://blog.csdn.net/taigw/article/details/51401448
从图像分类到图像分割
卷积神经网络(CNN)自2012年以来,在图像分类和图像检测等方面取得了巨大的成就和广泛的应用。
CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。
这些抽象的特征对分类很有帮助,可以很好地判断出一幅图像中包含什么类别的物体,但是因为丢失了一些物体的细节,不能很好地给出物体的具体轮廓、指出每个像素具体属于哪个物体,因此做到精确的分割就很有难度。
传统的基于CNN的分割方法的做法通常是:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入用于训练和预测。这种方法有几个缺点:一是存储开销很大。例如对每个像素使用的图像块的大小为15x15,则所需的存储空间为原来图像的225倍。二是计算效率低下。相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很大程度上的重复。三是像素块大小的限制了感知区域的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。
针对这个问题, UC Berkeley的Jonathan Long等人提出了Fully Convolutional Networks (FCN)[1][1]用于图像的分割。该网络试图从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。
FCN的原理
FCN将传统CNN中的全连接层转化成一个个的卷积层。如下图所示,在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,1,1)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。
可以发现,经过多次卷积(还有pooling)以后,得到的图像越来越小,分辨率越来越低(粗略的图像),那么FCN是如何得到图像中每一个像素的类别的呢?为了从这个分辨率低的粗略图像恢复到原图的分辨率,FCN使用了上采样。例如经过5次卷积(和pooling)以后,图像的分辨率依次缩小了2,4,8,16,32倍。对于最后一层的输出图像,需要进行32倍的上采样,以得到原图一样的大小。
这个上采样是通过反卷积(deconvolution)实现的。对第5层的输出(32倍放大)反卷积到原图大小,得到的结果还是不够精确,一些细节无法恢复。于是Jonathan将第4层的输出和第3层的输出也依次反卷积,分别需要16倍和8倍上采样,结果就精细一些了。下图是这个卷积和反卷积上采样的过程:
下图是32倍,16倍和8倍上采样得到的结果的对比,可以看到它们得到的结果越来越精确:
FCN的优点和不足
与传统用CNN进行图像分割的方法相比,FCN有两大明显的优点:一是可以接受任意大小的输入图像,而不用要求所有的训练图像和测试图像具有同样的尺寸。二是更加高效,因为避免了由于使用像素块而带来的重复存储和计算卷积的问题。
同时FCN的缺点也比较明显:一是得到的结果还是不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。二是对各个像素进行分类,没有充分考虑像素与像素之间的关系,忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。
FCN的扩展
虽然FCN不够完美,但是其全新的思路开辟了一个新的图像分割方向,对这个领域的影响是十分巨大的,从2015年3月在arxiv和6月在CVPR会议上发表到写下这篇博客的时候一年的时间,该文章已被引用高达400次。
在FCN的基础上,UCLA DeepLab的Liang-Chieh Chen[2][2]等在得到像素分类结果后使用了全连接的条件随机场(fully connected conditional random fields),考虑图像中的空间信息,得到更加精细并且具有空间一致性的结果。
Liang-Chieh的这篇文章有两大特点,一是忽略下采样过程,转而使用稀疏的卷积核以增加感知范围。如下图所示:
二是使用了Fully Connected CRF。CRF的能量函数中包括数据项和平滑项两部分,数据项与各个像素属于各类别的概率有关,平滑项控制像素与像素间类别的一致性。传统的CRF的平滑项只考虑相邻像素类别的关联性,而Fully Connected CRF将图像中任意两个像素之间的类别关联性都考虑进来。
下图是CNN与Fully Connected CRF结合的示意图。
实际上,CRF或者Fully Connected CRF是对CNN或者FCN输出的一种后处理技术。像素分类和空间规整这两步是分别进行的。Shuai Zheng[3][3]等人将Fully Connected CRF表示成回流神经网络的结构(recurrent neuron network,RNN),将CNN与这个RNN放到一个统一的框架中,可以一步到位地对两者同时进行训练。将图像分割中的三个步骤:特征提取、分类器预测和空间规整全部自动化处理,通过学习获得,得到的结果比FCN-8s和DeepLab的方法的效果好了许多。如下图结果:
CNN、FCN与Fully Connected CRF的结合及统一的自动训练具有很不错的应用价值,已有很多的研究对这几篇文章进行跟进([2]和[3]的引用都已过百)。例如,帝国理工的Konstantinos Kamnitsas,Daniel Rueckert等人在这几篇文章的基础上,提出了三维的多尺度CNN和全连接CRF结合的方法,称为DeepMedic, 用于脑肿瘤的分割,最近(4月4号)刚发表于arXiv。
参考文献
1,Long, Jonathan, Evan Shelhamer, and Trevor Darrell. “Fully convolutional networks for semantic segmentation.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.
2,Chen, Liang-Chieh, et al. “Semantic image segmentation with deep convolutional nets and fully connected crfs.” arXiv preprint arXiv:1412.7062 (2014).
3,Zheng, Shuai, et al. “Conditional random fields as recurrent neural networks.” Proceedings of the IEEE International Conference on Computer Vision. 2015.
4,Kamnitsas, Konstantinos, et al. “Efficient Multi-Scale 3D CNN with Fully Connected CRF for Accurate Brain Lesion Segmentation.” arXiv preprint arXiv:1603.05959 (2016).
参考:
1.全卷积网络(FCN)与图像分割
转:全卷积网络(FCN)与图像分割相关推荐
- 全卷积网络FCN详解
转载自: 点击打开链接 背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully Co ...
- 全卷积网络FCN与卷积神经网络CNN的区别
背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully Convolutional N ...
- 机器学习笔记 - 全卷积网络(FCN)
计算机视觉任务大致分为以下四种类型 1. Classification(分类)对图像内的对象进行分类(识别对象类). 2. Object Detection(目标检测)使用包围盒的对象对图像内的对象进 ...
- 全卷积网络FCN详细讲解(超级详细哦)
原文链接:https://blog.csdn.net/qq_41760767/article/details/97521397?depth_1-utm_source=distribute.pc_rel ...
- Fully Convolutional Networks for Semantic Segmentation ————全卷积网络 FCN论文解读
Fully Convolutional Networks for Semantic Segmentation 作者: Jonathan Long, Evan Shelhamer, Trevor Dar ...
- 全卷积网络FCN的缺陷
its inherent spatial invariance does not take into account useful global context information FCN没有考虑 ...
- 全卷积网络(FCN)实战:使用FCN实现语义分割
全卷积网络(FCN)实战:使用FCN实现语义分割 FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题.与经典的CNN在卷积层之后使用全连接层得 ...
- FCN(Fully Convolutional Network)全卷积网络笔记
FCN(Fully Convolutional Network)全卷积网络笔记 本文只是个人学习笔记 参考自: 全卷积网络FCN详细讲解(超级详细哦) 转置卷积(Transposed Convolut ...
- 全卷积网络(FCN)理解
概要 作为计算机视觉领域的三大任务之一(图像分类,目标检测,图像分割),图像分割这些年也获得了长足的发展,它被广泛用于在医学图像和自然图像的分割上,除此之外,图像分割也被用于在道路分割上,这对于自动驾 ...
- FCN全卷积网络随笔
参考:四.全卷积网络FCN详细讲解(超级详细哦) 这篇文章已经写的很好了,这里说两个我考虑的点. 第一个就是:FCN在缩小成heat map,为什么要通过上采样还原回原图大小? 我觉得这个的原因是因为 ...
最新文章
- The following packages have been kept back
- Spring Boot集成CKEditor
- DevStack安装问题 pip安装镜像源
- PCV相关指标控制要求
- c++ stack 遍历_python实现二叉树的遍历以及其他基本操作
- 是单片机高手还是菜鸟?看看你的程序框架就知道了
- bzoj 1801: [Ahoi2009]chess 中国象棋【dp】
- rsync java_Linux 同步工具rsync学习
- http://item.jd.com/1275996920.html
- ubuntu 安装mysql 5.5.28 编译安装 innodb 配置
- 无法连接终端授权服务器,许可证已过期的客户端可能无法连接到终端服务器的解决方案...
- SPSS入门教程——如何分析两个变量之间的关联度?
- jQuery-对联广告
- C语言程序设计-跳马问题
- python虚拟环境是什么意思_python的虚拟环境详解
- ArcGIS 切片/瓦片的发布与加载
- 嵌入式第四课(继续SPI之路)
- 怎样用一台手机做自媒体?
- [Vulnhub]Momentum2
- realplayer java,在网页中使用realplayer播放rm文件
热门文章
- CentOs7相对于CentOs6的常用命令变化
- 关于程序员前途的看法和我系列文章的想法
- 扩展DropDownList控件和ListBox控件(1) - 支持分组功能(optgroup标签)
- 08-01 Jmeter 核心原理与性能测试理论
- python装饰器的通俗理解_Python|闭包、装饰器,简单的实例,通俗的理解
- glue | 关于胶水函数用法的几个例子
- python正确的输入语句_Python If语句If输入是某个字符串
- 电脑应用程序错误怎么办_遇到电脑桌面应用程序无法正常启动(0xc0000142)怎么办?0xc0000142解决方法...
- 8年web前端开发老程序员告诉你如何零基础学习web前端
- 云计算开源软件有哪些?