去噪、去水印、超分辨率,这款不用学习的神经网络无所不能

2019 年 1 月 29 日 机器之心

机器之心报道

机器之心编辑部


不同的神经网络可以实现给图像去噪、去水印、消除马赛克等等功能,但我们能否让一个模型完成上述所有事?事实证明 AI 确实有这样的能力。来自 Skoltech、Yandex 和牛津大学的学者们提出了一种可以满足所有大胆想法的神经网络。



事情是这样的:研究人员们让一个深度卷积网络去学习复制被破坏的图像(例如加入噪点的图像),随后竟发现这个网络可以自行先学会如何重建图像。该研究的论文《Deep Image Prior》已被收录在 CVPR 2018 大会,而 GitHub 则已有 3800 个 star。


Deep Image Prior 的重要特点是,网络由始至终仅使用了输入的,被破坏过的图像做为训练,没有经历过大多数神经网络所需要的学习过程即可完成任务。它没有「看过」任何其它图像,也没有看过未受破坏的正常图像,但最终恢复的效果依然很好。这说明自然图像的局部规律和自相似性确实很强。


在 GitHub 项目中,作者如下展示了 5 种常见图像重构的效果。他们表示单个卷积网络可以完成缺失图像的修复、痕迹的移除、图像去噪、超分辨率和去除水印等,可以说该模型在理解图像先验信息下显得无所不能。当然作者表示这个项目的超参数和架构都是可以调整的,它们远没有达到最优,所以感兴趣的读者快试试吧。



项目地址:https://github.com/DmitryUlyanov/deep-image-prior


其实上图中的每一项任务都有很多研究,它们假设模型能从大型真实图像数据集中学习到图像的先验信息,即像素怎样才能组合成一张「正常」的图像,这样学习到通用图像信息的模型就能用来修补图像或生成高分辨率图像了。但是这种观点正确吗?该项目的研究论文表示否定,它们只在损坏的「非正常」图像上训练同样能学习到图像的「先验」,注意这种「训练」仅表示模型在单张损坏图像上反复迭代。


网友使用 AKB-48 照片进行超分辨率的尝试。


与传统观点相反,该项目的研究论文表示未经任何「学习过程」的卷积图像生成器架构可以捕捉到大量图像数据,尤其是解决不同图像修复问题的图像数据。在卷积网络对损坏图像反复迭代时,它能自动利用图像的全局统计信息重构丢失的部分。


研究者使用未经训练的卷积网络来解决几种此类问题。研究者未在大量示例图像数据上训练卷积网络,而是直接将生成器网络应用于单个退化图像,即有损坏的自然图像。在此方法中,网络权重作为修复图像的参数。权重经过随机初始化和拟合,以在提供特定退化图像和任务相关模型时能够最大化似然度。


本研究展示了,这个非常简单的方法在标准图像处理问题(如去噪、图像修复和超分辨率)中极具竞争力。除了标准图像修复任务外,该技术还可用于理解深度神经网络激活函数中的信息。


论文:Deep Image Prior



论文地址:https://sites.skoltech.ru/app/data/uploads/sites/25/2018/04/deep_image_prior.pdf


摘要:深度卷积网络已经成为图像生成和修复的常用工具。通常,其优秀性能要归功于从大量示例图像中学习逼真图像先验的能力。而这篇论文反其道而行之,展示了一种生成器网络架构,它可以在学习之前先捕捉大量低级图像数据。本论文展示了随机初始化神经网络可在标准逆问题(如去噪、超分辨率和图像修复)中作为手工先验知识(handcrafted prior)使用,且性能优越。此外,同样的先验知识还可用于反转深度神经表征以作出判断,并基于 flash-no flash 输入对来修复图像。


该方法应用广泛,且强调了标准生成器网络架构捕捉的归纳偏置(inductive bias)。它还弥补了图像修复两大流行方法之间的距离:使用深度卷积网络的基于学习的方法、基于手工图像先验知识(如自相似性)的无学习方法。


项目使用


该项目为不同的任务提供了对应的实现文档,例如 inpainting.ipynb 展示了如何做图像修复与去水印、super-resolution.ipynb 展示了如何做图像超分辨率。如下展示了项目的环境配置与安装,注意其主要使用了 PyTorch 0.4,所以已经更新到 1.0 的读者可以借助 conda 或其它工具配置一个新环境。


安装


在执行代码之前,你需要安装下列库:


  • python = 3.6

  • pytorch = 0.4

  • numpy

  • scipy

  • matplotlib

  • scikit-image

  • jupyter


以上库均可通过 conda (anaconda) 安装,如:


conda install jupyter


Docker 镜像


你也可以使用具备全部依赖项的 Docker 镜像完成环境的配置,并连接到 Jupyter Notebook。你需要确保安装了 docker 和 nvidia-docker,然后运行以下命令:


nvidia-docker build -t deep-image-prior .


然后,启动容器,如下所示:


nvidia-docker run --rm -it --ipc=host -p 8888:8888 deep-image-prior


你会得到一个 URL,使用它可连接至 Jupyter notebook。



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

✄------------------------------------------------

加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com

投稿或寻求报道:content@jiqizhixin.com

广告 & 商务合作:bd@jiqizhixin.com

登录查看更多
9

相关内容

【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【CVPR2020】MSG-GAN:用于稳定图像合成的多尺度梯度GAN
专知会员服务
28+阅读 · 2020年4月6日
【反馈循环自编码器】FEEDBACK RECURRENT AUTOENCODER
专知会员服务
22+阅读 · 2020年1月28日
模型压缩究竟在做什么?我们真的需要模型压缩么?
专知会员服务
27+阅读 · 2020年1月16日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
【学界】毫秒级图像去噪!英伟达、MIT新AI系统完美去水印
GAN生成式对抗网络
8+阅读 · 2018年7月17日
Deep Image Prior:深度卷积网络先天就理解自然图像
极市平台
10+阅读 · 2017年12月5日
深度图像先验:无需学习即可生成新图像
论智
45+阅读 · 2017年12月4日
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Neural Architecture Optimization
Arxiv
8+阅读 · 2018年9月5日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
Arxiv
5+阅读 · 2018年4月17日
Arxiv
10+阅读 · 2017年11月22日
VIP会员
相关论文
Bivariate Beta LSTM
Arxiv
5+阅读 · 2019年10月7日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Neural Architecture Optimization
Arxiv
8+阅读 · 2018年9月5日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
Arxiv
5+阅读 · 2018年4月17日
Arxiv
10+阅读 · 2017年11月22日
Top
微信扫码咨询专知VIP会员