10分钟看懂全卷积神经网络( FCN ):语义分割深度模型先驱

大家好,我是为人造的智能操碎了心的智能禅师。

今天是10月24日,既是程序员节,也是程序员感恩节。这一天,大家纷纷向那些无私奉献、一心为民的好人们,送出“好人一生平安”的美好祝愿。而“1024”,既是这一句话的数字密码。

今天,禅师也要感恩很多人。尤其要感恩一直以来支持禅师、支持人工智能头条的粉丝们,能够容忍人工智能头条偶然出现的小失误、枯燥无味的广告而没有取关。

禅师头发很茂盛

当然,更感谢大家对禅师本人和工作的认可!每次工作陷入瓶颈,深感无力、缺乏自信的时候,能够得到大家的鼓励和支持,心里真的是无比的温暖。

大家对我的信任,也是禅师一直做,做更好的唯一动力。在此禅师真心的向小姐姐小哥哥们,说一声好人一生平安

同时特别要感谢粉丝群里的朋友们,每天都在热烈的讨论各种和人工智能相关的话题,成为禅师灵感的重要来源。

甚至有的粉丝觉得光群里讨论不够,决定自己也开通公众号开始写内容,而且反响非常不错!

好的内容,当然要让更多人看到。所以今天带来的文章,就是由西部世界群里,一位不愿意透露姓名的 Blank 写的。欢迎吐槽!

最后啰嗦3句:

  1. 欢迎投稿!只要你的内容质量够好,我们会连同作者信息一起介绍给更多的读者,给大家充足的曝光机会
  2. 感恩节当然还是得有实际行动的。GitChat 做了一个1024节的大促活动,很多非常棒的人工智能课程,包括会员都有非常诱人的优惠特价。除此之外,每天还会随机抽取3位参与活动的用户,赠送价值 399元的机械键盘,更多优惠和奖品信息在文末
  3. 今天的二条依旧是那旋律,依旧不曾离去,依旧是禅师为大家带来的人工智能电子书特价活动继续。如果大家想看的书不在特价行列,也请回复告知禅师,禅师汇总后,会为大家争取优惠

温馨提示:为了让大家能更理解深度模型,文章中会尽量避免使用专业术语和繁琐的公式,尽力采用形象、准确的故事去理解,并学会学习的方法。

全文大约4500字。读完可能需要好几首下面这首歌的时间,也可能只需要2秒,?

?

语义分割

简单地说,分割就是抠图。语义分割,就是按图像中物体表达的含义进行抠图。

现在ps已经集成很多自动分割的功能,相比旧版本软件,新软件提高了美工人员的抠图和美图的效率。

如果我们能在更复杂的环境下,完成自动分割图像进行分析,这将降低多少人工?这类场景我们很熟悉,比如现在快速发展的自动驾驶。

摄像头采集到车前景象,通过模型分析,我们可以自动筛选出地面、交通线、人行道、行人、建筑、树、还有其他基础设施。

相比传统的目标识别,语义分割它更强大。语义分割模型不仅可以识别简单的类别,而且还可以进行多目标、多类别、复杂目标以及分割目标。

比如图中我们可以看到路面和交通标识线有清晰的分割,路面和人行道也同样如此,甚至路灯和建筑也可以清楚地分离出来。

这项技术在医学上也同样作用巨大,我们可以识别病灶并将其与正常组织分割,大脑神经系统内我们可以分离出同一组功能的神经结构,这些如何依赖人工去完成,所需的时间至少为数小时,而交给机器,那么数秒钟即可完成。

因此依靠分离模型,我们可以把重复性的劳动交给它去完成,人工只需要对输出结果进行二次分析和筛选,大大加快了提取过程和分析精度。

通过上面的介绍和例子,我们可以总结下优秀的语义分割摸应该具有的几个特性:

  1. 分割出来的不同语义区域对某种性质如灰度、纹理而言具有相似性,区域内部比较平整相邻语义区域对分割所依据的性质有明显的差异
  2. 不同语义区域边界上是明确和规整的
  3. 语义分割模型方法进阶

图像分割的历史

所有的发展都是漫长的技术积累,加上一些外界条件满足时就会产生质变。我们简单总结了图像分割的几个时期:

2000年之前,数字图像处理时我们采用方法基于几类:阈值分割、区域分割、边缘分割、纹理特征、聚类等。

2000年到2010年期间, 主要方法有四类:基于图论、聚类、分类以及聚类和分类结合。

2010年至今,神经网络模型的崛起和深度学习的发展,主要涉及到几种模型:

参考文献:http://www/arocmag.com/article/02-2017-07-064.html

截至到2017年底,我们已经分化出了数以百计的模型结构。当然,经过从技术和原理上考究,我们发现了一个特点,那就是当前最成功的图像分割深度学习技术都是基于一个共同的先驱:FCN(Fully Convolutional Network,全卷积神经网络)。

2010年前,CNN 是非常高效的视觉处理工具,因为它能够学习到层次化的特征。研究人员将全连接层替换为卷积层来输出一种空间域映射(反卷积)而非简单输出类别的概率,从而将图像分割问题转换为端对端的图像处理问题。

端对端

知识也是一步一步地积累的,学到这儿,我们就会产生新的疑问,什么是端对端?

可能大家都对这个概念有一些心得,我简单想了想大概是:解决问题时,输入问题的原始数据,然后模型输出所需结果,中间过程我们不加以考虑,这应该就是端对端最通俗的解释。

我们详细看一下模型的发展,了解下什么是端对端,如下图:

?浅色部分人参与,深色部分是机器自动完成

效果上来说,横轴表示效果越来越好,复杂度上看,纵轴表示模型越来越复杂。下面我们分析一下端到端的优劣之处:

端对端的好处:通过缩减人工预处理和后续处理,尽可能使模型从原始输入到最终输出,给模型更多可以根据数据自动调节的空间,增加模型的整体契合度。

端对端的坏处:通过大量模型的组合,增加了模型复杂度,降低了模型可解释性。

发展历程

  1. 2014年 FCN 模型,主要贡献为在语义分割问题中推广使用端对端卷积神经网络,使用反卷积进行上采样
  2. 2015年 U-net 模型,构建了一套完整 的编码解码器
  3. 2015年 SegNet 模型,将最大池化转换为解码器来提高分辨率
  4. 2015年 Dilated Convolutions(空洞卷积),更广范围内提高了内容的聚合并不降低分辨率
  5. 2016年 DeepLab v1&v2
  6. 2016年 RefineNet 使用残差连接,降低了内存使用量,提高了模块间的特征融合
  7. 2016年 PSPNet 模型
  8. 2017年 Large Kernel Matters
  9. 2017年 DeepLab V3

以上几种模型可以按照语义分割模型的独有方法进行分类,如专门池化(PSPNet、DeepLab),编码器-解码器架构(SegNet、E-Net),多尺度处理(DeepLab)、条件随机场(CRFRNN)、空洞卷积(DiatedNet、DeepLab)和跳跃连接(FCN)。

FCN

CNN 最后输出的是类别的概率值。

CNN 的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征。

较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。

什么是FCN模型?

因为模型网络中所有的层都是卷积层,故称为全卷积网络。

全卷积神经网络主要使用了三种技术:

  1. 卷积化(Convolutional)
  2. 上采样(Upsample)
  3. 跳跃结构(Skip Layer)

简单的是就是将上述过程最后的 Fully Connected 换成了卷积,直接输出目标物体所属的像素范围。

传统 CNN 有几个缺点:

  1. 存储开销大,滑动窗口较大,每个窗口都需要存储空间来保存特征和判别类别,而且使用全连接结构,最后几层将近指数级存储递增
  2. 计算效率低,大量重复计算
  3. 滑动窗口大小是相对独立的,末端使用全连接只能约束局部特征。

为了解决上面的部分问题,FCN 将传统 CNN 中的全连接层转化成卷积层,对应 CNN 网络 FCN 把最后三层全连接层转换成为三层卷积层(4096,4096,1000)。

虽然通过上面两个图观察,卷积核全连接数值没有变化,但是卷积核全连接概念不一样,所以表达的含义就截然不同。

我们不禁想问,将全连接层换成卷积有什么好处呢?

这里我们要理解一句比较专业的话:如果卷积核的 kernel_size 和输入 feature maps 的 size 一样,那么相当于该卷积核计算了全部 feature maps 的信息,则相当于是一个 kernel_size∗1 的全连接。

我们怎么去理解这句话?

大概意思为:当我们输入的图片大小和卷积核大小一致时,其实等价于建立全连接,但是还是有区别。

全连接的结构是固定的,当我们训练完时每个连接都是有权重的。而卷积过程我们其实为训练连接结构,学习了目标和那些像素之间有关系,权重较弱的像素我们可以忽略。

全连接不会学习过滤,会给每个连接分权重并不会修改连接关系。卷积则是会学习有用的关系,没用得到关系它会弱化或者直接 dropout。这样卷积块可以共用一套权重,减少重复计算,还可以降低模型复杂度。

反卷积

数学概念太多就不写公式,我们直接看图理解。

a 是输入图像,b 是经过卷积得到的特征图,分辨率明显下降。经过上采样(反卷积)提升分辨率得到同时,还保证了特征所在区域的权重,最后将图片的分辨率提升原图一致后,权重高的区域则为目标所在区域。

FCN 模型处理过程也是这样,通过卷积和反卷积我们基本能定位到目标区域,但是,我们会发现模型前期是通过卷积、池化、非线性激活函数等作用输出了特征权重图像,我们经过反卷积等操作输出的图像实际是很粗糙的,毕竟丢了很多细节。因此我们需要找到一种方式填补丢失的细节数据,所以就有了跳跃结构。

跳跃结构

我们通过回查学习过的知识,可以帮助理解当前的知识。这里的原理也有些许类似,我们正向过程的卷积、池化等操作都会输出每个层的特征,我们使用反卷积然后和历史中的池化和卷积数据结合,利用它们的数据填补我们缺失的数据。

三个技术都已经构建如模型之中,通过一定标记数据的训练后,模型已经学会了如何识别类别,并且能反卷积得到对应类别所在的像素区域。输出的效果?

Review

我们复习一下今天学到的内容:

卷积化:全连接层(6,7,8)都变成卷积层,适应任意尺寸输入,输出低分辨率的分割图片。

反卷积:低分辨率的图像进行上采样,输出同分辨率的分割图片。

跳层结构:结合上采样和上层卷积池化后数据,修复还原的图像。

FCN 的缺点

  1. 分割的结果不够精细。图像过于模糊或平滑,没有分割出目标图像的细节
  2. 因为模型是基于CNN改进而来,即便是用卷积替换了全连接,但是依然是独立像素进行分类,没有充分考虑像素与像素之间的关系
  3. 也是因为每个模型都有自己的不足,所以才会出现各式各样的模型来解决它们的问题。大家如果能分析出每个模型的缺点,那我们也可以构建新的模型去完善他们的模型,这其实就是创新的过程

原文发布于微信公众号 - 人工智能头条(AI_Thinker)

原文发表时间:2018-10-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

撕起来了!谁说数据少就不能用深度学习?这锅俺不背!

作者 | Andrew L. Beam 编译 | AI100 撕逼大战,从某种角度,标志着一个产业的火热。 最近,大火的深度学习,也开始撕起来了。 前几日,有一...

4807
来自专栏人工智能

机器学习教程:朴素贝叶斯文本分类器

在本教程中,我们将讨论朴素贝叶斯文本分类器。朴素贝叶斯是最简单的分类器之一,只涉及简单的数学表达,并且可以使用PHP,C#,JAVA等语言进行编程。

2789
来自专栏SIGAI学习与实践平台

化秋毫为波澜:运动放大算法(深度学习版)

运动放大(Motion Magnification),将视频中对应位置的运动进行放大,简单理解的话,就是找到时间段内的运动矢量,进行放大,然后权值叠加回去。

3725
来自专栏新智元

ICML 2016 谷歌 DeepMind 论文上辑(大咖点评附下载)

【新智元导读】ICLR2016 最佳论文获奖团队、谷歌 DeepMind 有9篇论文被即将于19日召开的深度学习重要会议 ICML2016 接收。新智元系统整理...

3614
来自专栏大数据文摘

从概念到应用:一文搞定数据科学和机器学习的最常见面试题

1836
来自专栏机器之心

学界 | 从文本挖掘综述分类、聚类和信息提取等算法

选自arXiv 机器之心编译 参与:机器之心编辑部 文本挖掘一直是十分重要的信息处理领域,因为不论是推荐系统、搜索系统还是其它广泛性应用,我们都需要借助文本挖掘...

4845
来自专栏腾讯高校合作

NIPS2018 | 腾讯AI Lab入选20篇论文,含2篇Spotlight

被誉为神经计算和机器学习领域两大顶级会议之一的NIPS于近日揭晓收录论文名单,此次为第32届会议, 12 月 3 日至 8 日在加拿大蒙特利尔举办。 腾讯AI...

701
来自专栏量子位

称霸Kaggle的十大深度学习技巧

在各种Kaggle竞赛的排行榜上,都有不少刚刚进入深度学习领域的程序员,其中大部分有一个共同点:

1631
来自专栏小小挖掘机

推荐系统遇上深度学习(十)--GBDT+LR融合方案实战

GBDT和LR的融合在广告点击率预估中算是发展比较早的算法,为什么会在这里写这么一篇呢?本来想尝试写一下阿里的深度兴趣网络(Deep Interest Netw...

3332
来自专栏CVer

[计算机视觉论文速递] 2018-03-07

通知:这篇推文有18篇论文速递信息,涉及目标检测、图像分割和GAN等方向。 [1]《A new stereo formulation not using pix...

5019

扫码关注云+社区

领取腾讯云代金券