首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【干货】神经增强:用 Python 实现深度学习超分辨率处理

【干货】神经增强:用 Python 实现深度学习超分辨率处理

作者头像
新智元
发布2018-03-26 15:04:46
3.8K0
发布2018-03-26 15:04:46
举报
文章被收录于专栏:新智元新智元新智元

【新智元导读】神经网络基于样本图像的训练为模糊图像补充细节,从而把模糊图像变高清。它不能把你的照片重建成一模一样的高清版。这只有好莱坞大片才有可能做到——但使用深度学习和神经增强(Neural Enhance)实现的“创造性 AI”作品同样很酷!

想得到如《犯罪现场调查》中CSI实验室那种提高照片清晰度的技术吗?感谢深度学习和神经增强(#NeuralEnhance)技术,现在已经能够训练一个神经网络把照片放大 2 倍,甚至 4 倍。通过增加神经元数目或使用与你的低分辨率图像相似的数据集进行训练,甚至能得到更好的结果。

神经网络基于样本图像的训练为模糊图像补充细节。它不能把你的照片重建成一模一样的高清版。这只有好莱坞大片才有可能做到——但使用深度学习生成的“创造性 AI”作品同样很酷!以下是教程。

示例 & 用法

例1:老旧的车站

主要的脚本是 enhance.py ,按照以下方式设置后,你可以用 Python3.4+ 来运行。参数 --device 可以让你指定要使用的 GPU 或 CPU。如在上面的例子中,性能结果如下:

  • GPU 渲染 HQ —— 假定你已经设置好 CUDA,并且有足够的在板存储器(on-board RAM)适配图像和神经网络,生成 1080p 输出应该在5秒内完成,或者同时处理多张图像时,每张图像2秒。
  • CPU 渲染 HQ —— 生成 1080p 输出大约需要20~60秒,但在大多数机器上,只要有足够的系统RAM,你可以同时运行4-8进程。运行时间取决于神经网络的规模。

默认情况下使用 --device=cpu ,如果你有已经设计好 CUDA 的 NVIDIA 卡,可以试试 --device=gpu0 。在CPU上,你还可以将环境变量设置为 OMP_NUM_THREADS=4 ,这在多次并行运行脚本时很有用。

1. 增强图像

2. 训练超分辨率

GitHub上提供了预训练模型。自己训练的过程要求精细,可能需要根据你的图像数据集选择参数。

安装 & 设置

例2:银行大厅

1. 使用 Docker Image [推荐]

启动并运行的最简单方式是安装 Docker 。然后,使用 docker 命令行工具应该能够下载并运行预构建的图像。可以在 Docker Hub (https://hub.docker.com/r/alexjc/neural-enhance/) 页面了解有关 alexjc/neural-enhance 图像的更多信息。

  • 单一图像 ——建议你设置一个叫 enhance 的 alias 来自动显示包含指定的图像的文件夹,这样脚本能够读取并把结果存储到可访问的地方。你可以在 OSX 或 Linux 的终端控制台中这样做:
  • 多图像 —— 要从文件夹或通配符规范的行中更快地实现多图像增强,请确保对 alias 命令引用如下参数:

如果你想在 NVIDIA GPU 上运行,你可以改变 alias ,使用兼容 CUDA 和预安装的 CUDNN 的 alexjc/neural-enhance:gpu ,然后在 nvidia-docker 内运行,它应该就使用你自己的物理硬件了。

2. 手动安装 [开发者]

这个项目需要 Python 3.4+,你还需要在全系统安装 numpy 和 scipy (数值计算库)以及 python3-dev 。更详细的说明可以参考以下链接:

  1. Linux Installation of Lasagne (intermediate)
  2. Mac OSX Installation of Lasagne (advanced)
  3. Windows Installation of Lasagne (expert)

然后获取存储库,你可以从终端运行以下命令来设置本地环境:

然后,你应该在虚拟环境中安装 pillow,theano 和 lasagne。你还需要下载这个预训练神经网络(VGG19,80Mb,下载地址:https://github.com/alexjc/neural-doodle/releases/download/v0.0/vgg19_conv.pkl.bz2),并把它放在要运行的脚本的文件夹中。如果要卸载,只需删除 #/pyvenv/ 文件夹即可。

背景 & 研究

例3:脸部的超高清实现,只用高清的名人的脸部照片来训练。缩小“照片”的范围可显著提升质量。

本项目中的代码结合使用了以下论文的技术,以及还有一些小的改进尚未记录进来。

  1. Perceptual Losses for Real-Time Style Transfer and Super-Resolution
  2. Real-Time Super-Resolution Using Efficient Sub-Pixel Convolution
  3. Deeply-Recursive Convolutional Network for Image Super-Resolution
  4. Photo-Realistic Super-Resolution Using a Generative Adversarial Network

特别感谢:Eder Santana,Andrew Brock & Casper Kaae Sønderby

疑难解答

例4:街景

  • 无法安装或找不到 pgen,无法编译形式语法。

有一个 Python 扩展叫 Cython,它缺失了或没有得到正确安装。试试直接从系统包管理器而非 PIP 中找到它。

FIX: sudo apt-get install cython3

  • NotImplementedError: AbstractConv2d theano optimization failed.

这种情况发生在没有 GPU,而且找不到 CPU 库(如 libblas )的情况下。神经网络表达式无法由 Theano 评估,于是引起了异常。

FIX: sudo apt-get install libblas-dev libopenblas-dev

  • TypeError: max_pool_2d() got an unexpected keyword argument 'mode'

你需要安装 requirements.txt 中指定版本的 Lasagne 和 Theano,而不是 PIP 的版本。这些替代方案比较旧,而且缺少所需的功能。

FIX: python3 -m pip install -r requirements.txt

  • ValueError: unknown locale: UTF-8

这是因为你的终端配置出错,与 Python 处理区域设置的方式不兼容。你需要在 .bashrc 或其他启动脚本中更改这个设置,或者,下面的命令能为这个 shell 修复一次。

FIX: export LC_ALL=en_US.UTF-8

编译来源:https://github.com/alexjc/neural-enhance

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档