2017-11-07 00:00:00 leadai 阅读数 380
  • 英伟达工程师亲授如何用TensorRT加速YOLO目标检测推演...

    本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程将会采用分享+QA的形式,在详细的分享之外,QA也是课程中一个非常精彩的环节。

    1247 人正在学习 去看看 CSDN讲师


2017年11月5号,由英伟达深度学习学院浙江理工大学主办,由丽台(上海)信息科技有限公司LeadAI学院承办的《英伟达深度学习学院半日初级培训课程(免费)》在百年历史的浙理校内成功举办了。

 

火爆的课程现场


我们深知,人工智能的趋势越来越热,其应用的方面也越来越广,近几年的人工智能发展速度比过去几十年都多且快。书本上四年学到的知识,有可能在一天之内,就会被超越。面对日新月异的科技转换升级中,我们很有必要把最新的科技发展和成果带到学校,带给师生,让这些日后将成为该产业最大的预备性人才有更好的起点,有向外看的对接窗口。所以我们长期坚持与各高等院校合作,免费开展各项入门级的培训课程。于是,这次我们走进了浙理。

 

这场专门为高校预备性人才和周边工程师准备的入门级课程,吸引了在校师生和相关专业人才多达七十多位。由此可见,对深度神经网络的学习,社会需求是很大的。


11月5日下午,我们在浙理的信息中心机房内举办了英伟达深度学习学院半日初级课程,这门课主要内容:通过 NVIDIA DIGITS,了解和实践基于深度神经网络的深度学习工作流程,体验如何进行图像分类,而动手实验课程基于最新的 AI 框架,SDKs 和 技术来进行实验操作。

 

学生们正在实操


我们相信,经过此次课程后,师生们对基于深度神经网络的深度学习工作流程都有所了解,而理论知识在手,师生们对于之后的编程,即实现某种具体应用(比如这里的图像分类)的操作流程能更加得心应手。

往期精彩回顾


LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础



点击“阅读原文”直接打开【北京站 | GPU CUDA 进阶课程】报名链接

2017-10-24 20:12:58 Uwr44UOuQcNsUQb60zk2 阅读数 444
  • 英伟达工程师亲授如何用TensorRT加速YOLO目标检测推演...

    本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程将会采用分享+QA的形式,在详细的分享之外,QA也是课程中一个非常精彩的环节。

    1247 人正在学习 去看看 CSDN讲师

9 月 26 日,以「引领 AI 新格局」为主题的英伟达 GTC 2017 中国站于北京国际饭店会议中心正式开幕,与此同时,超过 500 名开发者也开始了他们超过 30 小时,涵盖了健康医疗、金融与制造等多个领域的深度学习模型构建培训。




于去年的 GTC 大会上正式宣布启动的英伟达深度学习学院(DLI)如今已经跟随着 GTC 的脚步进行了一年的全球巡回, 据英伟达开发者营销副总裁 Greg Estes 透露,今年,项目预计会吸引超过两万名开发者参与到学院的活动当中。


近年的「AI 大爆炸」让深度学习这项一度十分神秘的技术在短短几年内从科学研究走向前沿应用,如今已「飞入寻常百姓家」,成为了广大用户家庭与个人的智能设备与应用中必不可少的一部分。数据机构 IDC 预测,在 2020年,80% 的应用中将会包含 AI 构件。


然而,当前行业面临的现状是,并没有这么多的开发者熟练掌握 AI 相关算法的构建,就连大学里也很难找到以「上手」为目标的深度学习应用课程。因此英伟达成立了深度学习学院,联合了斯坦福、加州大学伯克利分校等高校,谷歌云、AWS 等深度学习业界巨头,希望把自身尖端的深度学习技术化为容易上手的课程,带给由全球超过两千万开发者组成的社区中。


中国也在 AI 的研究与应用中走在了世界前沿,为了能让更多的中国开发者不受语言和地域的限制,更便利地接受深度学习知识,英伟达与腾讯云以及丽台科技(Leadtek)合作,分别推出面向中国手中的在线培训与线下研讨会。DLI 的学员如今可以登录腾讯云,利用部署在腾讯云服务器上的英伟达 GPU 进行模型的训练和推理。丽台科技则作为线下合作伙伴走进客户的公司实地授课。


以这次 GTC 的 DLI 为例,课上用到了多个深度学习框架,包括 TensorFlow、MXNet、 Caffe、Keras、Theano 等,课程内容则既有通用模型的设计、训练和推理(如图像分类、目标检测,用 GAN 进行图像生成等),也有服务于特定垂直领域的专门化的课程(例如用 DragoNN 对基因组学进行深度学习、基于自动交易的 LSTM 时间序列金融数据预测等)。


虽然市面上的「深度学习培训」比较多,但专注于垂直领域的专门化课程还是比较少见的。因此,机器之心就此向 Greg Estes 提问:这类课程的目标群体是哪些人?课程的目标是希望他们能够从头开始训练自己的模型,还是做到能熟练调用设计好的模型?


Greg 表示,DLI 的目标群体一般是垂直领域内的数据科学家、研究者、开发者,他们有丰富的专业知识、行业经验以及一定的编程能力,但是缺少 AI 的相关知识。例如,DLI 会走进宝洁公司,去和皮肤护理方面的数据专家沟通,帮助他们获得相应的能力,能够搭建一个通过用户上传的自拍来分析皮肤类型并推荐护肤品的 AI 应用。DLI 也会和大型金融机构的量化交易分析师交流,鉴于金融是一个数据公开而算法高度机密的行业,大部分交流是「单向」的,「我们尽可能帮助他们理解 AI 能够如何应用于金融,但是并不会得到有关他们的算法的知识。」


而在培训的深度方面,有一些基础的课程,比如「强化学习」,就会给学员一个已训练好的模型来使用,调试。还有一些专门的课程,是会针对某一垂直领域里的一个特定的情境、用例,去进行从零开始的模型设计教学,比如专用于机器人的深度学习模型搭建。这也是为什么 DLI 覆盖了各种框架的原因,因为根据要解决的问题不同,开发者们倾向于使用的框架也大不相同。


最后 Greg 表示,「覆盖全面又有深度,正是英伟达的强项。很少有公司能像我们一样,有相应的专家,并且有在每个领域里工作的经验,我们希望把这些宝贵的经验传递给更多的开发者。」


2017-08-02 16:59:00 weixin_33918357 阅读数 55
  • 英伟达工程师亲授如何用TensorRT加速YOLO目标检测推演...

    本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程将会采用分享+QA的形式,在详细的分享之外,QA也是课程中一个非常精彩的环节。

    1247 人正在学习 去看看 CSDN讲师

作为一名 AI 技术从业者,你是否经常遇到这样的问题:

好不容易搞懂了一种 AI 算法,代码也写好了,结果 CPU 算力吃紧,跑不起来;

好不容易入门了一种开源框架,模型也搭好了,结果运行了半天,进度才 5%;

好不容易拿到了一组可用数据,结果纠结了半天也不敢导入模型,怕睡一觉醒来弹出一个 Error 又要重新开始。

你可能会想到英伟达,想到这家深度学习 GPU 加速技术的领导厂商在 AI 领域的诸多布局。

比如 NVIDIA TITAN/TESLA 系列 GPU 加速器:

英伟达深度学习学院(DLI)现场教你如何实操深度学习,作为 AI 开发者的你不来看看?

比如 cuDNN、TensorRT、cuBLAS 等各种软件 SDK:

英伟达深度学习学院(DLI)现场教你如何实操深度学习,作为 AI 开发者的你不来看看?

以及被誉为深度学习超级计算机的 NVIDIA DGX-1 整机:

英伟达深度学习学院(DLI)现场教你如何实操深度学习,作为 AI 开发者的你不来看看?

可是,面对这些主打 GPU 加速技术的软硬件产品,面对充满技术专业词汇的英文文档和用例说明,你发现根本无从下手,于是感到了深深的绝望。

为了一举解决上述所有问题,英伟达已经找到了一个完美的解决办法:深度学习学院(Deep Learning Institute,DLI)。通过与 Udacity 和 Coursera 等知名在线教育提供商以及微软等领先的云服务提供商合作,英伟达 DLI 在过去一年中已经帮助全球 10,000 多名开发人员将深度学习技术部署在相关产品中。背靠英伟达在深度学习培训方面的软硬件资源优势,DLI 已经成为全球深度学习开发者们最受欢迎的培训机构之一。

如何报名参与英伟达 DLI 呢?眼前就放着一个绝好的体验机会!

在即将开幕的第二届 CCF-GAIR 2017 全球人工智能与机器人峰会上(详情链接),雷锋网将联合英伟达 DLI ,面向 AI 技术从业者,特别推出一个深度学习开发者专场。对深度学习和英伟达 GPU 加速技术感兴趣的朋友,可以通过这次专场对英伟达 DLI 课程来一个现场体验。

英伟达深度学习学院(DLI)现场教你如何实操深度学习,作为 AI 开发者的你不来看看?

具体来说,在 7 月 8 日的专场中,参会的 AI 技术从业者将在英伟达 DLI 高级工程师的现场指导下,先学习深度学习相关的理论知识,再接入英伟达官方服务器进行一次关于图像分割的代码实操,理论结合实践,在一天时间内一举入门深度学习!

  专场的具体议程安排如下:

英伟达深度学习学院(DLI)现场教你如何实操深度学习,作为 AI 开发者的你不来看看?

目前,开发者专场门票已经开始火热预售,只需 1999 元即可获得与英伟达官方深度学习团队现场交流的机会,数量有限,售完即止,各位对深度学习感兴趣的技术从业者们千万不可错过!

作为业界最高规格的人工智能盛宴,CCF GAIR 2017 主会场 “五折早鸟票”,为贵宾量身定制的 “VIP 票”,以及免费入场的 “展览票” 等其他门票也已经开放注册和抢购,感兴趣的朋友们可访问 GAIR 大会官网了解详情。

偷偷告诉你:开发者专场票和主会场门票一起购买还有优惠哦!




====================================分割线================================

本文作者:恒亮
本文转自雷锋网禁止二次转载,原文链接
2017-07-02 20:38:15 xiangz_csdn 阅读数 3431
  • 英伟达工程师亲授如何用TensorRT加速YOLO目标检测推演...

    本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程将会采用分享+QA的形式,在详细的分享之外,QA也是课程中一个非常精彩的环节。

    1247 人正在学习 去看看 CSDN讲师

[转] https://www.leiphone.com/news/201706/2h3Q3vs4VOs5fIcc.html

       https://www.leiphone.com/news/201706/lp3AtCJuqAAzfhQO.html


看一遍你也会做!用英伟达 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 是预览,这就是你将通过本教程学着做的东西:

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

图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%的置信区间内,机器能够将图像主题正确归类为猫。即便是我己,恐怕也不过如此,无法进一步分辨出这只猫是埃及猫、花斑猫还是虎斑猫。

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

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

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

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

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

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

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

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

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

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

看一遍你也会做!用英伟达 DIGITS 进行图像分割(上) 图5: 图像分割(中)vs.实例感知图像分割(右)。图像来自PASCAL VOC数据集。

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

从CNN到FCN

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

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

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


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

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

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

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

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

全卷积网络(FCN),顾名思义,就是只包含卷积层和上面提到的临时非参数层。怎样消除全连接层来建立看起来更强大的模型呢?为回答这个问题,我们来思考另一个问题。

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

图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中右边的定义替换左边的定义即可。

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

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

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

在计算效率方面:理论上,你可以通过重复选择图像的块以实现简单的窗口滑动,然后将这些块输入CNN进行处理。在实践中,这在计算中非常低效:当你逐渐滑动窗口时,在每一步上仅仅能看到少量新的像素值。然而,每个块都必须由CNN完全处理,即使连续的块之间存在大量的重叠。每个像素值最终会重复处理很多次。在FCN中,由于那些计算都发生在网络内部,仅仅只有最少量的操作需要执行,整个处理速度要快的多。

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


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

基于FCN的图像分割

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

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

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


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

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


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

出于严谨,我不得不说,“在所有的空间维度上,一个步幅为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对那些计算的汇总

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

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

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

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

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

SYNTHIA 数据集

SYNTHIA数据集最初发表在paper [5]。

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

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

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

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

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

训练模型

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

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

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


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

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

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

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

  3. 增加模型大小:这种方法可以加大模型的表现力。

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

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


图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就会下载提前训练好的模型。

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


图13:DIGITS模型商店

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

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

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


图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 进行图像分割(下)


图15: FCN-8s跳过连接层的演示图。来源:FCN文献

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

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


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

现在该你了

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

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

论文索引

[1] Krizhevsky, A., Sutskever, I. and Hinton, G. E. “ImageNet Classification with Deep Convolutional Neural Networks”. NIPS Proceedings. NIPS 2012: Neural Information Processing Systems, Lake Tahoe, Nevada. 2012.

[2]  Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich. “Going Deeper With Convolutions”. CVPR 2015.

[3] Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv technical report arXiv:1409.1556. 2014.

[4] Long, Jonathan, Evan Shelhamer, and Trevor Darrell. “Fully convolutional networks for semantic segmentation.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition 2015: 3431-3440.

[5] Ros, German, Laura Sellart, Joanna Materzynska, David Vazquez, and Antonio M. Lopez; “The SYNTHIA Dataset: A large collection of synthetic images for semantic segmentation of urban scenes.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition 2016: 3234-3243.

[6] He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun “Delving deep into rectifiers: Surpassing human-level performance on imagenet classification.” Proceedings of the IEEE International Conference on Computer Vision 2015: 1026-1034.

via nvidia

2017-10-16 00:00:00 gh13uy2ql0N5 阅读数 268
  • 英伟达工程师亲授如何用TensorRT加速YOLO目标检测推演...

    本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程将会采用分享+QA的形式,在详细的分享之外,QA也是课程中一个非常精彩的环节。

    1247 人正在学习 去看看 CSDN讲师

 

听听演讲,学学理论,您是否还想亲自动手实践,体验如何训练深度学习模型来完成一个计算机视觉方面的任务呢?快来参加英伟达深度学习学院 (Deep Learning Institute,简称DLI)推出的免费基础公开课吧!


DLI自去年开始在全球推广“深度学习”培训,每门课程都包含动手实验,并基于最新的AIframework、深度学习软件和GPU技术,让学员可以亲自实践深度学习的完整工作流程,拓展解决问题的思路和能力,让AI真正融于实践,提升个人和企业的竞争优势。www.nvidia.cn/DLI

 

欢迎您前来观看,或者带着自己的电脑来现场跟着老师学习。每位参加的朋友,都可以获赠3张课程试用卡,可以学习DLI更多领域、更深入的在线实验室课程。

 

开课时间:10月21日下午2点至5点

地点: 安徽世纪金源大饭店3层首长接见厅

 

日程:

14:00-15:30 不需要写代码,用开源软件DIGITS实现图像分类

15:30-17:00 不需要写代码,用开源软件DIGITS实现目标检测

 

课程介绍:


通过DIGITS实现图像分类

级别:初级 | 预备知识:无

行业:所有 | Frameworks: Caffe

此实验室会向您展示如何通过在 Caffe 框架上的 NVIDIA DIGITS 和MNIST 手写数据集,在深度学习工作流程中利用深度神经网络 (DNN), 尤其是卷积神经网络 (CNN) 解决真实图像分类问题,您会学到:


  • 构建运行在GPU上的深度神经网络

  • 管理数据准备、模型定义、模型训练和问题排查过程

  • 使用验证数据来测试和尝试不同策略来提升模型性能


完成此实验室后,您将能够使用 NVIDIADIGITS 来构建、训练、评估和提升您的图像分类应用程序中 CNN 的准确性。

 

通过DIGITS实现目标检测


级别:初级 | 预备知识:通过DIGITS实现图像分类
行业:所有 | Frameworks: Caffe

此实验室通过尝试下列三种不同方法:滑动窗口, 全卷积神经网络 (FCN) 和 DIGITS 的 DetectNet 网络模型,向学员介绍四个主要电脑视觉任务之一 目标检测。您将学到:


  • 评估与下列三个指标有关的目标检测方法:模型训练时间、模型准确性和部署时的检测速度

  • 使用滑动窗口方法检测目标

  • 将全连接网络转换为全卷积神经网络 (FCN)

  • 使用 DIGITS DetectNet 提升目标检测效率


完成此实验室后,您将了解每种方法的优点,并学习如何使用 NVIDIA DIGITS 在 Caffe 框架中利用真实数据集训练神经网络,并以此检测目标。

 

课前准备:


您可以选择来听课,或者自带电脑来跟随讲师一起动手实验。如要亲自体验动手实践课程,请根据如下要求做好准备:


  • 开通DLI课程实验网站账户:在https://nvlabs.qwiklab.com/上注册账号。现场我们将提供免费token供您上课使用。

  • 电脑只需安装有IE 10 (或以上版本), 或者 Chrome 59 (或以上版本) 浏览器。

  • 请自行解决网络问题,使电脑可以在培训现场时访问如上DLI课程实验网站。


推荐阅读

打造百度AI大脑的80后科学家

斯坦福发布3D街景数据集

搜狗招股书90次提到AI,王小川持股超10亿

谷歌重磅发布43页Waymo无人车报告

3行Python代码完成人脸识别

阿里巴巴成立“达摩院“未来3年投入将超千亿

2018年人工智能将赋能所有行业

百度西雅图开设AI实验室

初学者必读的八个趣味机器学习项目

AMD深度学习开源战略


长期招聘志愿者

加入「AI从业者社群」请备注个人信息

添加小鸡微信  liulailiuwang


没有更多推荐了,返回首页