尊龙人生就是博
联系方式
联系电话:18231880660
联系传真:86 0318 18231880660
联系手机:18231880660
联系QQ:852254121
电子邮箱:fdsfde@hotmail.com
联系地址:中国 上海市嘉定区 工业开发区朱戴路588号
当前位置: > 尊龙人生就是博 > 尊龙人生就是博

看一遍你也会做!用英伟达 DIGITS 进行图像宰割(上)

作者: admin 来源: 未知 发布时间:2017-07-03
看一遍你也会做!用英伟达 DIGITS 进行图像宰割(上)

原题目:看一遍你也会做!用英伟达 DIGITS 进行图像分割(上)

DIGITS 是什么?

7 月 8 日,英伟达深度学习学院 DLI 线下训练营行将来到深圳,主题是图像分类、目标检测与图像分割的零基础开发入门。

虽然是寰球范畴内顶级的 AI 培训名目,但 DLI 进入中国的时光太晚,中文网页也才上线没多久,导致海内开发者只知英伟达的显卡,却不知道英伟达有线上、线下的 AI 技巧培训。此前雷锋网曾撰文介绍过 DLI,详情戳这里

闲话少说,本期深圳 DLI 练习营重要用到 DIGITS 跟 TensorFlow 两个工具。TensorFlow 大家都晓得,不用先容。但对 DIGITS 就很生疏了,尊龙人生就是博,它是什么呢?

DIGITS 是英伟达为遍及深度学习开发的图形化操作界面,简单易用,旨在辅助初学者逾越入门障碍,敏捷上手。因而,DLI 的入门培训均请求学生从 DIGITS 起步。 

说白了, DIGITS 就是一个新手工具。但因为 DLI 刚进入中国,关于 DIGITS 的教程和信息并不充分,为初学者带来信息鸿沟。 因此,雷锋网对这篇英伟达博客宣布的官方教程进行了编译。该教程领导读者用 DIGITS 5 和 Caffe 进行图像分割,它脱胎于 DLI 的线上试验室(online labs)培训课。后者收费且只用英文授课,并错误非会员开放。但大家能从这篇教程对其了解一个大略。

更主要的,7 月 8 日深圳的 DLI 线下训练营,三场主要培训分辨是用 DIGITS 进行图像分类,用 DIGITS 目的检测,以及用 TensorFlow 进行图像分割(懂得详情请点此)。固然前两场的内容与本教程并不一致,最后一场的难度比本文高出很多,而且用的是 TensorFlow 而非 Caffe,尊龙人生就是博,但这篇教程与 DLI 付费培训的内容已非常濒临。

感激三位童鞋朱婷、彭艳蕾与马晓培编译本文破费的血汗。

教程:用 DIGITS 5 进行图像分割

去年底,英伟达发布了 DIGITS 5,为 DIGITS又增加了新功效,其中两个是这篇教程异常感兴趣的,分离是:

      1. 完选集成的分割工作流,它能让你创立图像分割数据集,并将分割网络的输出结果可视化;

      2. DIGITS模型商店,它是一个公共的在线资源库,你可以从中下载网络阐明以及预训练的模型。

本文将摸索图像分割这一主题。对于SYNTHIA数据集里合成图像中的汽车、行人、路标以及各种其他城市物体,我将用DIGITS 5 训练神经网络进行识别和定位 。

图1 是预览,这就是你将通过本教程学着做的货色:

图1: 使用 DIGITS 5.0作图像分割的示例可视化。这交替显示了输入图像、 FCN-Alexnet 预测结果的叠加、 FCN-Alexnet预测结果与ground truth的叠加。

从图像分类到图像分割

假设你想为主动驾驶车设计图像懂得软件。你可能已经据说过Alexnet [1], GoogLeNet [2], VGG-16 [3]以及其余的图像分类神经网络架构,所以你可能从这些着手。如果有一个小狗的照片,图像分类,就是一个让盘算机告知你图中的旺就是旺的进程。

图像分类模型的输出是一个离散的概率分布; 其值介于0、1之间,用来表示每个训练类别的概率。图2是在DIGITS中应用Alexnet对一张猫的图像做分类的示例。其结果无比好:要知道Alexnet是在1000不同类别的对象上训练的,包含动物、乐器、蔬菜、交通工具等等。令人震动的是,在99%的相信区间内,机器可能将图像主题正确归类为猫。即使是我己,恐怕也不外如斯,无奈进一步辨别出这只猫是埃及猫、花斑猫仍是虎斑猫。

图2:来自PASCAL VOC数据集的猫图像的Alexnet分类。

假如一张图片里同时有猫和狗,对它进行分类会产生什么?从常识来看,你可能会信任神经网络对咱们最爱好的这两种宠物图像分类时,将其归为每类的概率雷同。我们来尝尝:图3所示是结果。在预测成果中有猫和狗的混杂,然而AlexNet并不给出50/50分的盼望。在旁边图像中,在前5名的猜测中事实上并没有猫。这真令人扫兴,但是从另一方面来看,AlexNet是在120万张图像的“小”世界上训练的,在这些图像中只有一个对象,所以不能想当然的冀望在多个对象存在的情形下履行良好。

图3 来自 PASCAL VOC 数据集的猫狗图像的Alexnet分类。

分类网络的另一个限度是它们不能分辩出图像中对象的位置。这是可以理解的,由于它们不是被训练来做这个的。只管如此,这却是计算机视觉的一个主要阻碍:如果一辆自动驾驶车不能检测到途径的地位,它没法行驶很远!

图像分割解决了部分弊病。它并不是预测整幅图像的单一律率分布,而是将图像分成多块,预测每块的概率分布。最常见的情况是,图像被划分到像素级别,对每个像素做分类:对图像中的每个像素,训练网络来预测指定像素的类别。这使得网络不仅能辨别出每张图像中多个主题类别,还能检测出对象的位置。图像分割通常生成标签图像,该图像的大小与输入图像的大小相等,其像素依照各类类标用颜色编码。图4 所示是示例,在一幅图像中分割出4个不同类别:桌子、椅子、沙发和盆栽。

图4:来自 PASCAL VOC数据集的图像分割示例(白色区域标志不决义的像素,例如对象轮廓和未分类对象)。

在图像分割的进一步细化中,即实例感知图像分割(IAIS),神经网络要学习识别图像中每个对象的轮廓。这在利用中特殊有用,它必定能识别出单个类别每一次的呈现,甚至在各类之间界线不清楚时也是如此。例如在图5中:中间的图像是图像分割类标,而最右边图像是IAIS类标(留神色彩编码是如何独一地辨认每个人的)。我不会深刻讨论IAIS的主题,我将重点探讨实例分割;但是我很激励你看看Facebook在IAIS上的SharpMask 工作。

 图5: 图像分割(中)vs.实例感知图像分割(右)。图像来自PASCAL VOC数据集。

让我们看一下如何设计能分割图像的网络。

从CNN到FCN

前一节对图像分类模型和图像分割模型作了辨别,前者对每个图像做概率分布预测,后者对每个像素做概率分布预测。准则上,这听起来很类似,你可能感到它们会使用相同的技术。毕竟,仅仅是问题的空间维度得到了增长。在本文中,我将向你展示,仅仅一些小小的调剂就足够将一个分类神经网络变成一个语义分割神经网络。我将使用在这篇论文( this paper)[4]里面世的技术(我将之称为FCN论文)。

开端之前,先说一些术语:我将典范的分类网络,例如Alexnet,称为卷积神经网络(CNN)。这有点滥用,究竟卷积神经网络除了图像分类之外还有良多其他用处,但这是一种常见的近似。

CNN中,常见的做法是将网络分为两部分:前一部分做特征提取,数据通过若干个卷积层逐渐提取到越来越复杂、形象的特征。卷积层之间通常有非线性转移函数和池化层。每个卷积层可被看作是一系列图像滤波器,它们在特定模式下触发高响应。例如,图6所示是来自Alexnet第一个卷积层的滤波器的抒发以及在虚构图像,包括简单的形状上的激死结果(输出)(有趣的是,AlexNet将图像分类成一个挂钟!)这些滤波器触发了在比方水温和垂直边沿和角这些形状上的高响应。例如,看下左下角的滤波器,它看起来像黑白相间的竖条纹。当初看一下相应的激活结果以及在垂直线上的高响应。相似地,在右边的下一个滤波器在斜线上显示了高响应。网络更深的卷积层将可以在更加复杂的形状上例如多边形上触发高响应,最后学习检测纹理和各种各样天然对象的组成成分。在卷积层中,每个卷积输出都是通过通过将每个滤波器运用到输入中的窗口上(也叫感受野)计算而来,按该层的步长滑动窗口直到遍历整个输入为止。感受野尺寸大小与滤波器相同。如图7所示,是卷积计算的说昭示例。注意,输入窗口跨越了输入图像的所有通道。

图6:Alexnet conv1 l层在DIGITS中的表示。从上到下:数据层(输入);conv1层滤波器的可视化;conv1层的激活结果(输出)。

图7:左:红色表示的输入量示例和第一个卷积层的神经元体示例。卷积层中的每个神经元只与输入空间中的部分区域相连接,但是却连接了全体深度(即所有的颜色通道)。注意,沿深度方向有多个神经元(示例中是5个),所有都连接着输入的相同区域;右:神经元依然是计算其权值与输入的点乘,然后长短线性函数,但是它们的连接现在被制约在局部空间上。起源:斯坦福大学CS231 课程。

在CNN的第二局部即最后一部门,分类器包括若干个全连接层,第一个全连接层的输入来自特点提取器。这些层学习特征间复杂的关联,使网络对图像内容有高程度的理解。例如,如果有大眼睛和皮毛,网络可能偏向于猫。神经网络能准确理解这些特征,在某种水平上很神奇,但这也是深度学习的魅力所在。这种可解释性的缺少有时会受到批驳,但在这方面,它和人类大脑的工作方法实在有点像:对于你是怎么知道某张图片是一只猫不是狗,你能说明吗?

全卷积网络(FCN),顾名思义,就是只包含卷积层和上面提到的常设非参数层。怎么打消全连接层来树立看起来更强盛的模型呢?为答复这个问题,我们来思考另一个问题。

图8:DIGITS中显示的 Alexnet 第一个全衔接层(fcn6)的输入、权值和激活函数。

要害问题是:全连接层和全卷积层之间的差别是什么呢?

这很简单,在全连接层,每个输走神经元计算输入中的数据的加权和。比拟之下,每个滤波器计算感触野中的数据的加权和。等一下,这岂非不是统一件事件吗?--是的,但这仅发生在该层输入的大小与感触野的大小相同时。如果输入比感想野大,接下来卷积层会滑动其输入窗口,计算另一个加权和。这个过程重复进行,直到输入图像被从左到右,从上到下扫描一遍。最后,每个滤波器生成一个激活矩阵;每个这样的矩阵被称作特征图谱。

这供给了一个线索:使用等效的卷积层替代全连接层,把该层滤波器的大小设为与输入的大小相同,并且使用与全连接层中神经元个数相同的滤波器。我将在Alexnet的第一个全连接层(fcn6)演出示这一点:图8所示是感兴致层的DIGITS的可视化。你可以看到fcn6从pool5中取得输入,输入的形状是256个的6*6的图像。除此之外,在fcn6的激活结果是4096维的长矩阵,这象征着fcn6有4096个输出神经元。由此可见,如果我想用等价的卷积层调换fcn6,我必须设置滤波器大小为6*6,输出的特征图谱的个数为4096.说一个小小的题外话,你以为该层会有多少可训练的参数?对于每个滤波器,都有一个偏置项加上感受野中每个数值的一个权重。感受野的深度是256,大小为6*6,因此每个滤波器有256x6x6+1=9217个参数。因为这里有4096个滤波器,该层共有37,752,832个参数。这恰是DIGITS中fcn6领有的参数个数。到目前为止,所有都很顺利。

在实践中,很轻易替换该层。如果你使用Caffe,仅仅用表1中右边的定义替换左边的定义即可。

有了这些常识,现在你可以开始将Alexnet中的所有全连接层转换为相应的卷积层。注意,你没必要使用DIGITS计算这些层的输入的形状;你可以手动计算出它们。尽管这听起来很有趣,我确信如果你在VGG-16的16个层(加上中间的池化层)上做这些,你将失去耐烦。更不要说你会不可防止地丢掉你的演算纸。此外,作为一个深度学习喜好者,你应当习惯让机器来做这些工作。所以让DIGITS为你效率吧。

由此发生的FCN与基础的CNN有着相同数目的可学习参数,相同的表白才能和相同的计算庞杂度,尊龙人生就是博。鉴于输入相同,产生的输出也相同。你可能会想:为什么要转换模型这么麻烦呢?是这样的,CNN的基本“卷积”引入了太多的机动性。模型不再受限于在固定输入大小上(在Alexnet中224*224的像素尺寸大小)操作。它可以像滑动窗口一样,通过扫描整个输入来处理更大的图像,不是对整个输入产生一个单一的概率散布,而是对每个224*224的窗口,模型会天生一个概率。网络的输出是一个外形为KxHxW的张量,这里,K表现种别的个数,H表示沿纵轴的滑动窗口的数量,W表示沿横轴的滑动窗口的数量。

在计算效力方面:实践上,你能够通过重复抉择图像的块以实现简略的窗口滑动,而后将这些块输入CNN进行处理。在实际中,这在计算中十分低效:当你逐步滑动窗口时,在每一步上仅仅能看到少量新的像素值。然而,每个块都必需由CNN完整处置,即便持续的块之间存在大批的重叠。每个像素值终极会反复处理很屡次。在FCN中,因为那些计算都发生在网络内部,仅仅只有起码量的操作须要执行,全部处理速度要快的多。

总而言之,这是一个里程碑:在分类网络的输出上增添两个空间维度。在下一节,我将展现如何进一步改良模型。

(未完待续)

via nvidia

尊龙人生就是博 尊龙娱乐-人生就 尊龙娱乐 www.long599.com 尊龙人生就是博 尊龙娱乐-人生就 尊龙娱乐 www.long599.com

{Copyright 2017 尊龙人生就是博 All Rights Reserved
联系电话: 联系传真: 电子邮箱: 联系地址: