图像识别深度学习用的模型有哪些

基于深度学习的图像识别进展百度的若干实践_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于深度学习的图像识别进展百度的若干实践
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢02:57:39 UTC
深度学习做计算机视觉,基本的gpu配置和计算机配置是什么?推荐的配置是什么?
03:20:21 UTC
调试算法单机即可,我自己的实验机器是 Intel i7 + 32GB 内存 + nvidia GTX 970 。 但要跑大量数据还是需要集群。
分享一个常跑kaggle竞赛的同学选择GPU机器的经验之谈:
Why should I get a GPU?
I have been using GPUs for nearly two years now and for me it is again and again amazing to see how much speedup you get. Compared to CPUs 20x speedups are typical, but on larger problems one can achieve 50x speedups. With GPUs you can try out new ideas, algorithms and experiments much faster than usual and get almost immediate feedback as to what works and what does not. This is a very important aspect when one begins to do deep learning as this rapid gain in practical experience is key to build the expertise with which you can make deep learning work on new problems. Without this rapid feedback it just takes too much time to learn from one’s mistakes and it can be discouraging and frustrating to go on with deep learning.
With GPUs I quickly learned how to apply deep learning on a range of Kaggle competitions and I managed to earn second place in the
Kaggle competition, where it was the task to predict weather ratings for a given tweet. In the competition I used a rather large two layered deep neural network with rectified linear units and dropout for regularization and this deep net fitted barely into my 6GB GPU memory. More details on my approach can be found .
Should I get multiple GPUs?
Excited by what deep learning can do with GPUs I plunged myself into multi-GPU territory by assembling a small GPU cluster with InfiniBand 40Gbit/s interconnect. I was thrilled to see if even better results can be obtained with multiple GPUs.
Setup in my main computer: You can see three GXT Titan and an InfiniBand card. Is this a good setup for doing deep learning?
I quickly found that it is not only very difficult to parallelize neural networks on multiple GPU efficiently, but also that the speedup was only mediocre for dense neural networks. Small neural networks could be parallelized rather efficiently using data parallelism, but larger neural networks like I used in the Partly Sunny with a Chance of Hashtags Kaggle competition received almost no speedup.
However, using model parallelism, I was able to train neural networks that were much larger and that had almost 3 billion connections. But to leverage these connections one needs just much larger data sets than are normally used. I found some uses for that when I trained a language model on the entire Wikipedia corpus – but that’s about it.
On the other hand, one advantage of multiple GPUs is that you can run multiple algorithms or experiments separately on each GPU. This is highly useful if your main goal is to gain deep learning experience as quickly as possible. You gain no speedups, but you get more information of your performance by using different algorithms or parameters at once.
If you use deep learning only occasionally, or you use rather small data sets (smaller than say 10-15GB) and foremost dense neural networks, then multiple GPUs are probably not for you. However, when you use convolutional neural networks a lot, then multiple GPUs might still make sense.
released his new
which can run convolutional neural networks on up to four GPUs. Convolutional neural networks – unlike dense neural networks – can be run very efficiently on multiple GPUs because their use of weight sharing makes data parallelism very efficient. On top of that, Alex Krizhevsky’s implementation utilizes model parallelizm for the densely connected final layers of the network.
However, if you want to program similar networks for yourself, be aware that to program efficient convolutional kernels for multiple GPUs is a very difficult undertaking for which expert GPU programming skills are required.
So overall, one can say that one GPU should be sufficient for almost any task and that additional GPUs convey only benefits under very specific circumstances.
So what kind of GPU should I get?
Required memory size
People often ask me if the GPUs with the largest memory are best for them, as this would enable them to run the largest neural networks. I thought like this when I bought my GPU, a GTX Titan with 6GB memory. And I also thought that this was a good choice when my neural network in the Partly Sunny with a Chance of Hashtags Kaggle competition barely fitted in my GPU memory. But later I found out that my neural network implementation was very memory inefficient and much less memory would have been sufficient.
Generally, if you want to know how large a neural network you could fit into a given GPU memory then subtract 400 MB as a buffer, then divide the GPU memory by two for the momentum matrix, then multiply the memory in MB by ${1024\times 1024}$ to get bytes, and finally divide by four get the number of floating point numbers fitting into that memory. For a GTX Titan this would be $\frac{()\times 1024\times 1024}{4\times 2} = 752.877.568$ parameters. For the Kaggle competition I used a 00x32 network, which are just 52.128.000 parameters (with momentum matrix). So this network would even fit into a small GPU with 1536 MB (space for about 148.897.792 parameters). For comparison, Alex Krizhevsky’s convolutional neural network for the ImageNet competition featured 60.000.000 parameters (120 million with momentum matrix).
So the bottom line is if you just want to use neural networks on some Kaggle data sets and build normal models, you should not worry too much about memory (${\geq 1536\mbox{MB}}$ is fine). For cutting edge models that are used on very large amounts of data you should have more than 3GB.
Update : Sander Dieleman made me aware, that this last sentence should be emphasized: If you really want to work on large data sets, you should go for either 4GB or 6GB (depending on your budget). He also pointed out an error in my reasoning with parameters: Convolutional kernels need additional memory to run, i.e. they need additional memory beyond the parameters alone. So Alex’s net – even though it features 120 million parameters, does not fit into 3GB memory. So my calculation above are off for convolutional neural networks (which are arguably the most important neural networks to date). Otherwise this blog post contains all the information you need to make a fully informed choice for your deep learning GPU. I will update the post as more information regard GTX 980 performance is known (first currency mining tests indicate, that the GTX 980 will be the best GPU. Although it’s stats are bad, it’s architecture seems to make more than just up for it! More later).
Fastest GPU for a given budget
Processing performance is most often measured in floating-point operations per second (FLOPS). This measure is often advertised in GPU computing and it is also the measure which determines which supercomputer enters the TOP500 list of the fastest supercomputers. However, this measure is misleading, as it measures processing power on problems that do not occur in practice.
It turns out that the most important practical measure for GPU performance is bandwidth in GB/s, which measures how much memory can be read and written per second. This is because almost all mathematical operations, such as dot product, sum, addition etcetera, are bandwidth bound, i.e. limited by the GB/s
of the card rather than its FLOPS.
Comparison of bandwidth for CPUs and GPUs over time. Bandwidth is one of the main reasons why GPUs are faster for computing than CPUs are.
To determine the fastest GPU for a given budget one can use and look at Bandwidth in GB/s; the listed prices are quite accurate for newer cards (600 and 700 series), but the 400 and 500 series is significantly cheaper than the listed prices – especially if you buy those cards via eBay.
Another important factor to consider however, is that the Fermi architecture (400 and 500 series) is quite a bit faster than the newer Kepler architecture (600 and 700 series), so that for example the GTX 580 is faster than any GTX 600 series GPU. Only high end 700 series GPUs (770, 780, Titan) outpace the GTX 580.
So the only disadvantage a GTX 580 has is its smaller memory of 1.5 or 3GB – which as discussed above – is not so bad after all. With an eBay price of $150-200 the GTX 580 is rather cheap (compared to the 770, 780 and Titan, that is) while delivering excellent performance with a good amount of memory.
For special applications one can easily reason which GPU to choose by balancing ones required memory size, bandwidth in GB/s and the price of the GPU, and this reasoning will be solid for many years to come. But right now and more generally, choosing a GTX 580 will be the best and most cost-effective choice for most deep learning application that does not involve (very) large neural networks.
原文(需翻墙):
17:39:25 UTC
很好的介绍了如果要做 深度学习 相关工作应该如何选择 合适的GPU,值得收藏。
17:50:38 UTC
深度学习“引擎”之争:GPU加速还是专属神经网络芯片?
深度学习(DeepLearning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引擎的引擎,基本所有的深度学习计算平台都采用GPU加速。同时,深度学习已成为GPU提供商NVIDIA的一个新的战略方向,以及3月份的GTC 2015的绝对主角。
那么,GPU用于深度学习的最新进展如何?这些进展对深度学习框架有哪些影响?深度学习开发者应该如何发挥GPU的潜力?GPU与深度学习结合的前景以及未来技术趋势到底是怎么样的?在日前的NVIDIA深度学习中国战略发布会上,NVIDIA全球副总裁、PSG兼云计算业务中国区总经理Ashok Pandey带领其深度学习相关管理团队接受了记者的采访,就NVIDIA的深度学习战略、技术、生态、市场相关问题进行了详细的解读。
NVIDIA认为,目前是数据、模型和GPU在推动深度学习的蓬勃发展,深度学习用户可以选择不同的计算平台,但开发人员需要一个易于部署的平台和良好的生态环境,包括一些基于硬件优化的开源工具,而构建一个良好的深度学习计算生态,既是GPU现有的优势,也是NVIDIA一贯的宗旨。
NVIDIA全球副总裁、PSG兼云计算业务中国区总经理Ashok Pandey
为什么GPU与深度学习很合拍?
随着数据量和计算力的提升,Hinton和LeCun耕耘多年的大型神经网络终有用武之地,深度学习的性能和学习精度得到很大的提升,被广泛运用到文本处理、语音和图像识别上,不仅被Google、Facebook、百度、微软等巨头采用,也成为猿题库、旷视科技这类初创公司的核心竞争力。
那么为什么是GPU呢?最重要的是GPU出色的浮点计算性能特别提高了深度学习两大关键活动:分类和卷积的性能,同时又达到所需的精准度。NVIDIA表示,深度学习需要很高的内在并行度、大量的浮点计算能力以及矩阵预算,而GPU可以提供这些能力,并且在相同的精度下,相对传统CPU的方式,拥有更快的处理速度、更少的服务器投入和更低的功耗。
采用GPU加速与只采用CPU训练CNN的性能比较
以ImageNet竞赛为例,基于GPU加速的深度学习算法,百度、微软和Google的计算机视觉系统在ImageNet图像分类和识别测试中分别达到了5.98%(2015年1月数据)4.94%(2015年2月数据)、4.8%(2015年2月数据)、的错误率,接近或超过了人类识别水平——跑分竞赛虽然有针对已知数据集进行特定优化之嫌,但优化结果对工业界的实践仍然具有参考价值。
“人工智能从过去基于模型的方法,变成现在基于数据、基于统计的方法,主要得益于GPU高度并行的结构、高效快速的连接能力。事实证明GPU很适合深度学习。”北京航空航天大学教授、国家“十二五 863计划高效能计算机及应用服务环境”重大项目总体组组长钱德沛说。
NVIDIA回顾了GTC上推出的四项有助于推动深度学习发展的新产品和方案:
1、GeForce GTX TITAN X,为训练深度神经网络而开发的GPU。
TITANX采用 NVIDIA Maxwell GPU 架构,结合 3,072 个处理核心、单精度峰值性能为7 teraflops,加上板载的 12GB 显存,336.5GB/s 的带宽,可处理用于训练深度神经网络的数百万的数据。
NVIDIA介绍,TITAN X 在工业标准模型AlexNet 上,花了不到三天的时间、使用 120万个 ImageNet 图像数据集去训练模型,而使用16核心的 CPU 得花上四十多天。
2、DIGITS DevBox,针对研究人员的桌边型深度学习工具。
DIGITSDevBox采用四个 TITAN X GPU,从内存到 I/O的每个组件都进行了最佳化调试,预先安装了开发深度神经网络所需要使用到的各种软件,包括:DIGITS软件包,三大流行深度学习架构Caffe、Theano和Torch,以及 NVIDIA 完整的GPU 加速深度学习库 cuDNN 2.0。和其他巨头一样,NVIDIA对开源的支持也是不遗余力。
NVIDIA表示,在关键深度学习测试中,DIGITSDevBox 可以提供 4 倍于单个TITAN X 的性能。使用 DIGITSDevBox 来训练 AlexNet 只要13个小时就能完成,而使用最好的单GPU PC 的话则是两天,单纯使用 CPU 系统的话则要一个月以上的时间。
3、下一代GPU 架构Pascal,将使深度学习应用中的计算速度相比Maxwell加快十倍。
Pascal引入了大幅加快训练速度的三项设计,包括:32GB 的显存(是GeForce GTX TITANX 的 2.7 倍),可进行混合精度的计算任务,能够在 16位浮点精度下拥有两倍于 32 位浮点精度下的速率的计算速度;配备 3D 堆叠显存,让开发人员能建立更大的神经网络,提升深度学习应用程序的速度性能多达5倍;另搭配 NVIDIA 的高速互连技术 NVLink 来连接两个以上的 GPU,可将深度学习的速度提升达十倍。
NVIDIA表示,现在在深度学习领域一般都用单精度进行,未来的趋势可能有人要用半精度,甚至1/4精度,所以NVIDIA需要根据用户的需求调整GPU的架构,Pascal支持FP16和FP32,可以提升机器学习的性能。
4、DRIVE PX,用于自动驾驶汽车的深度学习平台。
基于NVIDIA Tegra X1,结合最新的PX平台,可以让汽车在仪表显示和自动驾驶方面得到质的飞跃。
值得关注的NVLink和DIGITS
谈到下一代Pascal 架构的十倍性能,不得不说NVLink,它使得 GPU 与 GPU 之间、GPU 与 CPU 之间数据传输的速度,较现有的PCI-Express 标准加快5到12倍,对于深度学习这些需要更高 GPU 间传递速度的应用程序来说是一大福音。开发者应当高兴的是,NVLink基于点对点传输形式,编程模式与 PCI-Express 相同。
NVIDIA表示,NVLink可将系统里的 GPU 数量增加一倍,以共同用于深度学习计算任务上;还能以新的方式连接 CPU 与 GPU,在服务器设计方面提供较 PCI-E 更出色的灵活性和省电表现。
其实不管要做数据并行还是模型并行,NVLink对深度学习开发人员都带来更大的想象空间。国内语音识别领头羊科大讯飞,基于多GPGPU和InfiniBand构建了一个环形的并行学习架构,用于DNN、RNN、CNN等模型训练,效果不错,但采用InfiniBand也让其他从业者羡慕其“土豪”行径,如果有了NVLink,显然可以有别的好办法。
当然,想用NVLink也意味着新的投资,而NVIDIA现有的产品线对深度学习的支持也不错,用户可以酌情选择。更多的深度学习硬件选择知识,可以参考Kaggle比赛选手Tim Dettmers撰写的博文:《深度学习硬件指南完整版》。
另外一个是DIGITS,用于设计、训练和验证图像分类深度神经网络的多合一图形系统。DIGITS可在安装、配置和训练深度神经网络过程中为用户提供指导,具有便于从本地和网络加载训练数据集的用户界面和工作流程管理能力,并提供实时监控和可视化功能,目前支持GPU 加速版本 Caffe,详见ParallelForall 博客:《》。
DIGITS之所以首先选择支持Caffe,NVIDIA表示,是因为他们的客户调研结果显示这一框架目前最受欢迎(包括国内的BAT等和国外的一些用户),同理,cuDNN运算库也是最先集成到Caffe开源工具中。NVIDIA承诺,即使不能覆盖所有的工具,DIGITS后续也会对主流的开源工具提供支持,主要是前述的Theano和Torch。NVIDIA全球在DIGITS、cuDNN团队都分别投入30多人到开源工作之中,这些开发人员也在社区中与深度学习开发者保持密切的沟通。
在NVIDIA看来,国内的深度学习研究水平与国外机构基本相当,从高校科研的角度来说,香港中文大学、中科院自动化所都获得ImageNet不错的名次,从工业界来说,BAT、乐视、科大讯飞等都在深度学习领域拥有很多年轻的工程师和不错的研究成果。NVIDIA希望加强中国生态环境的建设,推动深度学习的应用,主要方式仍然包括开源社区的投入、高校科研合作、服务器厂商的合作以及企业用户的合作。
2015年1月,NVIDIA与爱奇艺签署了深度合作框架协议,双方将在视频深度学习(deepvideo)和媒体云计算领域紧密合作,利用最先进的GPU和深度学习架构,搭建爱奇艺视频创作、分享、服务平台。NVIDIA表示,未来还将继续与重点客户合作建立联合实验室。
采用GPU加速的深度学习的企业
GPU还是专用芯片?
尽管深度学习和人工智能在宣传上炙手可热,但无论从仿生的视角抑或统计学的角度,深度学习的工业应用都还是初阶,深度学习的理论基础也尚未建立和完善,在一些从业人员看来,依靠堆积计算力和数据集获得结果的方式显得过于暴力——要让机器更好地理解人的意图,就需要更多的数据和更强的计算平台,而且往往还是有监督学习——当然,现阶段我们还没有数据不足的忧虑。未来是否在理论完善之后不再依赖数据、不再依赖于给数据打标签(无监督学习)、不再需要向计算力要性能和精度?
退一步说,即便计算力仍是必需的引擎,那么是否一定就是基于GPU?我们知道,,而,在70毫瓦的功率上提供100万个“神经元”内核、2.56亿个“突触”内核以及4096个“神经突触”内核,甚至允许神经网络和机器学习负载超越了冯·诺依曼架构,二者的能耗和性能,都足以成为GPU潜在的挑战者。例如,科大讯飞为打造“讯飞超脑”,除了GPU,还考虑借助深度定制的人工神经网络专属芯片来打造更大规模的超算平台集群。
不过,在二者尚未产品化的今天,NVIDIA并不担忧GPU会在深度学习领域失宠。首先,NVIDIA认为,GPU作为底层平台,起到的是加速的作用,帮助深度学习的研发人员更快地训练出更大的模型,不会受到深度学习模型实现方式的影响。其次,NVIDIA表示,用户可以根据需求选择不同的平台,但深度学习研发人员需要在算法、统计方面精益求精,都需要一个生态环境的支持,GPU已经构建了CUDA、cuDNN及DIGITS等工具,支持各种主流开源框架,提供友好的界面和可视化的方式,并得到了合作伙伴的支持,例如浪潮开发了一个支持多GPU的Caffe,曙光也研发了基于PCI总线的多GPU的技术,对熟悉串行程序设计的开发者更加友好。相比之下,FPGA可编程芯片或者是人工神经网络专属芯片对于植入服务器以及编程环境、编程能力要求更高,还缺乏通用的潜力,不适合普及。您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于深度学习的图像识别进展百度的若干实践.pdf9页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:120 &&
基于深度学习的图像识别进展百度的若干实践.pdf
你可能关注的文档:
··········
··········
专题 第?11?卷??第4?期??2015?年?4?月 基于深度学习的图像识别进展: 百度的若干实践 都大龙 余轶南 罗 恒 等 关键词 : 深度学习 图像分类 物体检测 百度公司 概述:深度学习和图 语音搜索、图像识别等领域,涵 2. 深度学习不是一个黑箱 像识别 盖几十项产品。今天,用户在百
系统。它像概率模型一样,提供 度平台上的几乎每个服务请求, 一套丰富的、基于联接主义的建 近年来在人工智能领域最 都被深度学习系统所处理。 模语言 (建模框架)。利用这套 受关注的,非深度学习莫属。自 人工智能的特征之一是学习 语言系统,我们可以表达数据内 ? 的能力,即系统的性能是否会随 在的丰富关系和结构,比如用卷 2006 年吉奥夫雷 辛顿 Geoffery Hinton
等在 《科学》 Science
杂 着经验数据的积累而不断提升。 积处理图像中的二维空间结构, [1]
所以,大数据时代的到来给人 用递归神经网络 Recurrent Neu- 志发表那篇著名的论文 开始, 深度学习的热潮从学术界席卷到 工智能的发展提供前所未有的机 ral Network , RNN
处理自然语言 了工业界。20 12 年6 月,《纽约 遇。在这个时代背景下,深度学 等数据中的时序结构。 时报》披露 “谷歌大脑 Google 习在包括图像识别等方面所取得 3. 深度学习几乎是唯一的 Brain ”项目,由著名的斯坦福大
的突破性进展并非偶然。 端到端机器学习系统。它直接 学机器学习教授吴恩达 Andrew 在百度的实践中,我们认识 作用于原始数据,自动逐层进行 Ng
和大规模计算机系统世界顶 到深度学习主要在以下三个方面 特征学习,整个过程直接优化某 ? 具有巨大优势 : 个目标函数。而传统机器学习往 级专家杰夫 迪恩 Jeff Dean
共 同主导,用 1.6 万个CPU 核的 1. 从 统 计
正在加载中,请稍后...基于深度学习的图像识别进展:百度的若干实践_中华文本库
第1页/共9页
基于深度学习的图像识别进展:百度的若干实践
关键词:深度学习 图像分类 物体检测
都大龙 余轶南 罗 恒 等
2.深度学习不是一个黑箱
概述:深度学习和图像识别
近年来在人工智能领域最受关注的,非深度学习莫属。自2006年吉奥夫雷·辛顿(Geoffery Hinton)等在《科学》(Science)杂
语音搜索、图像识别等领域,涵盖几十项产品。今天,用户在百都被深度学习系统所处理。
人工智能的特征之一是学习的能力,即系统的性能是否会随
系统。它像概率模型一样,提供
模语言(建模框架)。利用这套语言系统,我们可以表达数据内在的丰富关系和结构,比如用卷用递归神经网络(Recurrent Neu-ral Network, RNN)处理自然语言等数据中的时序结构。
3.深度学习几乎是唯一的
度平台上的几乎每个服务请求,一套丰富的、基于联接主义的建
着经验数据的积累而不断提升。积处理图像中的二维空间结构,工智能的发展提供前所未有的机遇。在这个时代背景下,深度学习在包括图像识别等方面所取得的突破性进展并非偶然。
在百度的实践中,我们认识到深度学习主要在以下三个方面具有巨大优势:
1.从统计和计算的角度
志发表那篇著名的论文[1]开始,所以,大数据时代的到来给人深度学习的热潮从学术界席卷到了工业界。2012年6月,《纽约时报》披露“谷歌大脑(Google Brain)”项目,由著名的斯坦福大学机器学习教授吴恩达(Andrew Ng)和大规模计算机系统世界顶级专家杰夫·迪恩(Jeff Dean)共同主导,用1.6万个CPU核的并行计算平台训练深度神经网络(Deep Neural Networks, DNN)的机器学习模型,在语音和图像识别等领域获得巨大成功。
国内方面,2013年1月,百度成立深度学习研究院,公司CEO李彦宏担任院长。短短两年时间,深度学习技术被应用到百
端到端机器学习系统。它直接
作用于原始数据,自动逐层进行特征学习,整个过程直接优化某个目标函数。而传统机器学习往往被分解为几个不连贯的数据预处理步骤,比如人工抽取特征,这些步骤并非一致地优化某个整
让计算机识别和理解图像,是人工智能最重要的目标之一。尤其是在移动互联网时代,智能的世界捕捉下来,图像和视频数据暴增,造就了图像大数据时代。
看,深度学习特别适合处理大
数据。在很多问题上,深度学习
它集中体现了当前机器学习算法的三个大趋势:用较为复杂的模型降低模型偏差(model bias),用用可扩展(scalable)的梯度下降
是目前我们能找到的最好方法。体的目标函数。
大数据提升统计估计的准确度,手机上的摄像头将人们日常看到
度的凤巢广告系统、网页搜索、算法求解大规模优化问题。
第1页/共9页
寻找更多 ""}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信