【新智元导读】神经网络基于样本图像的训练为模糊图像补充细节,从而把模糊图像变高清。它不能把你的照片重建成一模一样的高清版。这只有好莱坞大片才有可能做到——但使用深度学习和神经增强(Neural Enhance)实现的“创造性 AI”作品同样很酷!
想得到如《犯罪现场调查》中CSI实验室那种提高照片清晰度的技术吗?感谢深度学习和神经增强(#NeuralEnhance)技术,现在已经能够训练一个神经网络把照片放大 2 倍,甚至 4 倍。通过增加神经元数目或使用与你的低分辨率图像相似的数据集进行训练,甚至能得到更好的结果。
神经网络基于样本图像的训练为模糊图像补充细节。它不能把你的照片重建成一模一样的高清版。这只有好莱坞大片才有可能做到——但使用深度学习生成的“创造性 AI”作品同样很酷!以下是教程。
示例 & 用法
例1:老旧的车站
主要的脚本是 enhance.py ,按照以下方式设置后,你可以用 Python3.4+ 来运行。参数 --device 可以让你指定要使用的 GPU 或 CPU。如在上面的例子中,性能结果如下:
默认情况下使用 --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 图像的更多信息。
如果你想在 NVIDIA GPU 上运行,你可以改变 alias ,使用兼容 CUDA 和预安装的 CUDNN 的 alexjc/neural-enhance:gpu ,然后在 nvidia-docker 内运行,它应该就使用你自己的物理硬件了。
2. 手动安装 [开发者]
这个项目需要 Python 3.4+,你还需要在全系统安装 numpy 和 scipy (数值计算库)以及 python3-dev 。更详细的说明可以参考以下链接:
然后获取存储库,你可以从终端运行以下命令来设置本地环境:
然后,你应该在虚拟环境中安装 pillow,theano 和 lasagne。你还需要下载这个预训练神经网络(VGG19,80Mb,下载地址:https://github.com/alexjc/neural-doodle/releases/download/v0.0/vgg19_conv.pkl.bz2),并把它放在要运行的脚本的文件夹中。如果要卸载,只需删除 #/pyvenv/ 文件夹即可。
背景 & 研究
例3:脸部的超高清实现,只用高清的名人的脸部照片来训练。缩小“照片”的范围可显著提升质量。
本项目中的代码结合使用了以下论文的技术,以及还有一些小的改进尚未记录进来。
特别感谢:Eder Santana,Andrew Brock & Casper Kaae Sønderby
疑难解答
例4:街景
有一个 Python 扩展叫 Cython,它缺失了或没有得到正确安装。试试直接从系统包管理器而非 PIP 中找到它。
FIX: sudo apt-get install cython3
这种情况发生在没有 GPU,而且找不到 CPU 库(如 libblas )的情况下。神经网络表达式无法由 Theano 评估,于是引起了异常。
FIX: sudo apt-get install libblas-dev libopenblas-dev
你需要安装 requirements.txt 中指定版本的 Lasagne 和 Theano,而不是 PIP 的版本。这些替代方案比较旧,而且缺少所需的功能。
FIX: python3 -m pip install -r requirements.txt
这是因为你的终端配置出错,与 Python 处理区域设置的方式不兼容。你需要在 .bashrc 或其他启动脚本中更改这个设置,或者,下面的命令能为这个 shell 修复一次。
FIX: export LC_ALL=en_US.UTF-8
编译来源:https://github.com/alexjc/neural-enhance