论文解读《Plug-and-Play Priors for Model Based Reconstruction》
这篇论文主要概述了model-baesd的方法在解决图像恢复的逆问题的很好的效果,降噪问题其实就是前向模型的H是一个恒等算子,将state-of-the-art的降噪算法(先验模型)和相对应的逆问题的求解方法结合是一个困难但是具体前景的工作。 作者提出了一个灵活的框架能够允许性能强大的图像系统的前向模型(forword models )去匹配j和结合降噪模型和先验模型(denoising model or prior model),以实现图像恢复。
传统的模型涉及两个部分,一个模型是噪声的估计系统,另一个模型是待重构图像模型(比如先验模型),然后通过最小化一个成本函数来计算重构,该函数平衡了这两个模型的拟合。
降噪问题在图像的反演过程中最简单的,因为他的前向模型是一个恒等算子,为新的先验模型的产生创造了肥沃的环境。model-based 逆问题主要关注的是精确的建模大尺度的复杂的前向模型,很少有融合先进的先验模型、降噪方法啊。
-- 因此,基于模型的反演研究往往滞后于先进的先验建模
-- BM3D-based 方法的图像先验模型并不能够直接应用于一般的反演问题
虽然之前也有集合先进的先验模型进入图像的反演问题,但是他们常常是高度定制化的,
当前并没有为一般的model-based图像反演问题,匹配降噪模型作为先验。
方法: 应用ADMM技术,分离变量以实现将MAP估计问题解耦为先验和前模型问题,一个是前向模型一个是先验问题。一个模块对应着降噪算法只依靠于先验,第二个模块对应着应用l2正则化的反演问题只依靠于前向模型。
MAP计算函数去解决反演问题
带求量$\hat{x}$的MAP估计:
$\hat{x}=$argmin-log$p(y|x)$-log$p(x)$
$\hat{x}=$argmin$l(y;x)+s(x)$
MAP估计$l(y;x)=\frac{1}{2\sigma_{n}^{2}}||y-x||_{2}^{2}+\frac{M}{2}log(2\pi\sigma_{n}^{2})$
对应着降噪任务,旨在被设计去移除方差为$\sigma_{n}^{2}$的加性高斯白噪声(AWGN)
所以可以再表示为:
$H(y;\sigma_{n}^{2})=\frac{1}{2\sigma_{n}^{2}}||y-x||_{2}^{2}+s(x)$ (3)
常常加上增加的正则化参数去控制先验模型在重建上的相对影响:
$\hat{x} = $argmin$l(y;x)+\beta s(x)$
变量分离 and ADMM
首先分离变量x为两个新的变量x 和 v, 则MAP问题被重新写为:
$(\hat{x},\hat{v}) = $argmin$_{x,v}{l(y;x)+ \beta s(v)}$ 令x=v
使用增广拉格朗如函数(augmented Lagrangian)和ADMM技术去解决这个问题:
$L_{\lambda}(x,v,u) = l(y;x)+ \beta s(v) + \frac{\lambda}{2}||x-v+u||_{2}^{2} - \frac{\lambda}{2}||u||_{2}^{2}$
其中u 是一个缩放的对偶变量(dual variable),$\lambda$是一个惩罚变量。
$\hat{x} = $ argmin$_{x}L_{\lambda}(x,\hat{v},u)$
$\hat{v} = $argmin$_{v}L_{\lambda}(\hat{x},v,u)$
$u = u + (\hat{x}-\hat{v})$
其中$\lambda$ 对最后的结果没有影响,只是控制ADMM算法的收敛率
如果,$\hat{x} =\hat{v}-u$ 和 $\hat{v}=\hat{x}+u$ :
step1 $\rightarrow$ $\hat{x} = $argmin$_{x}{ l(y;x) + \frac{\lambda}{2}||x\text{}-\hat{x}||_{2}^{2}}$
step2 $\rightarrow$ $\hat{v}=$argmin$_{v}\frac{\lambda}{2}||\hat{v}\text{}-\text{}v||_{2}^{2}+\lambda s(v)$ (11)
step3 $\rightarrow$ $u = u + (\hat{x}-\hat{v})$
第一步取决于前向模型的选择;第二步取决于先验的选择,能够被集成作为一个降噪操作,如上面的公式。
为了强调ADMM更新的模块结构,定义一个算子$F(y,\tilde{x};\lambda)$:
$F(y,\tilde{x};\lambda)=$argmin$_{x}{ l(y;x)+\frac{\lambda}{2}||x\text{}-\text{}\tilde{x}||_{2}^{2}}$
上面的公式返回了 给定值y,求得的x的MAP估计值,使用二次正则化值$\tilde{x}$,是一个二次正则化最小二乘问题。
我们称作$F(y,\tilde{x};\lambda)$为简化的重构操作,根据重构操作$F(y,\tilde{x};\lambda)$和降噪操作$H(y;\sigma_{n}^{2})$,我们能够重写ADMM迭代:
$\hat{x} \leftarrow F(y,\tilde{x};\lambda)$
$\hat{v} \leftarrow H(y;\frac{\beta}{\lambda}) $ 根据公式3和公式11
$u = u + (\hat{x}-\hat{v})$
这样写后,形成了两个独立的模块,重建操作和降噪算法操作,先验模型的改变只涉及一个模块$H(y;\sigma_{n}^{2})$,所以可以混合和匹配不同的降噪先验模型和有益的前向模型。
重要的点,这两个模块都可以不那么精确,都可以使用近似的操作来取代,这些算子不能使各自的成本函数最小化,而是使其值充分降低。这个对于将使算法在实际中发挥作用和加速都极为有益。
通过变量分离技术,作为一个机制去产生灵活的架构,期望简单的匹配先验模型和前向模型。
ADMM能够确保收敛,通过数值实验,我们发现用去噪算法代替H,即使不显式对应于凸函数s甚至严格的优化问题,也能得到稳定的结果。(这个就为使用判别学习方法得到先验模型创造了条件,先验正则化隐式的包含在参数模型中)
整体算法:
其中第一步,在HQS算法中,使用的是快速傅里叶变换(FFT)进行求解;
思考:
这部分可以尝试使用CNN-based残差学习的判别学习方法对先验进行建模,使用降噪先验取代$\hat{v} \leftarrow H(y;\frac{\beta}{\lambda}) $;
这部分也可以尝试嵌入一个GAN-based 拟合的多分布,兴许可以产生比CNN-based 的单一判别学习方法更好的效果;
论文解读《Plug-and-Play Priors for Model Based Reconstruction》的更多相关文章
- 《Population Based Training of Neural Networks》论文解读
很早之前看到这篇文章的时候,觉得这篇文章的思想很朴素,没有让人眼前一亮的东西就没有太在意.之后读到很多Multi-Agent或者并行训练的文章,都会提到这个算法,比如第一视角多人游戏(Quake ...
- ImageNet Classification with Deep Convolutional Neural Networks 论文解读
这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...
- 《Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Neural Networks》论文笔记
论文题目<Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Ne ...
- Quantization aware training 量化背后的技术——Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
1,概述 模型量化属于模型压缩的范畴,模型压缩的目的旨在降低模型的内存大小,加速模型的推断速度(除了压缩之外,一些模型推断框架也可以通过内存,io,计算等优化来加速推断). 常见的模型压缩算法有:量化 ...
- Training Deep Neural Networks
http://handong1587.github.io/deep_learning/2015/10/09/training-dnn.html //转载于 Training Deep Neural ...
- Training (deep) Neural Networks Part: 1
Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...
- [CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks论文笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...
- Training spiking neural networks for reinforcement learning
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 原文链接:https://arxiv.org/pdf/2005.05941.pdf Contents: Abstract Introduc ...
- CVPR 2018paper: DeepDefense: Training Deep Neural Networks with Improved Robustness第一讲
前言:好久不见了,最近一直瞎忙活,博客好久都没有更新了,表示道歉.希望大家在新的一年中工作顺利,学业进步,共勉! 今天我们介绍深度神经网络的缺点:无论模型有多深,无论是卷积还是RNN,都有的问题:以图 ...
- 论文翻译:BinaryConnect: Training Deep Neural Networks with binary weights during propagations
目录 摘要 1.引言 2.BinaryConnect 2.1 +1 or -1 2.2确定性与随机性二值化 2.3 Propagations vs updates 2.4 Clipping 2.5 A ...
随机推荐
- Java List 常用集合 ArrayList、LinkedList、Vector
Java 中的 List 是非常常用的数据类型.List 是有序的 Collection,Java List 一共有三个实现类,分别是:ArrayList.Vector.LinkedList 本文分析 ...
- python自动保存百度网盘资源
觉得有帮助的别忘了关注一下知识图谱与大数据公众号,完整代码移步从今天开始种树 开始 在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过 ...
- 实战:一种在http请求中使用protobuffer+nginx+lua收集打点日志的方案
背景 app打点日志的上报和收集,是互联网公司的基本需求. 一.方案选择 1.1 protobuffer vs json 探究一种以最高效的方式上报和解析打点数据是一个系统性的问题,需要解决的子问题有 ...
- Kafka处理请求的全流程分析
大家好,我是 yes. 这是我的第三篇Kafka源码分析文章,前两篇讲了日志段的读写和二分算法在kafka索引上的应用 今天来讲讲 Kafka Broker端处理请求的全流程,剖析下底层的网络通信是如 ...
- springboot集成swagger文档
//此处省略springboot创建过程 1.引入swagger相关依赖(2个依赖必须版本相同) <dependency> <groupId>io.springfox</ ...
- p.array 的shape (2,)与(2,1)的分别是什么意思
numpy.ndarray.shap是返回一个数组维度的元组. (2,)与(2,1)的区别如下: ndarray.shape:数组的维度.为一个表示数组在每个维度上大小的整数元组.例如二维数组中, ...
- 怎样禁用UEFI boot option中的USB启动,防止U盘WIN PE系统黑入电脑?
Title: Disable all UEFI boot options tblatt 问: Hello, system: Latitude E6530 I want to disable all U ...
- Python中matplotlib.pyplot.imshow画灰度图的多种方法
转载:https://www.jianshu.com/p/8f96318a153f matplotlib库的教程和使用方法此处就不累赘了,网上有十分多优秀的教程资源.此处直接上代码: def demo ...
- Arduino Uno微控制器采用的是Atmel的ATmega328
参考:https://www.yiboard.com/thread-831-1-1.html 在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开 ...
- 全方位剖析 Linux 操作系统,太全了!!!
Linux 简介 UNIX 是一个交互式系统,用于同时处理多进程和多用户同时在线.为什么要说 UNIX,那是因为 Linux 是由 UNIX 发展而来的,UNIX 是由程序员设计,它的主要服务对象也是 ...