2017年10月6日星期五

这是一份你们需要的Windows版深度学习软件安装指南

选自Github

机器之心编译

参与:蒋思源、刘晓坤

本文从最基本的依赖项开始,依次配置了 VS 2015、Anaconda 4.4.0、CUDA 8.0.61 和 cuDNN v5.1 等基本环境,然后再从 Keras 出发安装 Theano、TensorFlow 和 CNTK 以作为其后端。在完成配置深度学习框架后,本文分别利用这三个框架作为 Keras 后端在 CPU 和 GPU 上训练了一个标准的卷积神经网络,完成该简单的卷积网络也就意味着我们完成了深度学习环境的配置。
  • 从零开始:深度学习软件环境安装指南(Ubuntu)
  • 本文GitHub地址:http://ift.tt/298u3hE

该配置版本最后更新的日期是今年七月,该更新版本允许本地使用 3 个不同的 GPU 加速后端,并添加对 MKL BLAS 库的支持。

目前有很多帮助我们在 Linux 或 Mac OS 上构建深度学习(DL)环境的指导文章,但很少有文章完整地叙述如何高效地在 Windows 10 上配置深度学习开发环境。此外,很多开发者安装 Windows 和 Ubuntu 双系统或在 Windows 上安装虚拟机以配置深度学习环境,但对于入门者来说,我们更希望还是直接使用 Windows 直接配置深度学习环境。因此,本文作者 Phil Ferriere 在 GitHub 上发布了该教程,他希望能从最基本的环境变量配置开始一步步搭建 Keras 深度学习开发环境。

如果读者希望在 Windows 10 上配置深度学习环境,那么本文将为大家提供很多有利的信息。

依赖项

下面是我们将在 Windows 10(Version 1607 OS Build 14393.222)上配置深度学习环境所需要的工具和软件包:

  1. Visual Studio 2015 Community Edition Update 3 w. Windows Kit 10.0.10240.0:用于其 C/C++编译器(而不是 IDE)和 SDK,选择该确定的版本是因为 CUDA 8.0.61 所支持的 Windows 编译器。
  2. Anaconda (64-bit) w. Python 3.6 (Anaconda3-4.4.0) [for Tensorflow support] or Python 2.7 (Anaconda2-4.4.0) [no Tensorflow support] with MKL:Anaconda 是一个开源的 Python 发行版本,其包含了 conda、Python、NumPy、SciPy 等 180 多个科学包及其依赖项,是一个集成开发环境。MKL 可以利用 CPU 加速许多线性代数运算。
  3. CUDA 8.0.61 (64-bit):CUDA 是一种由 NVIDIA 推出的通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题,该软件包能提供 GPU 数学库、显卡驱动和 CUDA 编译器等。
  4. cuDNN v5.1 (Jan 20, 2017) for CUDA 8.0:用于加速卷积神经网络的运算。
  5. Keras 2.0.5 with three different backends: Theano 0.9.0, Tensorflow-gpu 1.2.0, and CNTK 2.0:Keras 以 Theano、Tensorflow 或 CNTK 等框架为后端,并提供深度学习高级 API。使用不同的后端在张量数学计算等方面会有不同的效果。

硬件

  • Dell Precision T7900, 64GB RAM:Intel Xeon E5-2630 v4 @ 2.20 GHz (1 processor, 10 cores total, 20 logical processors)
  • NVIDIA GeForce Titan X, 12GB RAM:Driver version: 372.90 / Win 10 64

安装步骤

我们可能喜欢让所有的工具包和软件包在一个根目录下(如 e:\toolkits.win),所以在下文只要看到以 e:\toolkits.win 开头的路径,那么我们可能就需要小心不要覆盖或随意更改必要的软件包目录。

  • Visual Studio 2015 Community Edition Update 3 w. Windows Kit 10.0.10240.0
  • 下载地址:http://ift.tt/2yMSrSW

运行下载的软件包以安装 Visual Studio,可能我们还需要做一些额外的配置:

  • 基于我们安装 VS 2015 的地址,需要将 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin 添加到 PATH 中。
  • 定义系统环境变量(sysenv variable)INCLUDE 的值为 C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
  • 定义系统环境变量(sysenv variable)LIB 的值为 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64

Anaconda 4.4.0 (64-bit) (Python 3.6 TF support / Python 2.7 no TF support))

本教程最初使用的是 Python 2.7,而随着 TensorFlow 可作为 Keras 的后端,我们决定使用 Python 3.6 作为默认配置。因此,根据我们配置的偏好,可以设置 e:\toolkits.win\anaconda3-4.4.0 或 e:\toolkits.win\anaconda2-4.4.0 为安装 Anaconda 的文件夹名。

  • Python 3.6 版本的 Anaconda 下载地址:http://ift.tt/2ksirRz
  • Python 2.7 版本的 Anaconda 下载地址:http://ift.tt/2yMx5oP

运行安装程序完成安装:

如上,本教程选择了第二个选项,但不一定是最好的。

定义一下变量并更新 PATH:

  • 定义系统环境(sysenv variable)变量 PYTHON_HOME 的值为 e:\toolkits.win\anaconda3-4.4.0
  • 添加 %PYTHON_HOME%, %PYTHON_HOME%\Scripts 和 %PYTHON_HOME%\Library\bin 到 PATH 中

创建 dlwin36 conda 环境

在安装 Anaconda 后,打开 Windows 命令窗口并执行:

#使用以下命令行创建环境

如上所示,使用 active dlwin36 命令激活这个新的环境。如果已经有了旧的 dlwin36 环境,可以先用 conda env remove -n dlwin36 命令删除。既然打算使用 GPU,为什么还要安装 CPU 优化的线性代数库如 MKL 呢?在我们的设置中,大多数深度学习都是由 GPU 承担的,这并没错,但 CPU 也不是无所事事。基于图像的 Kaggle 竞赛一个重要部分是数据增强。如此看来,数据增强是通过转换原始训练样本(利用图像处理算子)获得额外输入样本(即更多的训练图像)的过程。基本的转换比如下采样和均值归 0 的归一化也是必需的。如果你觉得这样太冒险,可以试试额外的预处理增强(噪声消除、直方图均化等等)。当然也可以用 GPU 处理并把结果保存到文件中。然而在实践过程中,这些计算通常都是在 CPU 上平行执行的,而 GPU 正忙于学习深度神经网络的权重,况且增强数据是用完即弃的。因此,我们强烈推荐安装 MKL,而 Theanos 用 BLAS 库更好。

CUDA 8.0.61 (64-bit)

从英伟达网站下载 CUDA 8.0 (64-bit):http://ift.tt/16kKORC

选择合适的操作系统:

下载安装包:

运行安装包,安装文件到 e:\toolkits.win\cuda-8.0.61 中:

完成安装后,安装包应该创建了一个名为 CUDA_PATH 的系统环境变量(sysenv variable),并且已经添加了%CUDA_PATH%\bin 和 %CUDA_PATH%\libnvvp 到 PATH 中。检查是否真正添加了,若 CUDA 环境变量因为一些原因出错了,那么完成下面两个步骤:

  • 定义名为 CUDA_PATH 的系统环境变量的值为 e:\toolkits.win\cuda-8.0.61
  • 添加%CUDA_PATH%\bin 和 %CUDA_PATH%\libnvvp 到 PATH 中

cuDNN v5.1 (Jan 20, 2017) for CUDA 8.0

根据英伟达官网「cuDNN 为标准的运算如前向和反向卷积、池化、归一化和激活层等提供高度调优的实现」,它是为卷积神经网络和深度学习设计的一款加速方案。

cuDNN 的下载地址:http://ift.tt/29tY9lA

我们需要选择符合 CUDA 版本和 Window 10 编译器的 cuDNN 软件包,一般来说,cuDNN 5.1 可以支持 CUDA 8.0 和 Windows 10。


下载的 ZIP 文件包含三个目录(bin、include、lib),抽取这三个的文件夹到%CUDA_PATH% 中。

安装 Keras 2.0.5 和 Theano0.9.0 与 libgpuarray

运行以下命令安装 libgpuarray 0.6.2,即 Theano 0.9.0 唯一的稳定版:

输入以下命令安装 Keras 和 Theano:

安装 CNTK 2.0 后端

根据 CNTK 安装文档,我们可以使用以下 pip 命令行安装 CNTK:

该安装将导致在 conda 环境目录下额外安装 CUDA 和 cuDNN DLLs:

这个问题并不是因为浪费硬盘空间,而是安装的 cuDNN 版本和我们安装在 c:\toolkits\cuda-8.0.61 下的 cuDNN 版本不同,因为在 conda 环境目录下的 DLL 将首先加载,所以我们需要这些 DLL 移除出%PATH% 目录:

安装 TensorFlow-GPU 1.2.0 后端

运行以下命令行使用 pip 安装 TensorFlow:

使用 conda 检查安装的软件包

完成以上安装和配置后,我们应该在 dlwin36 conda 环境中看到以下软件包列表:



为了快速检查上述三个后端安装的效果,依次运行一下命令行分别检查 Theano、TensorFlow 和 CNTK 导入情况:

验证 Theano 的安装

因为 Theano 是安装 Keras 时自动安装的,为了快速地在 CPU 模式、GPU 模式和带 cuDNN 的 GPU 模式之间转换,我们需要创建以下三个系统环境变量(sysenv variable):

  • 系统环境变量 THEANO_FLAGS_CPU 的值定义为:floatX=float32,device=cpu
  • 系统环境变量 THEANO_FLAGS_GPU 的值定义为:floatX=float32,device=cuda0,dnn.enabled=False,gpuarray.preallocate=0.8
  • 系统环境变量 THEANO_FLAGS_GPU_DNN 的值定义为:floatX=float32,device=cuda0,optimizer_including=cudnn,gpuarray.preallocate=0.8,dnn.conv.algo_bwd_filter=deterministic,dnn.conv.algo_bwd_data=deterministic,dnn.include_path=e:/http://ift.tt/2ksiv3L

现在,我们能直接使用 THEANO_FLAGS_CPU、THEANO_FLAGS_GPU 或 THEANO_FLAGS_GPU_DNN 直接设置 Theano 使用 CPU、GPU 还是 GPU+cuDNN。我们可以使用以下命令行验证这些变量是否成功加入环境中:

更多具体的 Theano 验证代码与命令请查看原文。

检查系统环境变量

现在,不论 dlwin36 conda 环境什么时候激活,PATH 环境变量应该需要看起来如下面列表一样:

使用 Keras 验证 GPU+cuDNN 的安装

我们可以使用 Keras 在 MNIST 数据集上训练简单的卷积神经网络(convnet)而验证 GPU 的 cuDNN 是否正确安装,该文件名为 mnist_cnn.py,其可以在 Keras 案例中找到。该卷积神经网络的代码如下:

Keras案例地址:http://ift.tt/2yLWZZO

1. 使用带 Theano 后端的 Keras

为了有一个能进行对比的基线模型,首先我们使用 Theano 后端和 CPU 训练简单的卷积神经网络:

我们现在使用以下命令行利用带 Theano 的后端的 Keras 在 GPU 和 cuDNN 环境下训练卷积神经网络:

我们看到每一个 Epoch 的训练时间只需要 16 秒,相对于使用 CPU 要 250 秒左右取得了很大的提高(在同一个批量大小的情况下)。

2. 使用 TensorFlow 后端的 Keras

为了激活和测试 TensorFlow 后端,我们需要使用以下命令行:

我们看到使用 TensorFlow 后端要比 Theano 后端在该任务上快 3 倍左右,它们都是用了 GPU 和 cuDNN 加速。这可能是因为在该测试中它们有相同的通道等级(channel ordering),但实际上两个平台在这一点是不一样的。因此,程序可能强制 Theano 后端重新排序数据而造成性能上的差异。但在该案例下,TensorFlow 在 GPU 上的负载一直没有超过 70%。



3. 使用 CNTK 后端的 Keras

为了激活和测试 CNTK 后算,我们需要使用以下命令行:

在具体的试验中,CNTK 同样也十分快速,并且 GPU 负载达到了 80%。

原文链接:http://ift.tt/298u3hE

本文为机器之心编译,转载请联系本公众号获得授权。




]]> 原文: http://ift.tt/2ktpl9a
RSS Feed

机器知心

IFTTT

不到10美元、比M&M豆还小:它让谷歌首款AI相机Clips梦想成真

撰文 | 邱陆陆

编辑 | 微胖


10 月 4 日,谷歌在「谷歌制造」(Made by Google)活动上宣布了 8 款全新硬件产品。其中非常引人注目的是 Google Clips 相机,这款不过巴掌大小的产品面向家庭场景,能够自动寻找有价值的瞬间并进行捕捉。


值得一提的是,所有这些机器学习算法都在机器本地运行,最大程度保护了用户的隐私。这可以说是人工智能终端化的一个非常典型的样例,而支持这一切的「智能来源」,是英特尔旗下的 Movidius Myriad 2 VPU 芯片。


比一颗 M&M 豆还小的 Myriad 2 芯片(图为2014年发布的 Myriad 2)


「Google Clips 作为一款智能相机,正代表了 Movidius 团队在开发 Myriad VPU 技术时所梦想的终端设备机上智能。低能耗的智能芯片正在让越来越多以 AI 技术为基础的智能设备走进现实」,原 Movidius CEO、现任英特尔公司副总裁 Remi El-Ouazzane 近日在接受媒体采访时表示。


Google Clips 中涉及的机器学习算法包括:第一,寻找有价值的瞬间、拍摄一个小的包含整个瞬间的片段,并从中选取出「稳定、清晰」的照片,第二,识别照片中的人物、动物、场景。最后,根据用户保留特定照片的动作,学习有哪些元素是重要的,对以后的拍摄进行优化。


Google Clips 产品负责人 Juston Payne 在活动上介绍 Google Clips


由于机器学习算法,尤其是神经网络,对计算能力的极大需求,当前的大部分机器学习应用都需要终端设备能够连接互联网,在本地获取输入后,将数据传输到云端,在云端进行计算和处理并返回到本地输出。这个过程中,传输时间与网络环境密切相关,联网也会大幅缩短的电池寿命,最重要的是,用户的数据隐私很难得到保障。因此,智能算力终端化一直是一个热门的话题。


背靠 Google Cloud、拥有强有力云端计算能力的谷歌也从未放松对终端计算的追求。「(云端与终端)综合的方式是非常有意义的。我们对于两种方式都会审慎地进行投入」,谷歌 CEO Sundar Pichai 在接受媒体采访时表示,「(最终选择哪一种)取决于情境、亟待解决的问题以及以不同的方式部署是否有意义。」


但是,如何能把在几年前还是一台性能超卓的处理器才能完成的运算任务放进小小的终端处理芯片中,同时还要保证能耗不超过设备电池的承受能力,以及成本低廉、让设备的价格可以为大众接受,一直是一个硬件上的难题。


去年 9 月被英特尔收购的 Movidius 就一直致力于解决这个难题。这家公司从 2007 年就开始致力于设计低能耗计算机视觉与深度学习处理芯片。


2010 年,公司与东芝一起开发了专用于处理图像和视频的 Myriad 1,这一动作引起了摩托罗拉先进科技与计划团队(ATAP)的注意,二者在 2012 年正式开始了「Project Pink」,研制用于高性能图像计算的 28 纳米架构,项目在摩托罗拉被谷歌收购后变成了谷歌的「Project Tango」。


2014 年,Movidius 正式发布第二代 Myriad 芯片 Myriad 2 VPU。据介绍,Myriad 2 芯片使用了一种和 Myriad 1 完全不同的架构。新的架构使得 2 代获得比 1 代高 20 倍的运算效能——每秒 3 万亿次浮点运算,功耗不到 0.5 瓦。28 纳米芯片能够同时支持 6 个 60 帧 Full HD 视频内容输入。Remi El-Ouazzane 在接受电话采访时曾表示,这种新型芯片在移动设备上占用的空间仅相当于当前芯片的五分之一,而成本也只是当前芯片的五分之一。事实上,El-Ouazzane 说,这块芯片为移动设备带来的视频运算能力提升,已经达到了单反级别。


当时,这些芯片应当且已经具有足够清晰的消费级产品用途,并以星火燎原之势抢占了不少原属于移动端 GPU 的地盘。


比如,从 15 年起,Movidius 为大疆提供计算机视觉计算解决方案,其产品 Phantom4、Mavic Pro、Phantom4 Pro、Inspire2 等都采用了 Myriad 2 芯片。今年推出的具有手势识别遥控功能的迷你无人机 DJI Spark,也是由 Myriad 2 芯片支持传统几何视觉运算与深度学习运算,从而获得了空间感知与情景感知能力。16 年年底,国内安防巨头海康威视与 Movidius 达成合作协议,海康威视将在新的智能相机中使用 Movidius 的 Myriad 2 视觉处理芯片。


2016 年 1 月,谷歌宣布从 Movidius 公司那里正式获得 Myriad 2 VPU 芯片的授权。Myriad 2 家族包括 MA2150 和 MA2450 芯片以及相关 SDK。这种微型芯片及其 12 个内核,可以实现低功耗、先进的计算机视觉处理。虽然当时谷歌并未透露会在哪种移动设备使用 Myriad 2 芯片,但高层曾暗示 Myriad 2 的低功耗是谷歌决定授权使用这种芯片的一个重要原因。


通过与 Movidius 公司的合作,谷歌「将可以让人工智能技术的应用范围不再局限于数据中心,而是扩大至现实世界,让人们从个人设备上获得机器智能的种种益处。」谷歌负责机器智能的产品总监 Blaise Aguera y Arcas 曾告诉媒体。近日,Arcas 在谈及 Google Clips 时还表示,Movidius 的 VPU 技术让他们在开发 Google Clips 时有能力进行更多的创新。


去年 1 月,Myriad 2 的价格已经低至 10 美元。今年 8 月底,Movidius 发布了 Movidius Myriad X VPU,但 Myriad X 不会取代 Myriad 2,新产品将负责更加高端市场。



据报道,Myriad X 芯片引入了被称之为神经计算引擎(Neural Compute Engine)的新结构,将会在同样功耗条件下提供 Myriad 2 十倍的深度神经网络性能。新芯片旨在使无人机,摄像机,机器人,VR 和 AR 等边缘设备的推理更加迅速,将视觉处理与 AI 功能结合起来,扩展更多设备的应用场景。


]]> 原文: http://ift.tt/2yN9nZV
RSS Feed

机器知心

IFTTT

NTSB发布53页最终报告:特斯拉自动驾驶事故「会发生在任何人身上」

编译 | 张震

作者 | PETE BIGELOW

来源 | CAR AND DRIVER


据美国国家运输安全委员会(NTSB)重要人员称,在更好地理解自动驾驶应如何与人类司机互动之前,汽车厂商可能想要放缓推出这些功能的步伐。在使用这一新技术时,司机仍需担负路况的监管责任。


去年,一辆具有 Autopilot 自动驾驶功能的 Model S 在行使过程中发生致命车祸。上述示意正是来自于美国国家运输安全委员会对这一事故调查的最终报告(该机构曾在 9 月 12 日发布过一份报告的摘要,这次是一份全面的分析)。这份长达 53 页的报告,连同上月公布的数据表明,卡车司机没能及时避让,而特斯拉司机过于依赖 Autopilot 自动驾驶功能,最终酿成 2016 年 5 月 7 日佛罗里达公路上的这一起交通事故,Model S 司机 Joshua Brown 在事故中死亡。


这一最终报告附有委员会成员 Christopher A. Hart 的书面评论。他将现状与上个年代人类将自动化引入航空业的经验进行了比较。几十年过去了,他点评道,汽车行业并没有从航空事故中吸取教训。


「航空业从飞行自动化的经验中吸取了教训」,Hart 写道,「『我们可以做到』并不必然地会导致人类与自动化更好地合作。」「因此,航空自动化朝着以人为中心的自动化演进,旨在提高人类-自动化系统的整体表现。这次特斯拉自动驾驶事故正好证明在没有充分考虑人的因素引入自动化时,将会产生怎样的后果。」


Hart 的言论从一开始就击中了两难境地的核心,从本质上将新兴自动驾驶技术分成两派。一些公司,比如福特和 Waymo 相信人类司机与自动驾驶系统的相互协作会带来许多的问题,他们已经放弃了对高级驾驶员辅助功能(ADAS)的研发,支持舍弃方向盘和刹车等传统汽车控制系统的设计。


另一些公司,比如通用汽车、奥迪、特斯拉已经制定计划,继续让人类参与驾驶过程。不过,如何最好地协调人类与自动驾驶功能,其复杂程度也众所周知。尽管每家公司已经设计出自动驾驶功能激活后,确保人类参与驾驶过程的方式,但是,NTSB 的报告已清楚表明,自动驾驶系统要想上路,任务艰巨。随着时间的推移,这些功能会更加的完善,人类开车技术更加糟糕这一前景让人心生不安。


「人类很不善于监控自动化,」Deborah Bruce 表示,他是 NTSB 调查员,负责对特斯拉 Autopilot 进行调查。他向汽车杂志《Car and Driver》谈到,「执行被设计要求的任务时,就不会唤起注意。从长达几十年的对核电站监测的研究和历史来看,人类并不擅长自动化监测。因为人们不擅长需要注意力的任务。」


NTSB 调查期间摄制的图片,我们可以看到拖车下面在这次事故中的损伤情况


考虑到人类这方面的局限性,NTSB 建议制造商们想办法监督司机是否集中注意力,这个办法要比司机仅需触碰的方向盘传感器要好。不过,Hart 形容那些措施还「不够。」因为驾驶行为天生的是一种视觉任务,更青睐的办法包括朝向驾驶员面部的摄像头,可以追踪驾驶员眼球活动。通用汽车的新款 Super Cruise 系统中已经使用了这一办法。


NTSB 进一步建议,汽车制造商应加装安全系统确保自动驾驶系统的使用符合设计条件。比如,Autopilot 本应该用于隔离的高速公路,但驾驶员却在弗罗里达 Williston 的 27A 公路使用了这一功能。这一道路本来就允许夸道行驶,结果一辆载有蓝莓的卡车停在了 Brown 的道路上。发生事故前,Brown 已经使用 Autopilot 自动驾驶功能行驶了 6.7 英里。


就像国家公路交通安全管理局之前对这一事件的调查,NTSB 对特斯拉事故的调查也是一个标志性的事件,因为这是 Level 2 自动驾驶系统发生的第一起世人皆知的交通事故。Level 2 自动驾驶系统可以对方向盘、油门、刹车进行控制,而人类只需监督大的驾驶环境,对车辆运行承担最终责任。


这份最终报告出台之际,正是国会考虑立法放宽对汽车制造商部署自动驾驶汽车的监管之时。不久之前,联邦自动驾驶车辆政策刚删除了一个优先要求:制造商自觉提交一份关于自己技术的安全评估。NTSB 调查人员称,汽车制造商配合了这次调查,也协助他们从汽车系统中提取数据供委员会使用。他们进一步谈到尽管这是一起涉及特斯拉的事故,但问题具有系统性,涉及整个行业。


「你当然可以说这是一起有关特斯拉的事故,但调查后,我们发现这不仅仅是场特斯拉车祸,」Bruce 说。「可能特斯拉是第一个发生事故的,但是,考虑到人类正在驾驶这些车辆,这一事故将来可能会发生在任何人身上。」



而且,Autopilot 这个名字也引发大众用户对这一系统功能和局限性的错误认识。NTSB 和一些安全倡议者也越来越担心,汽车制造商没有正确教育用户理解这些系统的细节,具体品牌术语让人晕头转向。


「让这一问题变得复杂的原因就在于『Autopilot』这个名字」,Hart 在他的评论中写道。「飞行员知道即便自动驾驶正控制飞机飞行,飞行员仍扮演着关键角色。而另一方面,单从『Autopilot』 这个名称,人们可能会据此推断根本无需关注驾驶任务,因为自动驾驶系统正在接管一切。」


Hart 的言论得到了委员会主席 Robert Sumwalt 的支持。NTSB 是一个独立于美国交通部的联邦机构,从事事故调查,并就如何提升安全性提供自己的意见,但不具有管理权限。


特斯拉尚未对 NTSB 的最终报告进行评论。上个月,在委员会公布其发现和意见后,一位发言人表示,「NTSB 对去年的悲剧进行的分析,我们表示感谢,我们将会对他们的建议进行评估,并不断完善我们的技术。我们也会让现有的以及潜在的客户知悉,Autopilot 并不是完全自动驾驶技术,驾驶人员需要时刻保持谨慎。」


报告地址:http://ift.tt/2wurbYL


]]> 原文: http://ift.tt/2xk8f3H
RSS Feed

机器知心

IFTTT

2017年10月5日星期四

超级变变变:喵星人汪星人还有街景神奇变身|Paper+Code

夏乙 千平 发自猴姆量子位 出品 | 公众号 QbitAI

只会卖萌的猫主子分分钟变身百兽之王?

白天能不能懂夜的黑?

你的汪星人如果是其他品种会是什么样?

不用想象,有个AI已经(完全不用人插手)"脑补"一切。先展示结果:

给一张小猫咪的图像(左边),AI就能自动让它变身狮子王(右边)。

给一张白天的图像(左边),AI就能自动脑补出夜晚的样子(右边),还把灯效加上了~

给一张冬天的图像(左边),AI就能脑补夏天会是什么景象(右边),还把叶子加上了~

UNIT

上面这些神奇的变身,都属于"图像到图像翻译"的问题。

这些结果都来自Nvidia研究团队的一篇NIPS 2017论文:UNsupervised Image-to-image Translation networks。

Ming-Yu Liu(刘洺堉)等研究员提出了一种基于耦合生成对抗网络(Coupled GAN)和变分自动编码器(VAE)的无监督图像到图像翻译框架,他们还根据首字母缩写(强行)给"无监督图像到图像翻译"起了个名字:UNIT。

论文中提到,从概率模型的角度来分析图像到图像的翻译问题,会发现其中的关键挑战是学习不同领域图像的联合分布。

共享潜在空间假设

为了推断联合分布,Ming-Yu Liu等使用了"共享潜在空间假设",假设不同领域的一对对应图像(x1、x2)可以映射到共享潜在空间(z),UNIT框架就建立在这个假设的基础之上。

上图中的E1和E2是两个编码函数,可以将图像映射到潜在编码,而G1和G2是两个生成函数,从潜在编码映射到图像。

UNIT框架结构

在UNIT框架中,研究人员用VAE-GAN对每张图像建模,其中抗性训练目标与权重共享约束相互作用,实施共享空间,以在两个域中生成相对应的图像,而VAE将翻译的图像与相应域中的输入图像关联起来。他们用卷积神经网络(CNN)重建了E1、E2和G1、G2,并通过权重共享限制来实现了共享潜在空间假设。

搞定这个框架之后,研究人员们把它用到了各类无监督图像到图像翻译任务上,比如说……

能完成街景在晴天雨天、白天黑夜、夏景雪景之间的转换,支持640×480的图片;也能在合成图像和真实照片之间进行转换:

还可以在各种狗狗品种之间转换,只要养一只狗,发朋友圈的时候就可以在哈士奇、德牧、柯基、萨摩耶、英国牧羊犬可以变来变去:

除了狗,还有猫,但不是你家的各类长毛短毛主子,而是在家猫、老虎、狮子、美洲狮、美洲虎、猎豹之间互相转换:

当然,最常见的人脸变换这个模型也能搞定,可以生成出金发、微笑、山羊胡、戴眼镜等等特征:

要想说自己的模型好,当然还得和别人的作品比较一下。

几位研究员用街景门牌号数据集SVHN、MNIST和USPS数据集之间的变换测试了模型性能,和SA、DANN、DTN、CoGAN等模型进行了比较。

UNIT框架在SVHN→MNIST任务上的准确率达到0.9053%,远高于同类模型。

Paper+Code

如果你对这篇论文感兴趣,可以直接阅读原文。Paper地址:http://ift.tt/2n16TBg

另外,Nvidia研究团队还放出了这项研究的代码。这是一个无监督图到图翻译的Coupled GAN算法PyTorch实现。

GitHub地址:http://ift.tt/2vKgxfV

更多这个项目的图像变换结果,可以在以下地址查看。

http://ift.tt/2ggXtR3

我们还挑了几段视频,直接贴在这里。比方冬天变夏天:

还有小猫和兽王互相变身:

研究团队

Ming-Yu Liu(刘洺堉)

刘洺堉是Nvidia Research的研究员,专注于计算机视觉和机器学习方向。此前先后供职于英特尔和三菱。刘洺堉2003年在台湾交通大学获得学士学位,2012年在马里兰大学帕克分校获得博士学位。

刘洺堉个人主页的信息显示,今年他已经发布了9篇论文,除了上面这篇中NIPS(Spotlight)之外,他还有一篇论文中了IJCAI,有两篇中了CVPR(包括一篇Oral):

  • Tactics of Adversarial Attack on Deep Reinforcement Learning Agents

Yen-Chen Lin, Zhang-Wei Hong, Yuan-Hong Liao, Meng-Li Shih, Ming-Yu Liu, Min Sun

International Joint Conference on Artificial Intelligence (IJCAI), 2017 Melbourne, Australia

Paper:http://ift.tt/2ggXuo5

Project:http://ift.tt/2y4TP6o

  • Deep 360 Pilot: Learning a Deep Agent for Piloting through 360 Sports Videos

Hou-Ning Hu, Yen-Chen Lin, Ming-Yu Liu, Hsien-Tzu Cheng, Stanley Chang, Min Sun

Conference on Computer Vision and Pattern Recognition (CVPR) Oral, 2017, Honolulu, Hawaii

Paper:http://ift.tt/2ggimvw

  • CASENet: Deep Category-Aware Semantic Edge Detection

Zhiding Yu, Chen Feng, Ming-Yu Liu, Srikumar Ramalingam

Conference on Computer Vision and Pattern Recognition (CVPR), 2017, Honolulu, Hawaii

Paper:http://ift.tt/2y3DzT8

Thomas Breuel

Thomas Breuel是Nvidia的杰出研究科学家(Distinguished Research Scientist)。去年10月加入Nvidia之前,他在Google担任研究科学家的工作。他还长期在德国凯泽斯劳腾大学任教,以及供职于施乐、IBM等公司。

Thomas Breuel本硕毕业于哈佛大学,1992年在麻省理工获得博士学位。来自Google Scholar的信息显示,Thomas Breuel今年除了这篇论文,还有一份专利申请获批。

Jan Kautz

Jan Kautz是Nvidia视觉计算和机器学习研究的高级总监,领导整个视觉计算研发小组。此外他还一直担任伦敦大学学院的教职。

他本科毕业于德国埃尔朗根-纽伦堡大学,随后在滑铁卢大学获得硕士学位,2003年Jan Kautz在德国马克思·普朗克计算机科学研究所获得博士学位。

今年以来,Jan Kautz还发布了十几篇论文,其中包括:

  • Learning Affinity via Spatial Propagation Networks

S. Liu, S. De Mello, J. Gu, M.-S. Yang, J. Kautz

Neural Information Processing Systems (NIPS)

Paper:http://ift.tt/2gfQ58C

  • Intrinsic3D: High-Quality 3D Reconstruction by Joint Appearance and Geometry Optimization with Spatially-Varying Lighting

R. Maier, K. Kim, D. Cremers, J. Kautz, M. Niessner

IEEE International Conference on Computer Vision (ICCV)

Paper:http://ift.tt/2y3GkUK

  • A Lightweight Approach for On-The-Fly Reflectance Estimation

K. Kim, J. Gu, S. Tyree, P. Molchanov, M. Niessner, J. Kautz

IEEE International Conference on Computer Vision (ICCV,Oral)

Paper:http://ift.tt/2ggXvZb

  • Mixed-primary Factorization for Dual-frame Computational Displays

F.-C. Huang, D. Pajak, J. Kim, J. Kautz, D. Luebke

ACM Transactions on Graphics (Proceedings SIGGRAPH 2017)

Paper:http://ift.tt/2wi6FKr

  • Dynamic Facial Analysis: From Bayesian Filtering to Recurrent Neural Network

J. Gu, S. De Mello, X. Yang, J. Kautz

IEEE Conference on Computer Vision and Pattern Recognition (CVPR)

Paper:http://ift.tt/2vedsVW

  • GA3C: GPU-based A3C for Deep Reinforcement Learning

M. Babaeizadeh, I. Frosio, S. Tyree, J. Clemons, J. Kautz

International Conference on Learning Representations(ICLR)

Paper:http://ift.tt/2fNAVI5

Code:http://ift.tt/2gIRhD3

  • Pruning Convolutional Neural Networks for Resource Efficient Transfer Learning

P. Molchanov, S. Tyree, T. Aila, T. Karras, J. Kautz

International Conference on Learning Representations(ICLR)

http://ift.tt/2g85QvW

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI



via 量子位 - 知乎专栏 http://ift.tt/2y3xvu4
RSS Feed

RSS5

IFTTT

M2 模型杀回 Coding 和 Agent 领域,MiniMax 想要「普惠智能」-InfoQ每周精要No.900

「每周精要」 NO. 900 2025/11/01 头条 HEADLINE M2 模型杀回 Coding 和 Agent 领域,MiniMax 想要「普惠智能」 精选 SELECTED a16z 将 3000 万开发者标价 3 万亿 网友:几个初创公司 + 大模型就...