电子发烧友网 > 可编程逻辑 > FPGA/ASIC技术 > 正文

全卷积网络FCN进行图像分割

2017年03月17日 11:42 次阅读

CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题。神经网络大神Jonathan Long发表了《Fully ConvoluTIonal Networks for SemanTIc SegmentaTIon》在图像语义分割挖了一个坑,于是无穷无尽的人往坑里面跳。

全卷积网络FCN进行图像分割

全卷积网络 Fully ConvoluTIonal Networks

CNN 与 FCN

通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都期望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。

栗子:下图中的猫, 输入AlexNet, 得到一个长为1000的输出向量, 表示输入图像属于每一类的概率, 其中在“tabby cat”这一类统计概率最高。

全卷积网络FCN进行图像分割

FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。

最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本。下图是Longjon用于语义分割所采用的全卷积网络(FCN)的结构示意图:

全卷积网络FCN进行图像分割

简单的来说,FCN与CNN的区域在把于CNN最后的全连接层换成卷积层,输出的是一张已经Label好的图片。

全卷积网络FCN进行图像分割

其实,CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。下图CNN分类网络的示意图:

全卷积网络FCN进行图像分割

这些抽象的特征对分类很有帮助,可以很好地判断出一幅图像中包含什么类别的物体,但是因为丢失了一些物体的细节,不能很好地给出物体的具体轮廓、指出每个像素具体属于哪个物体,因此做到精确的分割就很有难度。

传统的基于CNN的分割方法:为了对一个像素分类,使用该像素周围的一个图像块作为CNN的输入用于训练和预测。这种方法有几个缺点:一是存储开销很大。例如对每个像素使用的图像块的大小为15x15,然后不断滑动窗口,每次滑动的窗口给CNN进行判别分类,因此则所需的存储空间根据滑动窗口的次数和大小急剧上升。二是计算效率低下。相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很大程度上的重复。三是像素块大小的限制了感知区域的大小。通常像素块的大小比整幅图像的大小小很多,只能提取一些局部的特征,从而导致分类的性能受到限制。

而全卷积网络(FCN)则是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。

全连接层 -> 成卷积层

全连接层和卷积层之间唯一的不同就是卷积层中的神经元只与输入数据中的一个局部区域连接,并且在卷积列中的神经元共享参数。然而在两类层中,神经元都是计算点积,所以它们的函数形式是一样的。因此,将此两者相互转化是可能的:

对于任一个卷积层,都存在一个能实现和它一样的前向传播函数的全连接层。权重矩阵是一个巨大的矩阵,除了某些特定块,其余部分都是零。而在其中大部分块中,元素都是相等的。

相反,任何全连接层都可以被转化为卷积层。比如,一个 K=4096 的全连接层,输入数据体的尺寸是 7?7?512,这个全连接层可以被等效地看做一个 F=7,P=0,S=1,K=4096 的卷积层。换句话说,就是将滤波器的尺寸设置为和输入数据体的尺寸一致了。因为只有一个单独的深度列覆盖并滑过输入数据体,所以输出将变成 1?1?4096,这个结果就和使用初始的那个全连接层一样了。

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

深度学习初学者了解CNN卷积神经网络的黄金指南

卷积神经网络。这听起来像是一个奇怪的生物学和数学的结合,但是这些网络已经成为计算机视觉领域最具影响力...

发表于 2018-03-22 14:41 335次阅读
深度学习初学者了解CNN卷积神经网络的黄金指南

传奇工程师卡马克入坑 AI:徒手一周实现反向传播...

约翰 · 卡马克他在几乎没有接触过神经网络的情况下,仅用了一周时间,在几乎是最基础且受限的编程环境下...

发表于 2018-03-13 14:03 346次阅读
传奇工程师卡马克入坑 AI:徒手一周实现反向传播...

FPGA;CNN

发表于 2018-03-10 18:52 236次阅读
FPGA;CNN

商汤联合提出基于FPGA的Winograd算法:...

商汤科技算法平台团队和北京大学高能效实验室联合提出一种基于 FPGA 的快速Winograd算法,可...

发表于 2018-02-07 11:52 1384次阅读
商汤联合提出基于FPGA的Winograd算法:...

泓观科技发布首款异步卷积神经网络芯片

AI创业公司泓观科技(otureo.ai)发布了首款异步卷积神经网络芯片。该芯片所采用的异步架构,与...

发表于 2018-02-01 05:26 139次阅读
泓观科技发布首款异步卷积神经网络芯片

从技术角度来深度剖析人脸识别技术

本文中笔者试图用通俗的语言探讨人脸识别技术,首先概述人脸识别技术,接着探讨深度学习有效的原因以及梯度...

发表于 2018-01-31 16:55 1289次阅读
从技术角度来深度剖析人脸识别技术

袁进辉:分享了深度学习框架方面的技术进展

1月17日,院友袁进辉博士回到微软亚洲研究院做了题为《打造最强深度学习引擎》的报告,分享了深度学习框...

发表于 2018-01-25 09:23 933次阅读
袁进辉:分享了深度学习框架方面的技术进展

KORTIQ公司推出了一款Xilinx FPGA...

近日KORTIQ公司推出了一款Xilinx FPGA的CNN加速器IP——AIScale,它能够利用...

发表于 2018-01-09 08:45 2485次阅读
KORTIQ公司推出了一款Xilinx FPGA...

用CNN把图形转成ASCII码字符画的方法,并更...

Osamu Akiyama提出了一种用CNN把图形转成ASCII码字符画的方法,并在昨天更新了着色工...

发表于 2018-01-03 09:01 1124次阅读
用CNN把图形转成ASCII码字符画的方法,并更...

对于convolutional layer、Te...

上世纪科学家们发现了几个视觉神经特点,视神经具有局部感受野,一整张图的识别由多个局部识别点构成;不同...

发表于 2018-01-02 16:49 1413次阅读
对于convolutional layer、Te...

通过计算机视觉和深度学习技术分析面部表情的方法

识别 面部表情 和情绪是人类社交初期阶段的一项基本且非常重要的技能。人类可以观察一个人的面部,并且快...

发表于 2017-12-21 17:03 1239次阅读
通过计算机视觉和深度学习技术分析面部表情的方法

自动驾驶技术的神经网络解决方案

高级辅助驾驶系统 ( ADAS ) 可提供解决方案,用以满足驾乘人员对道路安全及出行体验的更高要求。...

发表于 2017-12-19 10:14 2578次阅读
自动驾驶技术的神经网络解决方案

五种CNN模型的尺寸,计算量和参数数量对比详解

CNN模型火速替代了传统人工设计(hand-crafted)特征和分类器,不仅提供了一种端到端的处理...

发表于 2017-12-08 13:47 9274次阅读
五种CNN模型的尺寸,计算量和参数数量对比详解

Capsule Network的基本原理及其相关...

传统的图像识别是使用CNN来做的(如下图所示),CNN通常由卷积层和池化层共同构成,卷积层从原始图像...

发表于 2017-12-07 17:29 2658次阅读
Capsule Network的基本原理及其相关...

CNN的一些基本的概念解读

CNN 采用的是局部感受野 + 共享权值,这在右图中的表现为它的神经元可以看成是“一整块”的“视野”...

发表于 2017-12-04 18:24 1115次阅读
CNN的一些基本的概念解读

基于IoT设备的CNN推理机实现深度学习方案

通过深度学习技术,物联网(IoT)设备能够得以解析非结构化的多媒体数据,智能地响应用户和环境事件,但...

发表于 2017-12-01 11:22 52次阅读
基于IoT设备的CNN推理机实现深度学习方案

优化基于FPGA的深度卷积神经网络的加速器设计

CNN已经广泛用于图像识别,因为它能模仿生物视觉神经的行为获得很高识别准确率。最近,基于深度学习算法...

发表于 2017-11-17 13:31 759次阅读
 优化基于FPGA的深度卷积神经网络的加速器设计

卷积神经网络训练过程中的SGD的并行化设计

前段时间一直在关注 CNN 的实现,查看了 caffe 的代码以及 convnet2 的代码。目前对...

发表于 2017-11-16 14:43 182次阅读
卷积神经网络训练过程中的SGD的并行化设计

卷积神经网络CNN架构分析-LeNet

对于神经网络和卷积有了粗浅的了解,关于CNN 卷积神经网络,需要总结深入的知识有很多:人工神经网络 ...

发表于 2017-11-16 13:28 331次阅读
卷积神经网络CNN架构分析-LeNet

卷积神经网络(CNN)在无人驾驶中应用的3D感知...

无人驾驶的感知部分作为计算机视觉的领域范围,也不可避免地成为CNN发挥作用的舞台。本文是无人驾驶技术...

发表于 2017-11-16 12:53 683次阅读
卷积神经网络(CNN)在无人驾驶中应用的3D感知...

由Python算法编程来实现神经网络设计理论

一、多层前向神经网络 多层前向神经网络由三部分组成:输出层、隐藏层、输出层,每层由单元组成; 输入...

发表于 2017-11-16 12:34 150次阅读
由Python算法编程来实现神经网络设计理论

基于nolear建立的ConvNet体系结构并用...

本文展示了如何基于nolearn使用一些卷积层和池化层来建立一个简单的ConvNet体系结构,以及如...

发表于 2017-11-16 12:18 143次阅读
基于nolear建立的ConvNet体系结构并用...

卷积神经网络检测脸部关键点的教程之两个重要参数:...

上个模型令人讨厌的地方是光训练就花了一个小时的时间,等结果并不是一个令人心情愉快的事情。这一部分,我...

发表于 2017-11-16 12:04 256次阅读
卷积神经网络检测脸部关键点的教程之两个重要参数:...

卷积神经网络检测脸部关键点的教程之卷积神经网络训...

上一次我们用了单隐层的神经网络,效果还可以改善,这一次就使用CNN。 卷积神经网络 上图演示了卷积操...

发表于 2017-11-16 11:45 226次阅读
卷积神经网络检测脸部关键点的教程之卷积神经网络训...

用卷积神经网络检测脸部关键点之训练专项网络教程

训练专项网络 还记得我们在开始时丢弃的70%的培训数据吗?结果表明,如果我们想在Kaggle排行榜上...

发表于 2017-11-15 20:30 102次阅读
用卷积神经网络检测脸部关键点之训练专项网络教程

神奇GIF动画让你秒懂各种深度学习卷积神经网络操...

卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络...

发表于 2017-11-15 18:58 1537次阅读
神奇GIF动画让你秒懂各种深度学习卷积神经网络操...

NLP中CNN模型常见的Pooling操作方法及...

CNN是目前自然语言处理中和RNN并驾齐驱的两种最常见的深度学习模型。图1展示了在NLP任务中使用C...

发表于 2017-11-15 17:59 901次阅读
NLP中CNN模型常见的Pooling操作方法及...

卷积神经网络(CNN)的运用与测试

卷积神经网络:听起来像是生物与数学还有少量计算机科学的奇怪结合,但是这些网络在计算机视觉领域已经造就...

发表于 2017-11-15 17:53 246次阅读
卷积神经网络(CNN)的运用与测试

CNN模型思路、加速算法设计及其实验样例

自从AlexNet一举夺得ILSVRC 2012 ImageNet图像分类竞赛的冠军后,卷积神经网络...

发表于 2017-11-15 14:58 782次阅读
CNN模型思路、加速算法设计及其实验样例

卷积神经网络(CNN)的简单介绍及代码实现

卷积神经网络(CNN)的基础介绍见 ,这里主要以代码实现为主。 CNN是一个多层的神经网络,每层由多...

发表于 2017-11-15 12:27 954次阅读
卷积神经网络(CNN)的简单介绍及代码实现

CNN结构演化进程

演化脉络下图所示CNN结构演化的历史,起点是神经认知机模型,已经出现了卷积结构,但是第一个CNN模型...

发表于 2017-11-15 11:10 184次阅读
CNN结构演化进程

基于FPGA的通用CNN加速设计

基于FPGA的通用CNN加速器整体框架如下,通过Caffe/Tensorflow/Mxnet等框架训...

发表于 2017-10-27 14:09 685次阅读
基于FPGA的通用CNN加速设计

Z1上搭建二值神经网络(BNN)

机器学习(Machine Learning)以及其中的深度学习(Deep Learning)在最近几...

发表于 2017-04-06 16:58 492次阅读
Z1上搭建二值神经网络(BNN)

如何使用FPGA加速机器学习算法?

当前,AI因为其CNN(卷积神经网络)算法出色的表现在图像识别领域占有举足轻重的地位。基本的CNN算...

发表于 2016-05-26 10:16 815次阅读
如何使用FPGA加速机器学习算法?