论文复现—【MICCAI 2021】Task Transformer Network for Joint MRI Reconstruction and Super-Resolution


前言

最近开始了找论文复现的步骤,通过MRI super-resolution关键词在Github搜索,确定了合适的开源项目,此篇论文为MICCAI 2021会议论文,之前有粗略的读过,且从github上看实现步骤较清晰、简单,故尝试复现此篇。
代码地址:https://github.com/chunmeifeng/T2Net


提示:以下是我在复现此篇论文时的步骤,仅供参考

一、配置环境

请添加图片描述

在Read me ,可以看到此项目所需要的各个package名称及版本号

1、创建新环境

 conda create -n T2NET python=3.8

2、配置conda及torch

conda install pytorch==1.7.0 torchvision==0.8.1  cudatoolkit=11.0

3、安装需要的Package

在使用conda list检查已有的packgae是否与要求的重合,或者直接安装覆盖(推荐此种,保持版本一致)

1)使用conda install 指令安装

conda install numpy==1.18.5 scikit_image==0.16.2 runstats==1.8.0 pytorch_lightning==0.8.1 h5py==2.10.0 PyYAML==5.4

出现的问题1

在这里插入图片描述

会发现图片中的3个package,在目前的andaconda镜像下载通道无法找到

解决方法1

分别使用conda install 和pip install

conda install numpy==1.18.5  h5py==2.10.0 PyYAML==5.4
pip install scikit_image==0.16.2  pytorch_lightning==0.8.1 runstats==1.8.0

4、检验环境

建议使用自己没有问题的代码,检验环境是否配置正确

二、准备数据

1、工程下载

1)代码下载和传输

将Github上的工程打包下载在自己电脑,然后传输到服务器上对应的文件夹

在这里插入图片描述

2)数据集下载和传输

下载

Download and decompress data from the
Link:https://pan.baidu.com/s/1OdIoBwJy3GZB979JPBJS6w
Password: qrlt
在这里插入图片描述

缺点:传输过程很慢,要40 mins左右,可以试试直接在服务器下载

解压数据集

常用指令:https://cloud.tencent.com/developer/article/1404921

tar xvf test.tar
tar xvf train.tar
tar xvf val.tar

在这里插入图片描述

3、数据集格式转换

参考源代码的readme,需要对下载的数据集进行格式转换,Transform .h5 format to .mat format

1)代码改动

①目录更改

在这里插入图片描述

根据此处提示,需要在ixi_config.yaml中更改路径

更改如下

Line4:data_dir: "/home/songqixin/arxivs/scode/T2net/h5/"
Line5:train_data_dir: "/home/songqixin/arxivs/scode/T2net/h5/train" 
Line6:val_data_dir: "/home/songqixin/arxivs/scode/T2net/h5/val" 
Line42:save_path: "/home/songqixin/arxivs/scode/T2net"   
Line45:predict_data_dir: "/home/songqixin/arxivs/scode/T2net/h5/test" 
②运行代码

根据提示:
在这里插入图片描述

python convertH5tomat.py --data_dir /home/songqixin/arxivs/scode/T2net/h5
问题1

在这里插入图片描述

解决1
pip install numpy==1.21
运行结果

在这里插入图片描述

三、工程代码运行

根据项目提示,运行该工程只需

python ixi_train_t2net.py
1)查看项目的issues

通过这,可以看到大家在运行这个项目时遇到的问题,有两个作用:1.判断这个项目实现的容易程度2.提前预判会出现的错误或者在后面运行的时候遇到的关于这个项目特有的error也可以来从讨论中尝试找到答案
在这里插入图片描述

2)路径更改

挨个查看各个文件,存在的显性路径先更改,后面根据报错情况,更改隐藏路径

3)报错及改错
error1

在这里插入图片描述
解决

pip install opencv-python
error2

在这里插入图片描述

经过查Github中Issues的讨论,author说实验室没有用到1D-Random-3X_256.mat,可以注释掉。
解决

  1. 打开ixi_train_t2net.py文件
#经过查阅,下面这个引入路径没用到,直接注释掉
L15:sys.path.append('/home/songqixin/arxivs/scode/T2Net-master/')
#源代码的256模型不存在,直接替换成项目里存在的两个mat之一
L55: ixi_args.mask_path = ('/home/songqixin/arxivs/scode/T2Net-master/1D-Cartesian_6X_128128.mat')

  1. 打开mri_ixi_t2net.py文件

这个文件下路径好多

#这个路径下对应的数据在已下载的项目中并不存在,考虑将引用路径的地方注释即可
Line36: 
      reconstruction_root='/home/jc3/YYL/JS_fastMRI/SR_fastMRI-master/experimental/ixi/reconstruction_data_ixi/r2/mat1/'
Line55:#self.LR_slice_files.append(os.path.join(reconstruction_root,file_name))

#把不存在的模型更改成项目中存在的128模型
Line67: masks_dictionary = loadmat(
            '/home/songqixin/arxivs/scode/T2Net-master/1D-Cartesian_6X_128128.mat')
Line154: masks_dictionary = loadmat(
            '/home/songqixin/arxivs/scode/T2Net-master/1D-Cartesian_6X_128128.mat')

先改这些,运行一下看看

error3

在这里插入图片描述

还是路径的问题

解决
定位到还是mri_ixi_t2net.py的问题,隐藏路径不正确
self.data_dir
在这里插入图片描述

是因为路径无法迭代,多次尝试后(包括将self.data_dir更换为绝对路径,效果不行),将下面更换文件名称的命令注释掉,始终保持在开始设定的路径下即:/home/songqixin/arxivs/scode/T2net/h5

Line189: #full_file_path = full_file_path.replace('/h5/', '/mat/')
error4
CUDA out of memory. Tried to allocate 8.00 GiB (GPU 2; 23.69 GiB total capacity; 12.74 GiB already a

解决
参考文章:https://blog.csdn.net/xiyou__/article/details/118529350

直接百度后,发现此类错误有四种解决方法,先尝试修改了使用GPU数量,还是未能解决,每个GPU运存都不够,然后参考文章,在config文件修改了Batch_size,先改大,发现未解决,然后依次修改至8,4,成功解决!

4)运行结果

在这里插入图片描述
每次训练epoch的时长为8min,每次训练之后Loss再减少,各项评价指标在变好

总结

此次项目运行实践耗时两天半,收获如下:
1、认清项目中代码文件的构成,有函数文件、运行文件、配置文件等,路径主要存在于运行和配置文件中。
2、学会了根据error提示的位置,快速定位需要改动的代码
3、要静下心挨个看运行文件的构成和各个定义、命令语句的作用,找出可以改动的地方
4、不要放弃,改累了就下个半天再改一下

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值