用CNN做图像重建:Deep Image Prior学习笔记

Posted 等待破茧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用CNN做图像重建:Deep Image Prior学习笔记相关的知识,希望对你有一定的参考价值。

用CNN做图像重建:Deep Image Prior学习笔记

转载自 https://zhuanlan.zhihu.com/p/82150938

根据对图像的认知水平,计算机视觉任务可以分为三个层次:

  • Low level: image reconstruction (denoising, deblurring, impainting...)
  • Middle level: image classification, segmentation ...
  • High level: scene understanding (e.g., 看图说话)
Low level并不意味着低级、简单,而是非常基础的任务,图像本身的质量将直接影响后续的分割、分类、场景理解等任务。

2012年以来,CNN在图像分类、分割、语义理解等中高层任务中取得了比传统方法更好的效果。一个自然的问题是CNN能不能用来解决low level 计算机视觉问题?

source: https://dmitryulyanov.github.io/deep_image_prior

以图像去噪为例,一个直接的想法是收集很多干净-噪声图像对,然后输入噪声图像,通过CNN来学习对应的干净图像。但是这种方法的不足在于我们只能收集合成(仿真)的干净-噪声图像对,真实世界中的噪声图像很难找到对应的干净图像。

能否不用干净的图像,直接用CNN对噪声图像去噪呢?

经典回顾->推陈出新

https://dmitryulyanov.github.io/deep_image_prior​

dmitryulyanov.github.io/deep_image_prior

上面链接是本文方法的项目主页。先回看传统的model-based方法是怎么做图像去噪的:

噪声图像记为 ,一般通过最小化如下能量泛函(energy function)来去噪

其中 是数据项(保真项), 是正则项, 是想要找的干净图像(去噪后图像)。通常 是根据对图像的理解显示定义的(explicit regularizer),比如著名的TV去噪模型。

简言之,传统model-based 去噪模型有两项:数据项和正则项,那么,我们能否设计一种新的正则项,而且该正则项还与CNN有关系?

接下来就是本文非常重要的思想:CNN可以看作一种implicit prior!

为什么?因为给定CNN的网络架构后(记为 ​, ​ 是网络权重weights, ​是网络的输入inputs),也就定义了一个函数空间(每给定一组权重参数,就指定了这个函数空间的一个函数)。所以如果假设我们要找的图像就在这个空间内的话,CNN本身就是一个regularizer!

遗憾的是目前我们对这个函数空间知之甚少,也没有数学工具可以用来分析它 (yet)。

根据以上假设,此时的优化问题就变成了

在去噪问题中,数据项 ,将其带入上式中得到现在要优化的问题: ​ (loss function),其中​ 可以是任意的inputs。接下来用标准的网络优化方法就可以求解该问题了,比如本文中用的Adam。

几个可能的疑问

  • 从要优化的问题 ​来看,它实际在做的是通过优化CNN的参数,使得CNN能把一个随机的输入尽可能接近噪声图像!这不就是train一个CNN来学噪声图像嘛,这个反直觉的操作为什么就能去噪?
作者做了这样一个实验:让CNN同时从随机的输入重建干净图像、带噪声的图像、image shuffled和噪声,发现网络优化干净的图像要比带噪声的图像以及噪声更快!换言之,网络在优化 的过程中,趋向于先学习图像信息,然后才是噪声 (原文表述为:offers high impedance to noise and low impedance to signial)。

所以CNN 在train的时候可能会先学到我们希望得到的去噪图像​ ,然后才会过拟合到实际的噪声图像。因此需要在网络train的过程中某一个步骤停下来,当前网络的输出就是去噪后的图像。
  • CNN ​如何选用?不同的CNN隐含的regularization是什么?
很难回答!可以确定的是不同的网络架构对去噪性能会有很大影响,作者在本文中用的是U-Net。作者也尝试去探寻不同网络架构背后的prior(regularization),下图是选用不用的网络结构在随机权重下的输出,可以发现不同的网络架构得到的结果有明显差异。

  • 本文方法跟经典的图像重建方法比会更好吗?
上述介绍都是以去噪为例,但本文方法还可以用在超分辨重建、图像修复等图像重建任务中。在去噪任务中,PSNR为31.00,BM3D为31.42,Non-local means 为30.26,耗时文章没说,但肯定挺慢的. 其他任务的结果请参阅原文。
取得好的实验效果虽然是我们期待的,但是对于这篇文章不能光用实现结果的好坏来评价它。这个工作更大的贡献是打开了一扇门:原来CNN本身还可以作为一种regularizer,可以用在各种图像重建问题中(只需要degraded images,不需要ground truth)。

本文最先在CVPR 2018发表,目前Journal版本已经被CV顶刊IJCV接收。代码已经开源,目前5000+ star!

DmitryUlyanov/deep-image-prior​

github.com/DmitryUlyanov/deep-image-prior正在上传…重新上传取消​

本文思想的进一步应用:欢迎留言补充。

发布于 2019-09-11

图像处理

卷积神经网络(CNN)

深度学习(Deep Learning)

 

以上是关于用CNN做图像重建:Deep Image Prior学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Deep Learning Local Descriptor for Image Splicing Detection and Localization阅读

毕业设计基于深度学习的图像超分辨率重建 - opencv python cnn

文献阅读与想法笔记14Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising

文献阅读与想法笔记14Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising

基于深度多模型融合的单图像去雾(Deep Multi-Model Fusion for Single-Image Dehazing)阅读报告-iccv2019

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION(VGG网络)-论文阅读笔记