写这篇文章, 主要是因为我今天整理了最近一些研究的代码, 放到了git上, 想着既然整理完了, 那就顺便推广一下我的方法, 第一个想到的地方就是CSDN.
其实不论是MRI重建还是其他问题比如超分辨、去模糊, 基本的数学模型本质上还是相同的, 都可以用相同的套路解决. 这篇小文章首先了介绍一下图像处理的基本模型, 然后简单介绍了一下我最近的工作. 对基本数学模型比较熟悉的同学可以直接翻到最下面找我的代码链接. 对MRI重建或其他图像处理问题感兴趣的同学也可以随时找我交流.
我先从数学模型的角度描述一下核磁共振成像(nuclear magnetic imaging, MRI)的问题。我把要恢复的图像记为复值(complexed-valued)数据 x ∈ C N x \in \mathbb {C}^{N} x∈CN, 在k-空间中采集到的数据记作 y ∈ C M y \in \mathbb {C}^{M} y∈CM. y y y和 x x x的关系为 y = F u x y=F_{u}x y=Fux, 其中 F u = U F F_{u}=UF Fu=UF, F ∈ C N × N F\in \mathbb{C}^{N\times N} F∈CN×N表示傅里叶变换矩阵, U ∈ R M × N U\in \mathbb{R}^{M\times N} U∈RM×N表示采样矩阵. 用白话描述就是将信号 x x x经过傅里叶变换后, 再以某些方式选择一些点出来, 组成了 y y y.
我们把重建的数学模型描述为
min x 1 2 ∣ ∣ F u x − y ∣ ∣ 2 2 + λ R ( x ) \mathop {\min }\limits_x\ \frac{1}{2}||F_{u}x-y||_{2}^{2}\ +\ \lambda \mathcal R(x) xmin 21∣∣Fux−y∣∣22 + λR(x)
其中 λ R ( x ) \lambda \mathcal R(x) λR(x)表示正则项. 这个模型可以从最大后验(MAP)的角度出发得到, 但在一般的压缩感知问题(CS-MRI)中, 人们直接假设数学模型就是这个式子.
以ADMM[1, 2]为例, 其迭代序列为:
v ( k + 1 ) = arg min v λ R ( v ) + ρ 2 ∥ v − ( x ( k ) + u ( k ) ) ∥ 2 2 , , \boldsymbol{v}^{(k+1)} = \mathop{\arg\min}_{\boldsymbol{v}} \lambda \mathcal{R}(\boldsymbol{v}) + \frac{\rho}{2}\Vert \boldsymbol{v} - (\boldsymbol{x}^{(k)} + \boldsymbol{u}^{(k)})\Vert_2^2,, v(k+1)=argminvλR(v)+2ρ∥v−(x(k)+u(k))∥22,,
x ( k + 1 ) = arg min x 1 2 ∥ F s x − y ∥ 2 2 + ρ 2 ∥ x − ( v ( k + 1 ) − u ( k ) ) ∥ 2 2 , \boldsymbol{x}^{(k+1)} = \mathop{\arg\min}_{\boldsymbol{x}} \frac{1}{2} \Vert \boldsymbol{F}_s \boldsymbol{x} - \boldsymbol{y}\Vert_2^2 + \frac{\rho}{2}\Vert \boldsymbol{x} - (\boldsymbol{v}^{(k+1)} - \boldsymbol{u}^{(k)})\Vert_2^2, x(k+1)=argminx21∥Fsx−y∥22+2ρ∥x−(v(k+1)−u(k))∥22,
u ( k + 1 ) = u ( k ) + x ( k + 1 ) − v ( k + 1 ) , \boldsymbol{u}^{(k+1)} = \boldsymbol{u}^{(k)} + \boldsymbol{x}^{(k+1)} - \boldsymbol{v}^{(k+1)}, u(k+1)=u(k)+x(k+1)−v(k+1),
该序列可以得到原问题的一个局部最优解.
注意到, 第二个子问题有闭式(closed-form)解, 解唯一. 求解这个迭代序列就必须知道第一个问题怎么解. 我们当然可以假设一些正则项, 比如TV-L1, 小波, patch低秩等, 这些都有相关工作 [4]. 由于第一个等式可以有成千上万种形式, 而第二、三个等式相对来说是固定不变的, 我们其实可以得到这么一个结论: MRI重建的效果, 取决于第一个子问题求解的效果. 如果把 x + u x+u x+u看做噪声图, 从形式上看, 第一个子问题就是一个去噪问题.
从这个立场出发, 人们自然地想到, 要更好的求解这个子问题, 只需要用最先进的去噪算法. 10-15年间, BM3D、NL-mean这两个算法就被人们拿来求解第一个子问题, 从深度学习兴起之后, 基于深度学习的去噪器就自然地代替传统的去噪算法. 把去噪算法插入到迭代算法中的方法, 我们一般叫做即插即用方法(plug-and-play, PnP).
另一个从模型出发, 与深度学习结合的方法叫做展开(unrolling)方法[5]. 在设计深度神经网络结构时, 他们用一个卷积块求解第一个子问题, 经过重复几个模拟迭代过程的网络块之后, 得到重建的图像, 再将原图作为Target, 监督神经网络去学习重建过程. 展开的方法虽然看上去可以被数学模型指导, 以此方法设计的神经网络具有了解释性, 但这种方法本质上还是个端到端的深度方法, 跟u-net、resnet这种端到端的网络其实没啥大区别. 所以展开的方法也有泛化性能差的缺点.
PnP方法的泛化性能强于端到端的方法, 我们可以通过在输入图像中添加轻微的高斯噪声来验证. 加噪后, 端到端网络直接崩掉, 但PnP方法的效果没有降低太多. [2]
有兴趣的同学, 可以参照我的代码TRPA[2, 3], 做一些其他的图像反问题.
我一直在做PnP方法, 但最近已经陷入了研究瓶颈, 想不出什么好方法了, 一些对网络的小改小进我也觉得没什么价值去做. 之后可能会把一些想法也整理到这里, 欢迎大家交流~
参考文献
[1] S. H. Chan, X.Wang, and O. A. Elgendy, “Plug-and-play ADMM for image restoration: Fixed-point convergence and applications,” IEEE Trans. Comput. Imag., vol. 3, no. 1, pp. 84–98, Mar. 2017.
[2] R. Hou, F. Li and G. Zhang, “Truncated Residual Based Plug-and-Play ADMM Algorithm for MRI Reconstruction,” in IEEE Transactions on Computational Imaging, vol. 8, pp. 96-108, 2022, doi: 10.1109/TCI.2022.3145187.
[3] R. Hou and F. Li, “IDPCNN: Iterative denoising and projecting CNN for MRI reconstruction,” J. Comput. Appl. Math., vol. 406, 2022, Art. no. 113973.
[4] W. Dong, G. Shi, X. li, Y. Ma, and F. Huang, “Compressive sensing via nonlocal low-rank regularization,” IEEE Trans. Image Process., vol. 23, no. 8, pp. 3618–32, Aug. 2014.
[5] J. Zhang and G. Bernard, “ISTA-Net: Interpretable optimization-inspired deep network for image compressive sensing,” in Proc. IEEE/CVF Conf. Comput. Vis. Pattern Recognit., 2018, pp. 1828–1837.