译是如何把深度学习“塞进”手机的?

导读前几天谷歌更新了它们的翻译App,其中最大的提升了是“字镜头”实时视频翻译和通话实时翻译。怎么做到的?字镜头技术首创者、Google 研究院翻译项目组资深软件工程师Otavio Good近日在博客上详述了相关原理。

前几天谷歌更新了它们的翻译App,该版本有诸多提升的地方,其中最大的是提升了所谓“字镜头”实时视频翻译性能和通话实时翻译性能。怎么提升的呢?字镜头技术首创者、Google 研究院翻译项目组资深软件工程师Otavio Good近日在Google Research Blog详述了相关原理。

正文部分如下:

今天(2015年7月29日),我们发布了Google翻译手机App,现在这款App可支持20多种语言的即时视觉翻译(Visual Translation),也就是说,您可拿着手机摄像头对着实物,实物中的文字就可被即时识别出,并被翻译成目标语言。这项技术就是Google翻译中最新增加的特性——字镜头(Word Lens),如图1所示。

图 1 Google翻译手机版(图片来源:Google)

因此,倘若下一次您有机会莅临一个陌生国家的城市,例如布拉格(Prague,捷克共和国首都和最大城市),当您饥肠辘辘地迈进一家饭馆时,再也不用担心看不懂那“宛如天书般”外文菜单了,因为此刻我们这款App可以悄然地帮您化解点菜的尴尬。那么,这款App是如何能够快速识别这些新语言的?下面我就给大家说道说道这款App背后的事儿。

言简意赅地说,我们的这款即时视觉翻译App,用到了深度神经网络(deep neural network,DNN)技术。

当年,我们字镜头(Word Lens)研究团队加入Google这个大家庭时,我们非常兴奋,因为这样就有机会和Google深度学习领域的大牛们一起工作。在过去几年里,神经网络犹如“磐涅重生”,重新唤起人们的极大关注,研究人员们亦不负众望,在诸如图像识别等领域取得不斐的成就。

就在五年前,如果您交给计算机一幅阿猫或阿狗的图像,让它识别,通常它会很作难——水平有限,猫狗难辨。但时过境迁,由于卷积神经网络(convolutional neural network)技术的诞生,计算机不但可轻易分别出阿猫阿狗,它们甚至还可以分别出狗的不同品种,不管这狗是中国藏獒、德国牧羊犬,还是拉布拉多犬、西伯利亚雪橇犬,计算机都能分辨出个“子丑寅卯”来。

图2 数码迷幻艺术(图片来源:Google DeepDream)

是的,现在计算机的威力,已经不限于“玩玩”数码迷幻艺术(trippy art,参见例图2)了。如果你下载了Google翻译App的最新发布版,用之翻译您看不懂的外文菜单,那背后为您服务就是深度神经网络技术。

或许,您会不以为然,唔,这个…… 这个还好吧,Google已经把深度学习用得“炉火纯青”了,再把这技术用在文字翻译上,似乎在情理之中,意料之内。在人工智能时代,这类演示好像已有不少了吧。

但是,您可能不知道的是,我们这款App最棒的地方在于,它可在不联网的情况下也能正常工作,也就是说,所有深度学习的计算完全在手机上完成的。您是知道的,深度学习的计算量是不容小觑的。可这又是怎么做到的呢?

一步一步来,循序渐进

(1)找到图片中字符

当利用手机摄像头把图像读取进来后,Google即时翻译App要做的是,找到图片中需要翻译的字母。这款App首要要剔除诸如树木或汽车等背景对象,凸显出想要翻译的文字。在识辨图片中的文字过程中,这款App通过识别类似的、连续的色素块,来完成任务。如果某些像素颜色相似、位置彼此靠近,那么就可能是我们要找的字符,这些字符连接成一行,或许就是我们要找的一行文字(下图左1子图为原始图片,左2子图中红色方框框出的,即为标识出来的字符)。

图3 图片文字识别及翻译流程

(2)识别图片中字符

接下来,这款App就要识别出第(1)步定位的字符。这时就该让“深度学习”出马了。我们要用到卷积神经网络,并在字母和非字母集合上训练这个网络,这样做的目的在于,让它学习到不同字母的长得是啥模样(在图3左3子图中,瑞典语“Mörk”为识别出的字符)。

有意思的是,我们的训练集,并非都是那些方方正正的“纯洁的”字符集合,因为倘若不是这样,训练出来的识别器,就无法识别出在这个“并不纯洁”的大千世界中的字符。要知道,在真实的世界里,这些字符可能会因为反射、灰尘、污迹及各种稀奇古怪的破损,导致摄像头拍摄出来的字符“似是而非”。

因此,我们构建了一个字符生成器,来伪造生成各式各样的阴影、扭曲字符。或许您要问,为什么你们不用真实世界中的图片字符,而是使用合成的数据集,来训练深度神经网络呢?

嗯,其实原因很简单,我们很难找到足够多的、多种语言的、各种“光怪陆离”文字样本。当我们想要训练一个真正高效的,紧凑的神经网络时,更加困难的是,真实世界的字符样本非常难以精细控制。

图4 本图显示的是我们用作训练的各种“脏”字母。这些“脏”字母包括有污垢的,有亮点的和有扭曲的等各类字符,但这些情况不能有太多,因为太多这样的非正常字符会让我们的神经网络“迷糊”。

(3)查询字典,翻译识别出的字符

接下来,就是通过查字典,将这些识别出来的文字翻译为目标语言。在第(2)步的字符识别过程中,可能存在失准的地方,比如说,将“super”识别成“5uper”(也就是说,把字符S识别成5),但这也关系不大,在字典查询过程中,匹配允许存在一定的模糊性,“5uper”还是有可能被纠正为“super”(在图3左3子图中,将瑞典语的“Mörk”翻译成英语的“Dark”)。

(4)重新渲染翻译的文字

最后一步,我们会重新渲染翻译出来的文字,让翻译文字和图片中原文的字体和颜色一致。之所以我们可以做到这点,是因为我们已经从图像中找到并识别出我们要想的字符,并已确切地知道它们在原始图片中的位置。于是,在获取字符周围的颜色后,就可以从原始图像中“剔除”原始字符。然后,我们在保持原始前景色不变的基础上,在原始文字位置上,添加翻译出来的字符,这样就可以达到,加工出的图像和翻译出来的文字犹如 “浑然天成”(对比一下:图3左1子图为原始图,左4子图为即时翻译系统的加工图,如果不了解内情,可能您都会认为,这是厂商发布的两种语言版本的广告呢)。

将深度学习 “塞进”手机中

如果要将上述4步即时视觉翻译的流程,放置到我们的数据中心(data center)上去完成,这看起来并不是什么太难的事情。

但是,想一想,很多我们的手机用户,特别是那些仅在下载我们App时才仅此一次的用到我们数据中心的用户,他们的手机网络,要么慢如蜗牛,要么时断时续,加之智能手机又耗电得要命,让他们的手机将拍摄到的图像,发送到远程的Google数据中心上,在计算完毕后,再将识别结果发回手机,在上述场景下,是非常的不便!

那些低端手机的性能,可能要比一个稍微好点的笔记本电脑慢上50倍,而这个性能稍好的笔记本电脑,在计算性能上,和我们的数据中心相比,亦是差得何止十万八千里。而事实上,我们的数据中心,才是运行常规图像识别系统的平台。

那么,在没有和任何云计算平台相连的背景下,如何利用这些四处移动的手机摄像头捕获图像,并完成即时的视觉翻译呢?

答案很简单:自力更生,丰衣足食!我们开发了一个非常小型的神经网络,让它在计算能力有限的智能手机上,独立工作。在训练这个小型的神经网络时,我们做了若干个严格的限定,也就是说,我们设置了它所能处理的信息密度上限。因此,工作的挑战——如何生成最有效的训练数据,立马凸显出来了。

在生成适用的训练数据上,我们可是费了老大劲的。例如,我们仅希望识别出小幅扭曲变型的字符。因为如果字符扭曲幅度过大,为了识别它,神经网络就会在过多不重要的事物上,使用过高的信息密度,这就大大增加深度神经网络的计算量。所以,我们花了很大功夫,做出了一套工具,这些工具极大地提升了迭代效率和可视化渲染效果。在数分钟内,我们可以改变我们的神经网络算法,让这个算法产生训练数据,并重新训练参数,最后给出可视化识别结果。

从这里,我们可以找到,哪些字符识别失败,并及时查明原因。在这点上,我们故意将训练数据过度扭曲,这样一来,字符“$” 一开始可能被识别为“S”。但这没有关系,我们能够快速地确认这种“失误”何在,然后调整数据扭曲参数,来降低“失误率”。这就有点像,在现实生活中,我们要徒手画一副画,刚开始,我们画得可能很不像,但我们不断地修正,每次重画,都能进步一点点,最后您会看到,中途所有的不完善,都是为了画出一个完美的画面。

为了达到翻译的即时性,我们也做了大量的优化工作,而且优化和反复调试的工作量很大。此外,为了改善计算性能,在某些数学运算上,也需要手工重度调优。我们充分利用SIMD(Single instruction, multiple data,单指令流多数据流),这是一种数据并行的模式,来挖掘智能多核手机的并行潜能。同时,我们还优化矩阵乘法,提高矩阵运算的局部性,使之在各级缓存(Cache)中,提高Cache的命中率。

最后,如您所见,我们终于让这个基于深度神经网络的翻译系统在手机上跑起来了,而翻译的效果比老版翻译系统高出一大截,而在运行速度上,一点也不逊色于老版翻译系统。

有时候,新技术看起来非常抽象,找到诸如卷积神经网络这类新技术的用武之地,并不总是那么显而易见。打破语言障碍——做一款棒棒的、多语言的即时视觉翻译系统,我想,这应是一个伟大的应用案例。

原文发布时间为:2015-08-04

时间: 2024-11-18 20:22:42

译是如何把深度学习“塞进”手机的?的相关文章

为什么非要把广告塞进手机里?

大佬们说话,很多时候只能听一半,另一半是弦外之音.说一行二.声东击西是商人的必备技能,正所谓商场如战场,兵不厌诈. 一年前,马化腾.李彦宏.周鸿祎等大佬都表达过目前"不看好移动广告"的意思,但是今年开始,巨头们却都悄悄地谋划建立一个自家的移动广告平台.什么是移动广告平台?说白了就是研究如何把广告放到你的手机里. 那么问题来了,为什么非要把广告放到手机里? 这两年大家都说移动互联网是未来,移动互联网是啥?是手机.未来是啥?对于企业来讲,未来不是梦想,而是钱.(只有那些忽悠人的企业家才口口

30个深度学习库:按Python和C++等10种语言分类

本文介绍了包括 Python.Java.Haskell等在内的一系列编程语言的深度学习库. 一.Python 1.Theano 是一种用于使用数列来定义和评估数学表达的 Python 库.它可以让 Python 中深度学习算法的编写更为简单.很多其他的库是以 Theano 为基础开发的: Keras 是类似 Torch 的一个精简的,高度模块化的神经网络库.Theano 在底层帮助其优化 CPU 和 GPU 运行中的张量操作. Pylearn2 是一个引用大量如随机梯度(Stochastic G

大牛讲堂 | 深度学习Sequence Learning技术分享

雷锋网按:本文作者都大龙,2011年7月毕业于中科院计算技术研究所:曾任百度深度学习研究院(IDL)资深研发工程师,并连续两次获得百度最高奖-百万美金大奖:现在Horizon Robotics负责自主服务机器人.智能家居以及玩具方向的算法研究与开发,涉及深度学习.计算机视觉.人机交互.SLAM.机器人规划控制等多个领域. 深度学习独领风骚 人工智能领域深度学习独领风骚自2006 年Geoffery Hinton等在<科学>( Science) 杂志发表那篇著名的论文开始, 深度学习的热潮从学术

第一个手机端分布式深度学习系统,设计自动化顶会 DATE 最佳论文

DATE--Design, Automation and Test in Europe,是欧洲最大的设计自动化会议.DATE 汇集的人群从研究者.开放商到终端用户,几乎覆盖了整个生态.具体说,设计师和设计自动化的用户.研究人员和供应商,以及电子电路和系统的软硬设计.测试和制造的专家.此外,DATE 非常强调 IC/SoC,可重配置硬件,还有嵌入式系统. 2017 年的 DATE 本月 27 号在瑞士洛桑揭幕.在为期 5 天的会议中,除了常规的主旨演讲.论文发表.讲座和研讨会,还有一个商业展出,展

[译] 深度学习的未来

本文讲的是[译] 深度学习的未来, 原文地址:The future of deep learning 原文作者:Francois Chollet 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:Changkun Ou 校对者:MoutainOne, sunshine940326 这篇文章改编自我的书 Deep Learning with Python(Manning 出版社)第 9 章第 3 节(译者注:「结论」一章最后一小节). 它是讨论当前深度学习

[译] 深度学习系列1:设置 AWS &amp; 图像识别

本文讲的是[译] 深度学习系列1:设置 AWS & 图像识别, 原文地址:Deep Learning #1: Setting up AWS & Image Recognition 原文作者:Rutger Ruizendaal 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:TobiasLee 校对者:Tina92 sqrthree 这篇文章是深度学习系列的第一部分.你可以在这里查看第二部分,以及这里查看第三部分. 本周的任务:对猫和狗的图像进行分

[译] 深度学习系列 4: 为什么你需要使用嵌入层

本文讲的是[译] 深度学习系列 4: 为什么你需要使用嵌入层, 原文地址:Deep Learning 4: Why You Need to Start Using Embedding Layers 原文作者:Rutger Ruizendaal 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:Tobias Lee 校对者:LJ147.changkun 深度学习系列4: 为什么你需要使用嵌入层 除了词嵌入以外还有很多 这是深度学习系列的其中一篇,其他文章地

[译] 从金属巨人到深度学习

本文讲的是[译] 从金属巨人到深度学习, 原文地址:From Automatons to Deep Learning 原文作者:Mark Aduol 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:Xat_MassacrE 校对者:Tina92,Feximin 从金属巨人到深度学习 AI(人工智能)简史 塔罗斯是一个青铜巨人战士,被创造出来守护克里特岛,抵御海盗和入侵者的攻击.他每天绕克里特岛三周,他凶狠的外表迫使海盗去别的地方寻找宝藏.但是在他凶狠外

[译]搭建个人深度学习平台:GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDNN 7 + Tensorflow/Mxnet/

本文讲的是[译]搭建个人深度学习平台:GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDNN 7 + Tensorflow/Mxnet/, 原文地址:Build Personal Deep Learning Rig: GTX 1080 + Ubuntu 16.04 + CUDA 8.0RC + CuDnn 7 + Tensorflow/Mxnet/Caffe/Darknet 原文作者:Guanghan Ning 译文出自:掘金翻译计划 本文永久链接:github