您好、欢迎来到现金彩票网!
当前位置:至尊彩票 > 幅度分割 >

用英伟达 DIGITS 进行图像分割

发布时间:2019-06-06 08:07 来源:未知 编辑:admin

  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又增添了新功能,其中两个是这篇教程非常感兴趣的,分别是:

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

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

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

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

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

  如果一张图片里同时有猫和狗,对它进行分类会发生什么?从常识来看,你可能会相信神经网络对我们最喜欢的这两种宠物图像分类时,将其归为每类的概率相同。我们来试试:图3所示是结果。在预测结果中有猫和狗的混合,但是AlexNet并没有给出50/50分的希望。在中间图像中,在前5名的预测中事实上并没有猫。这真令人失望,但是从另一方面来看,AlexNet是在120万张图像的“小”世界上训练的,在这些图像中只有一个对象,所以不能想当然的期望在多个对象存在的情况下执行良好。

  分类网络的另一个限制是它们不能分辨出图像中对象的位置。这是可以理解的,因为它们不是被训练来做这个的。尽管如此,这却是计算机视觉的一个主要障碍:如果一辆自动驾驶车不能检测到道路的位置,它没法行驶很远!

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

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

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

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

  前一节对图像分类模型和图像分割模型作了区分,前者对每个图像做概率分布预测,后者对每个像素做概率分布预测。原则上,这听起来很相似,你可能觉得它们会使用相同的技术。毕竟,仅仅是问题的空间维度得到了增加。在本文中,我将向你展示,仅仅一些小小的调整就足够将一个分类神经网络变成一个语义分割神经网络。我将使用在这篇论文( 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中,由于那些计算都发生在网络内部,仅仅只有最少量的操作需要执行,整个处理速度要快的多。

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

  前一节展示了如何设计一个FCN ,来预测每个窗口的某个类的概率分布。显然,窗口的数量取决于输入图像的大小、窗口的大小和扫描输入图像时窗口之间的步长。理想情况下,一个图像分割模型将生成图像中所有像素的概率分布。在实践中如何做到呢?这里将使用FCN paper上的一个方法。

  当输入图像遍历卷积化的 Alexnet 的连续层时,像素数据的输入被高效地压缩成一组粗化的、更高级的特性表征。图像分割的目的是篡改这些粗化的特征来重建细分类,对输入中的每个像素都是如此。事实证明,这在解卷积层中很容易实现。这些层执行与卷积层相反的操作:给定了卷积输出,一个解卷积层会将输入生成输出,从而给出过滤器的定义。记住,卷积中的跨层(或池化层)定义了处理输入时窗口的滑动距离,以此来衡量下游输出。相反,解卷积层的步幅是衡量上游取样的输出。若选择步幅为4,那么输出将是4倍大!

  下一个问题是:给定模型中的最终卷积层,需要对其激活做多大幅度的升采样,才能使输出与输入图像的大小相同?我需要仔细检查每层并写下它的缩放因子。一旦每一层都这样处理,我只需将缩放因子相乘并汇总。让我们看看第一个卷积Alexnet层。

  conv1的步幅是4,因此缩放因子是1/4。所有层都重复这样做,我确定了总缩放因子在模型中是1/32,如Table 2中概述那样。这样,解卷积层的步幅就是32了。

  出于严谨,我不得不说,“在所有的空间维度上,一个步幅为S的卷积层,产生的输出都是输入的1 / S”这句话并不是完全正确的。在实践中,向输入加入填充P 0将会增加激活数。相反,使用大小为 K 1的核(kernels)将会减少输入端的激活数。在此限制下,如果你为卷积层提供了一个无限长的输入,输入/输出大小的比例在所有的(空间)维度上实际是1 / S。现实中,每一个卷积(池)层的输出被偏移了(P -(k - 1)/ 2)/ S。

  例如,考虑conv1:因为这一层在两侧各有100像素的填充,它的输出比无填充的更大。通过上面的公式,我们可以计算出输出的每一侧在理论上有23.75个额外像素。随着添加更多层,这会累积起来。通过向后运行图,可以计算所有层的累计抵消。L1与L2层的组合(i.e. 在Caffe术语中,L2是L1的底层,L1、L2 又分别抵消 O1、O2) 会抵消O2 / F + O1,这里F是L2的累积缩放因子。

  表2:卷积化的Alexnet中,遍布连续层的缩放因子和抵消补偿。* 对反卷积层来说缩放因子等于步幅,抵消等于(k - 1)/ 2 p。

  表2表明,通过所有conv1到upscore的层时,神经网络的输出被18个像素根据输入做了相应移动。最后一个分割模型中的技巧,是一个修剪网络输出、移除每个边界上额外的18像素的层。这很容易在Caffe 的 Crop layer 中实现,下面的清单中对这些做了定义。

  你可能会注意到,这个版本的Alexnet的内边距(padding)比你经常在conv1层遇到的多一点。这背后有两个原因:一个原因是,产生了更大的初始化偏移,以补偿连续层没有吃进图像的缺失。然而,主要的原因是网络以最佳方式处理输入图像的边界 ,以命中网络可接受域的中心,大概就是这样。

  现在,我有了从FCN paper复制FCN FCN-Alexnet模型所需的一切。我们可以放松一下,欣赏一些SYNTHIA数据集里的图像。

  SYNTHIA数据集的样本图像见图9。这些图像展示了用不同的对象类合成的城市场景,比如不同条件下的建筑物、道路、车辆和行人, 如昼夜。有趣的是,图片看起来特真实以致于有时候人们会被它们吸引:嗯,第一张图片上那个在路中间看报纸的人有点反常,这么干很危险。

  在 DIGITS 5.0 中,创建一个图像分割数据集十分简单,只需要选中输入和真实样本图像文件夹,点击“Create”按键。DIGITS 支持多种标签格式,比如画板图片(它的标签图像中的像素值是彩色画板的指数)和 RGB 图片(每种颜色指示一个类)。

  在 DIGITS 中创建数据集之后,你可以探索数据库在视觉上检查它们的内容,见图10。

  在DIGITS里训练模型,有数据集和对神经网络的描述就够了。如果你觉得用卷积Alexnet太复杂太耗时的话,别烦恼:DIGITS 5.0版有一个模型商店,而且就像你能想象的那样,FCN-Alexnet可以从这个模型商店里下载!

  但如果你决定要走一条更难的路,去创造自己的模型描述,就可能要找一个合适的权重初始值方案,比如说Kaiming方法(另名MSRA),是目前最前沿的修正流线性单元形式。这个在Caffe里很容易实现,只要加上一个权重过滤器 { type: msra }指向你的参数层就好了。如果在DIGITS里用这种方法训练模型,很有可能得到像图11的曲线。从图中可以看出,结果并不尽如人意。验证集的准确程度在35%的时候达到最高(意思是说只有在验证数据集里35%的像素被准确地标记出来)。训练损失跟验证损失一致,意味着这个网络(模型)对训练数据集欠拟合。

  图11: 用Synthia数据训练FCN-Alexnet网络(模型),在DIGITS里面利用随机权重初始值方法得到的训练集/验证集的损失和准确率:蓝线--训练集的损失走势,绿线--验证集的损失走势,黄线--模型结果在验证集里的准确率

  你可以在一个样例图片上试试运气,让DIGITS帮你完成图片分割的可视化。你会发现网络(模型)会不分青红皂白的把所有元素都归类成“建筑物”,就像图12所示。原来在SYNTHIA数据中,“建筑物”是最具代表性的目标类别,而网络(模型)只是懒洋洋地进行了学习并把所有图片元素都标记成了“建筑物”才达到了35%的准确率。那么,一般可接受的处理这种网络(模型)在训练集里欠拟合的方法都有哪些呢?

  拉长训练时间:只观察损失曲线的走势,训练过程貌似达到了最高,然而这很可能没什么帮助。网络(模型)很有可能进入了局域最小值而且不能从中脱离出来。

  提高学习率同时减少每批量的大小:这样做可以鼓励陷入局域最小值不能自拔的网络(模型)去探索周围环境之外的区域,尽管这样会增大网络(模型)发散的风险。

  还有一种方法我发现在计算机视觉中应用得非常好:转化学习。更多请继续往下读。

  图12:图片分割可视化的样本展示:网络(模型)把所有元素都归类成了“建筑物”。此样本是利用随机权重初始值的方法,在DIGITS里用Synthia数据训练FCN-Alexnet网络(模型)得到的。

  你不用非得从随机初始化权重开始,来训练一个模型。很多情况下,重新利用网络(模型)训练另外一组数据中的得到的认知,会很有帮助。这种方法在计算机视觉里通过CNN网络(模型)尤其奏效,因为很多低级的特征(线路,拐角,形状,纹理)可以马上应用在任意数据中。由于图片分割是在像素水平下做分类分析,从类似ILSVRC2012这样的图片分类数据集里做迁移学习十分合理。利用Caffe这样做就变得相当简单---当然需要设立一个或两个陷阱!

  记得在Alexnet的fc6模型中(图8),权重的形状是4096×9216。在FCN-Alexnet的conv6模型中,权重的形状是4096x256x6x6。这其实是一样的权重值,但是由于形状不同,Caffe不能自动把权重转交到FCN-Alexnet模型里。这个任务可以交给“net surgery(网络手术)”脚本来履行,脚本例子可以在Github网站里的DIGITS知识库找到。网络手术脚本的功能在于把参数从全连接层移植到对应的卷积层里。然而,你会发现从公共的DIGITS模型商店里下载提前训练好的模型会更简单一些。图13展示了模型商店的界面:在“FCN-Alexnet”旁边,点击“导入”,DIGITS就会下载提前训练好的模型。

  你可能会有另外一个顾虑,那就是怎样初始化早先加入到该文本的升采样层呢?别忘了,此升采样层并不是原始Alexnet模型中的一部分。在FCN那篇论文中,作者建议随机初始化对应的权重,然后让网络(模型)学习它们。该篇论文的作者后来意识到,初始化这些权重其实很简单,通过做双线性插值,让升采样层充当放大镜就可以了。在Caffe里,这种方法可以通过加上一个权重过滤器 { type: bilinear }指向升采样层来实现。

  利用一个提前训练好的FCN-Alexnet模型,你会注意到,在检测图14这种个别图像的时候,准确率会快速超过90%。检测到9个不同的类别,图形分割结果会变得更有说服力。但你还是会有点失望,因为物体轮廓仍然非常模糊。请继续往下读本文的最后一个章节:如何进一步提高分割模型的精确性和准确性。

  图14:图片分割可视化的样本展示。此样本是利用一个提前训练好的ILSVRC2012-Alexnet模型,在DIGITS里用Synthia数据训练FCN-Alexnet网络(模型)得到的。

  之前加进FCN-Alexnet的升采样层,把conv7的输出值扩大了32倍。在实际应用中,这意着对于每个32×32的像素块,神经网络会做一次预测。这也就解释了为啥目标物体轮廓会那么模糊。那篇FCN文章介绍了另外一个非常棒的主意来解决上面的局限:跳过那些被加入的连接层,直接把pool3和pool4的输出值重新定向到网络的输出值上。由于那些汇总层(pool3, pool4)位于网络的靠后方向,它们就可以在低水平的特征上运作,从而能够抓到更细致的细节。

  在一个叫做FCN-8s的网络结构中,那篇FCN文章介绍了一个基于VGG-16的网络,利用这个网络,最后输出结果可以是pool3的总和采样层×8,可以是pool4的采样层×2,还可以是conv7的采样层×4,如图15所示。这就引导出一种网络,能够在更细分的纹路生成预测,向下到8×8的像素块。

  为了方便使用,用户可以在公共的DIGITS模型商店里下载一个提前训练好的FCN-8s。(你肯定不想自己动手卷积VGG-16)如果你用DIGITS在SYTHIA数据上训练FCN-8s,你会发现仅仅经过几个epoch(时期),验证集的准确率就能超越95%。更重要的是,当你在一个样本图片上做实验,观察DIGITS的高超图片分割可视化的时候,你会看到更为清晰的物体轮廓,像图16中那样。

  图16: 图片分割可视化的样本展示。此样本是利用DIGITS在Synthia数据上训练FCN-8s网络(模型)得到的。

  读过本文之后,怎样开始做图片分割,你应该心里有谱了。DIGITS 5会在12月份的第一个星期发布。访问DIGITS网站继续学习,注册NVIDIA Developer program账号,以便下载版本可用时及时收到通知。

  DIGITS在GitHub上是一个可共享的开源项目。如果你想上手实践图片分割技术,请直接访问DIGITS GitHub项目网页,以便得到源代码。

  DIGITS创建并导入自己的图片分类数据集(其他数据集类似)使用DIGITS进行深度学习的研究会方便很多,其中一点就是进行数据集的处理方面。创建自己的数据集DIGITS对数据集格式的要求是我目前觉得最...博文来自:weixin_43640369的博客

  英伟达近日发布了NVIDIADIGIT5。DIGIT5有许多新功能,本文将着重介绍下面两个:1.一个完全集成的分割工作流(segmentationworkflow),允许创建图像分割数据库和将一个分割...

  机器学习初学者入门实践:怎样轻松创造高精度分类网络为了实现我们的目标,我们将训练和应用一个卷积神经网络(CNN)。我们将从实践的角度来接近我们的目标,而不是阐释其基本原理。目前人们对人工智能有很大的热...

  1切换到你的digits目录下2./digits-devserver启动digits3在浏览器上输入(将其作为一个服务器)4制作数据库,制作模型  自己在用vg...

  转载自:导读:本项目是基于论文《语义分割全卷积网络的Tensorflow实现》的基础上实...

  接触tensorflow小白,网上教程很多,图像分类应该属于比较经典的一个例子啦,特别是google推了slim,但是网上的教程遗漏啦许多细节介绍会导致,经过调试终于跑出来啦结果还算可以,分享一下我的...

  导读:本项目是基于论文《语义分割全卷积网络的Tensorflow实现》的基础上实现的,该实现主要是基于论文作者给的参考代码。该模型应用于麻省理工学院(

  最近在研究全卷积神经网络在图像分割方面的应用,因为自己是做医学图像处理方面的工作,所以就把一个基于FCN(全卷积神经网络)的神经网络用keras实现了,并且用了一个医学图像的数据集进行了图像分割。全卷...

  不够熟悉Python和命令行,还想学深度学习,幸好NvidiaDigits是一款web应用工具,可以在网页上对Caffe进行图形化操作和可视化。Nvidia对深度学习真是偏爱,为了卖出更多的显卡真...

  format这个函数不是用于控制运算精度的,它只能控制结果显示类型。运算的时候还是用matlab自己的精度,具体是多少就不知道了。matlab控制运算精度用的是digits和vpa这两个函数。...

  digits工具是caffe的非常给力的预处理工具,开源地址为安装在Ubuntu16.0.4上安装命令如下所示:源代码安装方式1.安装依...

  一时兴起,想用digits进行深度学习训练,非常适合新手入门digits安装教程:到目前为止...

  一。模型基本组成想要训练一个caffe模型,需要配置两个文件,包含两个部分:网络模型,参数配置,分别对应*.prototxt,****_solver.prototxt文件。Caffe模型文件解析:预处...

  本文主要记录了NVIDIADIGITS的参数设置方法及其与Caffe中的参数的对应关系。

  数据准备首先,需要将准备好的原始数据与其标签文件放在固定目录下,然后建立标签索引文件train.txt与val.txt,具体格式如图所示,左侧是原图,右侧是标签图:然后建立test.txt文件,具体如...

  图像语义分割是对图像像素级理解的基础,也是图像处理的高阶操作。自从深度学习出来之后,已经有了不少的基于卷积网络的图像语义分割模型,如从全卷积网络到大型卷积核:深度学习的语义分割全指南这篇文章介绍了非常...

  图像分割深度学习尤其是卷积神经网络在图像处理的许多领域都获得了很大的成功,在分类,识别等方面都已经获得了很大的成功.在深度学习把图像分类和识别达到极致之后。深度学习开始在图像分割方面开始进行收割了。图...

  一全卷积神经网络深度学习图像分割(FCN)训练自己的模型大致可以以下三步:1.为自己的数据制作label;2.将自己的数据分为train,val和test集;3.仿照voc_lyaers.py编写自己...

  [转] 图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一...

  最近看了几篇关于视网膜层切割的处理论文,现在比较流行的方法是用FCN(全卷积神经网络来做)。在医疗领域中,通常使用一种称之为U-net的FCN来做图像切割,效果不错。本文基于U-net来做实现,详细介...

  目标检测模型中性能评估的几个重要参数有精确度,精确度和召回率。本文中我们将讨论一个常用的度量指标:均值平均精度,即MAP。在二元分类中,精确度和召回率是一个简单直观的统计量,但是在目标检测中有所不同的...

  概述:KMeans方法GMM方法分水岭方法GrabCutKMeans方法 1.无监督的学习方法(不需要人为的干预)2.分类问题,输入数目,初始化中心位置3.硬分类方法,以距离度量(不同的分类会有不同的...

  来源:我们在用一个算法对一幅图像进行分割之后,总会面临这样一个问题,分割的结果到底好不好。用...

  对于监督学习算法而言,数据决定了任务的上限,而算法只是在不断逼近这个上限。世界上最遥远的距离就是我们用同一个模型,但是却有不同的任务。但是数据标注是个耗时耗力的工作,下面介绍几个图像标注工具:Lab...

  更新一波网上很多博客已经写了如何搭建的教程,因为搭建的过程中参考了很多博客和官方教程,所以在这里写下自己在笔记本上搭建的教程吧,适合随时在自己本上调程序的小伙伴们。第一部分系统安装版本Ubuntuky...

  教程没有博士学位,照样玩转TensorFlow深度学习机器之心2017-01-2412:32:22程序设计谷歌操作系统阅读(362)评论(0)选自Codelabs机器之心编译参与:侯韵楚、王宇欣、赵...

  11.5下午三号楼nvidia的人来进行讲座关于digits。现场进行了导入他提供的样本库进行训练,实现辨别数字图片。账号就是操作文档:

  Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量。但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小。而且这些...

  查看本博客前,请先参考博客:有时候,激活的时候不成功,比如我的是myeclips...

  1、错误:                 键盘遮挡输入框最常见的可能就是在登录界面了,无论有多少个textFiled,不论是在VC的任何位置。都有可能造成键盘弹出来时,把输入框挡住了。...

  链表是数据结构中最基本常用的,C++语言中单链表是利用指针操作实现的,python作为面向对象编程的,可以使用创建一个Node类来实现链表,利用类的属性引用来代替指针操作。 下面我们创建了一个...

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...

  一、概述 二、7个设计原则 三、创建型模式(5种) 四、结构型模式(7种) 五、行为型模式(11种) 六、总结 前言:熟练地掌握设计模式,并能在实际编程开发中灵活运用它们,不仅能使代码更规范,重用性...

  帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...

  tensorflow在ubuntu系统上按照官方文档安装起来相对容易,在centos上由于没有apt-get( yum)相对困难一些,本文会提到一些安装过程中遇到的一些坑及解放方案。...

  在网上所搜索很多操作Word的都是用VC,VS2010做了一些修改,添加操作的方式和用法都有所变化。 要操作Word必须先添加对应的类,如下图在工程中添加操作类(TypeLib中的 MFC类): ...

  若函数的返回值是指针,且用const修饰,则函数返回值指向的内容是常数,不可被修改,此返回值仅能赋值给const修饰的相同类型的指针。如: 1  const int * f1(){ 2      ...

  前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了。现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初...

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...

  卜可的博客三菱FX系列PLC与PC通讯的实现之专有协议(计算机联接)的程序设计之一

  阅读内容为:FX系列微型可编程控制器用户手册(通讯篇)中计算机链接功能章节。 采用本方法通信,pc端的实现,其实就是,把操作按照协议(2种)翻译成相应的字符串,通过串口发送给plc。 编写一应用程...

  最近在学热更新,涉及到资源热更,所以就了解了XML,JSON相关的东西。这方面网上资料还是比较多的,所以这里主要是总结一下基本使用方法和一些应用的Demo。 1.先介绍一下 XML 和 JSON ...

  测试环境莫名其妙有几条重要数据被删除了,由于在binlog里面只看到是公用账号删除的,无法查询是那个谁在那个时间段登录的,就考虑怎么记录每一个MYSQL账号的登录信息,在MYSQL中,每个连接都会先执...

  1. 规则引擎面临的问题:业务规则的实现大部分是由开发人员来实现的 业务规则需要业务分析人员能够阅读和理解 业务规则的可读性和用户的友好性都不太好2. DSL领域特殊语言DSL == Domain...

http://steveouch.com/fudufenge/396.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有