在上一篇中,我们观察了 CC-359 数据集。
本篇,我们将利用 CC-359 数据集进行 MRI 的重建。关于 MRI 的重建,我将提供两种方法:
方法一:直接建立 零填充的欠采样图像 到 全采样图像 之间的映射,具体操作如下,对于 CC-359 数据集中的原始数据(target-k-space,256x256x2),经欠采样得到(under-K-space,256x256x2),对它们进行逆傅里叶变换,分别得到 全采样图像(target-img,256x256) 和 零填充的欠采样图像(under-img,256x256),然后直接训练从 under-img 映射到 target-img 的网络,网络的输入为 under-img(256x256),输出为 rec-img(256,256),目标为 target-img(256x256)。这种方法将 MRI的重建 退化成一个普通的图像问题,操作简单,但是在网络结构中并没有很好的用到 MRI 的频域信息。
方法二:网络的输入是 under-K-space(256x256x2) 与 under-img(256,256),输出为 rec-img(256,256),目标为 target-img(256x256)。这种方法在网络结构上会有图像频域信息与时域信息之间的融合。
本篇将介绍方法一,下一篇介绍方法二。
这里主要是将 fastMRI 的代码进行了一些改写,我感觉他们的代码比较方便扩展,可以让我们只关注于网络的结构,其它的部分都是通用的。
改写后的代码放在我的 github 上,代码组织结构上与 fastMRI的代码一致,主要内容如下:
checkpoints文件夹 是 “模型保存” 和 “tensorboard 记录训练过程”的地方。
data文件夹 存放了相关的数据处理函数。
evaluate_result文件夹 存放了重建图像的重建效果指标(PSNR 与 SSIM),由 utils/evaluate_from_i.py 生成。
mask文件夹 存放了一些欠采样所用的模板。
reconstructions_val文件夹 是用训练好的网络对 欠采样后的Val数据 进行重建时,生成的重建图像,由下图中的 run.py 生成。
utils文件夹 存放了一些辅助函数。
models文件夹 存放了网络模型以及训练网络的文件,如下:
其中 unet_model.py 是扩展自己的模型时,需重点改动的地方。
注:
1、本代码使用了 Tensorboard 与 visdom 两种方法记录训练时的情况,其中 Tensorboard 是默认使用的,visdom 可以通过输入参数 use-visdom 选择是否使用,visdom 对于使用远程服务器训练的情况比较方便(若使用 visdom,请先在服务器上开启 visdom 服务)。
2、在 第一幅图所在的目录下,使用如下命令,进行训练(train),测试Val(run),评价重建效果(evaluate):
(1)、train
python models/Unet/train.py --data-path /home/jinfeng/Desktop/Brain_workplace/Brain_datasets --exp-dir checkpoints/unet --use-visdom True
(2)、run
python models/Unet/run.py --data-path '/home/jinfeng/Desktop/Brain_workplace/Brain_datasets' --checkpoint 'checkpoints/unet/best_model.pt' --out-dir reconstructions_val/unet
(3)、evaluate
python utils/evaluate_from_i.py --target-path /home/jinfeng/Desktop/Brain_workplace/Brain_datasets/Val --predictions-path reconstructions_val/unet --name unet --i 0
当在训练过程中按下 Ctrl+c 中断训练后,可用如下命令恢复训练:
python models/Unet/train.py --data-path /home/jinfeng/Desktop/Brain_workplace/Brain_datasets --use-visdom True --resume --checkpoint checkpoints/unet/model.pt
3、 使用 Val 进行 零填充重建 ,用如下命令:
python models/zero_filled/run_zero_filled.py --out-path reconstructions_val/zero_filled
下图是在训练过程中,visdom 所显示的图像: