概要

作为计算机视觉领域的三大任务之一(图像分类,目标检测,图像分割),图像分割这些年也获得了长足的发展,它被广泛用于在医学图像和自然图像的分割上,除此之外,图像分割也被用于在道路分割上,这对于自动驾驶的发展具有极其重要的意义。
图像分割到目前为止,大致分为三类:

1.语义分割(Semantic Segmentation)

图像语义分割的意思就是机器自动分割并识别出图像中的内容,如下图(b),能够区分物体和背景。

2.实例分割(Instance Segmentation)

图像实例分割,不仅要分割出图像中的不同类别,而且还要对同一类别的不同个体作出区分。如下图(c),对于人和汽车的不同个体都作出区分。

3.全景分割(Panoptic Segmentation)

Panoptic Segmentation 中文名为全景分割,是由 Facebook 的大神联手推出的结合 instance segmentation 和 semantic segmentation 的新任务。作者发现,instance segmentation 只能够分别物体,但是没有办法对 stuff 进行预测。而传统的 semantic segmentation 不能够区分物体。作者提出了同时对物体进行分割,并且对 stuff 进行分类的新任务,如下图(d)。

言归正传…回到全卷积网络:
全卷积神经网络(Fully Convolutional Network,FCN)是在2015年由美国加州大学伯克利分校的Jonathan Long等人提出的用于图像语义分割的一种框架。
论文地址:Fully Convolutional Networks for Semantic Segmentation
代码地址:FCN on Github

核心思想

三个keys:
1.卷积化:去掉全连接层,以卷积层代替,可以适应任意尺寸的输入。

简而言之,FCN将CNN中的FC层去掉换以卷积层替代。传统的CNN在预测图像分类时,最后经过以SoftMax输出的是一维的概率值向量,这些概率值分别对应每个预测种类的预测概率,取最大的那个为预测类别。
而,语义分割不同,语义分割所要得到的是像素级别的分割。而FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷基层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后在上采样的特征图进行像素的分类。全卷积网络(FCN)是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。
FCN将传统CNN中的全连接层转化成一个个的卷积层。如下图所示,在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,1,1)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。
那这样做有什么优势呢?首先,卷积层表示的是局部的信息,而全连接层则是描绘的是全局信息。用和全连接层相同维度大小的卷积层替换掉全连接层,能够使得卷积网络在一张更大的输入图像上滑动,使得输出图像具有位置信息。

2.上采样:在网络深处以上采样(反卷积)增大图像尺寸,提高输出精确度。

在论文中FCN使用了上采样。这里用的是反卷积操作,相比下采样是使得图像越来越小,而上采样则是使得图像变大。
例如经过5次卷积(和pooling)以后,图像的分辨率依次缩小了2,4,8,16,32倍。对于最后一层的输出图像,需要进行32倍的上采样,以得到原图一样的大小。这个上采样是通过反卷积(deconvolution)实现的。

3.dense prediction:采用skip方法结合网络不同层之间的信息,增加模型精确度和鲁棒性。

这种方式在文章中也提到,使用skip方法结合多层信息,如深层次的粗糙信息和低层次的精确信息。因为作者发现对第5层的输出(32倍放大)反卷积到原图大小,得到的结果还是不够精确,一些细节无法恢复。于是Jonathan将第4层的输出和第3层的输出也依次反卷积,分别需要16倍和8倍上采样,结果就精细一些了。
这种做法的好处是兼顾了local和global信息。

整体网络结构


这篇博文:FCN的学习及理解(Fully Convolutional Networks for Semantic Segmentation)
解释的我觉得很好,所以作为理解,拿来借鉴一下~
整体网络架构分为两部分:虚线上部分和虚线下部分:
虚线上部分表示的是全卷积网络,用来提取图像特征。
全连接层转换为卷积层:在两种变换中,将全连接层转化为卷积层在实际运用中更加有用。假设一个卷积神经网络的输入是 224x224x3 的图像,一系列的卷积层和下采样层将图像数据变为尺寸为 7x7x512 的激活数据体。AlexNet使用了两个尺寸为4096的全连接层,最后一个有1000个神经元的全连接层用于计算分类评分。我们可以将这3个全连接层中的任意一个转化为卷积层:

针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为F=7,这样输出数据体就为[1x1x4096]了。针对第二个全连接层,令其滤波器尺寸为F=1,这样输出数据体为[1x1x4096]。针对最后一个全连接层也做类似的,令其F=1,最终输出为[1x1x1000]。

虚线下部分代表的是图像经过卷积层的不同阶段所产生的的深度为21的预测图像的分类结果。

例如:第一个模块输入16*16*4096,卷积模板尺寸1*1,输出16*16*21。相当于对每个像素施加一个全连接层,从4096维特征,预测21类结果。

实验效果

参考链接:

为什么使用卷积层替代CNN末尾的全连接层

FCN 全卷积网络 Fully Convolutional Networks for Semantic Segmentation

全卷积网络FCN

FCN于反卷积(Deconvolution)、上采样(UpSampling)

FCN的学习及理解(Fully Convolutional Networks for Semantic Segmentation)

全卷积网络(FCN)理解相关推荐

  1. 全卷积网络FCN详细讲解(超级详细哦)

    原文链接:https://blog.csdn.net/qq_41760767/article/details/97521397?depth_1-utm_source=distribute.pc_rel ...

  2. 全卷积网络FCN详解

    转载自:  点击打开链接 背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully Co ...

  3. 全卷积网络FCN与卷积神经网络CNN的区别

    背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully Convolutional N ...

  4. 机器学习笔记 - 全卷积网络(FCN)

    计算机视觉任务大致分为以下四种类型 1. Classification(分类)对图像内的对象进行分类(识别对象类). 2. Object Detection(目标检测)使用包围盒的对象对图像内的对象进 ...

  5. Fully Convolutional Networks for Semantic Segmentation ————全卷积网络 FCN论文解读

    Fully Convolutional Networks for Semantic Segmentation 作者: Jonathan Long, Evan Shelhamer, Trevor Dar ...

  6. 全卷积网络的理解——理解论文Fully Convolutional Networks for Semantic Segmentation

    目录 论文详解 1.和VGG网络的对比 2.那么fcn是什么? 3.论文改进的模型 3.1怎样进行上采样的问题 3.2从哪里开始上采样的问题--跳跃连接的问题 3.3整体设计思想 4.1实验结果 4. ...

  7. 全卷积网络FCN的缺陷

    its inherent spatial invariance does not take into account useful global context information FCN没有考虑 ...

  8. 全卷积网络(FCN)实战:使用FCN实现语义分割

    全卷积网络(FCN)实战:使用FCN实现语义分割 FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题.与经典的CNN在卷积层之后使用全连接层得 ...

  9. FCN(Fully Convolutional Network)全卷积网络笔记

    FCN(Fully Convolutional Network)全卷积网络笔记 本文只是个人学习笔记 参考自: 全卷积网络FCN详细讲解(超级详细哦) 转置卷积(Transposed Convolut ...

最新文章

  1. Apache httpd设置HTTPS双向认证
  2. tensorflow学习之(三)Varible 变量的使用
  3. TensorFlow 莫烦 手写识别 cross_entry (五)
  4. PythonSpot 中文系列教程 · 翻译完成
  5. fasfdfs安装记录(CentOS7)
  6. ImportError: No module named bs4
  7. jsp如何编写java代码_如何在JSP页面内编写java代码?(代码示例)
  8. 骆驼壳修改服务器,【电视直播】发烧友TV,骆驼壳导入直播源教程,打造个人专属永久盒子软件,你们想看的这都有!...
  9. 看了IDC 2018 Q1存储报告,才知道宏杉科技为什么稳稳的
  10. Cadence Allegro PCB 17.4的叠层、正片和负片的设计
  11. iOS中什么是superView?(新手概念简述版)
  12. pspice仿真库DC电源设置请教
  13. 手机处理器排行榜2019_2019十大手机读书软件排行榜
  14. atrix 4g 安装linux,亲测ATRIX 4G MB860详细刷机教程二:解锁bootloader
  15. numpy计算移动平均值
  16. 痉挛性斜颈头颤怎么办?
  17. 自适应波束形成(三)——频域宽带LCMV波束形成器
  18. MDK V5.28来了,STM32G4也来了
  19. 基于stm32f407cube ai实例
  20. UE4 安卓打包失败“Build-tool 31.0.0 is missing DX”

热门文章

  1. android音乐播放器扫描本地,简单实现Android本地音乐播放器
  2. Python求绝对值(如何做到整数与浮点数分类)
  3. 数据库事务(常被问的)
  4. xingyue_coding的自我介绍
  5. 浪潮之巅第五章 — 奔腾的芯(英特尔—Intel)(全)
  6. “泰迪杯”挑战赛-通过图像处理和数据挖掘实现车辆检测与跟踪
  7. Linux 安装与使用H2数据库
  8. 再生核Hilbert空间
  9. 华为云贾永利:工业互联网使能制造业三大业务流智化升级
  10. Chrome浏览器任意修改网页内容