为什么不能早看到这篇文章呢?感觉之前基本上在白淦。。。
本文标题FOCNet: A Fractional Optimal Control Network for Image Denoising,网络模型即FOCNet
是看到的继TNRD后,总第2篇结合DE和网络结构的文章,引入的是分数阶ODE的离散化,带来长期记忆性。有点动态网络的味道,但不是❗
文献简介
FOCNet是2019CVPR的文章,是贾老师、张磊老师等的文章,至2021/03/24谷歌显示有31引用量
略读笔记
【1】谁的文章:贾老师、张老师等
【2】什么问题:图像去噪
【3】有动机否:基于DnCNNs的方程解释,改成分数阶方程;分数阶方程似乎有长期记忆性
【4】有无框架:FOCNet,分数最优控制网络,算是分数阶微分方程的离散化;并加强多尺度特征交互来加强网络
【5】什么模型:与框架一致,求解分数最优控制(FOC)问题,有不少理论保证。有DenseNet/动态网络的味道
【6】方程类型:分数阶方程,原文第4页式(7),好像就是条件pde变成了分数阶方程,其它都是网络套的
【7】实验:很多,有经典单图加多种噪声,用多种模型;还有数据集同样处理的
打算细看一点点~
要解决的问题
从标题知,本文的目标是图像去噪问题。从正文看也是general的图像去噪,没有什么特殊假设
背景方法
本文的背景领域是去噪,其中主要关注的是背景方法是DnCNNs和动力系统解释DNN这两个:
DnCNNs在low-level的去噪中表现出色
ps:本文在引言部分介绍了大量去噪网络模型,需要的话再看
深度卷积网络DCNN结合残差可以解释为动力系统,由此引入分数阶ODE
动机/Idea
本文的动机/idea有两个
整数阶ODE在时间尺度上局部之间的关系显然是大的,但是全局就不大了,因此只有所谓短期记忆;而分数阶(fractional)ODE有长期记忆(原文第3页图(1)所示的power-law memory)。在去噪这个问题上,历史状态(原图)应该也是对稳健控制有关的
ps1:DenseNet、MemNet似乎也可以看成学习长期记忆
ps2:至于为什么要长期记忆,这是从动力系统当前state可能和历史states都相关启发得到的结论
多尺度特征交互加强网络性能
模型FOCNet
FOCNet这个框架就是结合了上述动机的去噪网络。网络的(前向)结构根据分数阶ODE的离散化设计
介绍一下分数阶网络,其实就是根据power-law memory的power-law机制重新定义了分数阶导数:
Dβu(t)=limh→01hβ[th]∑k=0(−1)k(βk)u(t−kh), where β∈(0,1).这个式子是很广泛使用的一种分数阶导数定义(确实有别的),叫做Grünwald-Letnikov定义
但是这个定义咋一看式子有些难懂,看维基百科的话,即知,这个定义是推广出来的概念,可以写个2阶导,分子其实就有f(x),f(x+h),f(x+2h)三项,推广至整数n阶导其实就是上面(1)的形式,(1)又把这个阶数推广到一般阶数,如(0,1)之间的阶数,至于里面的二项式系数我就不知道咋算的了哈哈
那么FOCNet的FOC问题整体是这样的:
minθ(t)12∫Ω(Φ(u(T,s))−x(s))2dss.t.{Dβtu(t,s)=f(u(t,s),θ(t))u(0,s)=Ψ(y(s)), t∈[0,T].其中输入的脏图是y(s),真实的gt干净图是x(s),s∈Ω是图像上的二维坐标。Φ和Ψ都是线性变换如卷积,大概是要把图像稍微处理一下,具体是啥应该不是特别重要
然后就到了加强性能的时候,idea是考虑多尺度特征交互,加强长期记忆能力。哎,这个多尺度交互的过程我看了好长时间才看明白。。。是我太菜了
尺度的变换是通过上pooling或者pooling(平均池化)完成的
注:趁机复习补充了一堆上下采样、上pooling、pooling的知识,参考:
先上网络的结构图:
用数学形式表示交互的过程为原文第4页的(8)式:
{Dβtu(t,s,l1)=f(u(t,s,l1),g(u(t,s,l1+1)),θ1(t))Dβtu(t,s,l2)=f(u(t,s,l2),g(u(t,s,l2±1)),θ2(t))⋯Dβtu(t,s,lk)=f(u(t,s,lk),g(u(t,s,lk−1)),θk(t))u(0,s,l1)=Ψy(s), u(0,s,li)=T↓u(1,s,li−1)1≤li≤k, 0≤t≤T.这个(3)式要配合上图一起看,以一般的中间式子Dβtu(t,s,li)=f(u(t,s,li),g(u(t,s,li±1)),θi(t))为例,这个β阶导数指的是第i个尺度(scale)的变化过程,即图中的第i行网络。图中第i行网络中每个侧着的方形都是一个状态(state),为了前进到下一步,以变化率f前进,f取决于三个因素,u、g和θi。其中
- u=u(t,s,li)是前当前state
- g=g(u(t,s,li±1))中的g本身叫做scale switch函数(图中最左下角的黑字),包含在图中的浅绿色箭头中,g(x)=wT(x),w是0-1二元变量,T是pooling或者上pooling算子,也就是说,g是把前一个(i−1)或者下一个(i+1)尺度信息利用到当前尺度(i)中的算子,就是图中的浅绿色箭头,式子中的±就是指中间的尺度可能接受来自上下两个尺度的信息。如图中深蓝色圆圈所示,状态2就从下一个尺度的状态1进行了scale switch,状态4就从上一个尺度的状态3进行了scale switch
- 最后θi就是尺度i的网络参数了
实验
实验在Berkeley Segmentation Dataset和DIV2K的部分数据上进行训练,其中有超参数的选择,如分数阶β,用多少尺度
测试则在Set12、BSD68、Urban100三个常用数据集上测试,并和其它诸多方法进行了对比,效果显著。具体可参考文中实验结果表,以及PSNR和计算时间的对比,显然它表现在几个方法中最优,且计算也不慢:
FOCNet
代码中,FracDCNN.m
定义了添加网络模块的函数,以及定义了本文的FOCNet,FracDCNN_train_dag.m
则包含了训练的过程设置
优点
- 通过引入分数阶ODE,网络前向后向传播过程中都有一定的长期记忆能力
- 利用多尺度特征交互,即网络分层的形式,加强了网络性能
- 方程做成网络,是残差的形式,训练也好弄
- 实验表示去噪的视觉效果和指标都不戳
思考
图像去噪的过往方法:PDE-based,稀疏编码(可能是GAN一类的)、低秩估计(分解),etc
而过去的方法很多对图像先验的假设是有限的
那么是否对于general的去噪,先验的作用要削弱;对于specific的去噪任务,自适应加强先验呢❓大概是的,应该有不少工作是要自适应学习图像的先验信息,这个模块不能丢掉
既然分数阶ODE记忆长期,那么分数阶ODE会有混沌么❓
FOCNet也是堆积了网络模块,但其实不是动态网络,结构还是固定的
能不能糅合DnCNNs、FOCNet、动态网络得到动态+残差+BN+分数阶方程。。。是不是在瞎搞❓也没啥创意。。。
参考文献
[1] X. Jia, S. Liu, X. Feng, and L. Zhang. Focnet: A fractional optimal control network for image denoising. In 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pages 6047–6056.
1 | @inproceedings{RN45, |