用的是Xshell进行ssh连接。因为突然换了个服务器,所有东西要重新开始,隔了很久很多事情忘得七七八八了,为了避免下次还发生这样的事情,决定记录一下每个过程,以后就不用到处找教程了。
环境配置
Anaconda的安装
主要用到python,所以装一个anaconda。直接下载了Anaconda3的linux-x86-64版本,zip文件传输进服务器中。
不解压直接传的话可能会很耗时,直接传进去再解压就快很多
cd 进传输的根目录,然后用 unzip解压。
解压之后开始安装
chmod +x Anaconda3-2023.03-1-Linux-x86_64.sh #赋权
./Anaconda3-2023.03-1-Linux-x86_64.sh #路径
然后跟着提示输入Enter和yes就好,安装完就是这样。
检查一下有没有安装成功> <
conda -V
显示出版本号就可以了,如果显示了thank you for installing Anaconda3 ,且也有anaconda3的文件夹,但输入conda命令的时候却发现说conda命令不存在。
方法大概是:
1、切换路径,切到其他文件夹再试一下。
2、重进一下服务器。
安装完后,就开始创建虚拟环境
虚拟环境
创建虚拟环境的命令
conda -n [name] (python=3.7)
想指定python版本的话就输入以下python=版本号就好,不输入的话默认是最高版本好像。
这样就ok了。
激活虚拟环境
linux的激活命令:
source activate [name]
windows:
conda activate [name]
退出虚拟环境:
conda deactivate/conda source deactivate
删除环境:
conda env remove -n [name]
配置各类库文件
创建虚拟环境之后,激活环境,然后就开始我们所需要的库的安装!
pytorch
pytorch我直接用官网的命令进行下载。
官网链接:PyTorch
在这里选择自己想要的,然后复制下面的命令粘贴到命令行即可。
比如我是CUDA11.x那就是选11.8,conda和pip都行
然后跟着提示进行输入即可
完成
安装过程遇到的问题
查看CUDA版本可以输
nvidim-smi
在我输入之后发现没有这个命令。。然后就开始安装nvidim
找到的办法:【精选】四、ubuntu20.04下找不到NVIDIA相关命令_ubuntu nvidia-smi找不到命令-优快云博客
然后报错了
UnboundLocalError: local variable 'version' referenced before assignment
这个错误输入:
sudo apt install --only-upgrade ubuntu-drivers-common
就好,然后再照着上面的方法进行安装。
安装之后输入nvidim-smi查看CUDA版本
但是我安装之后马上输入又不行!
看了一眼评论说要重启才行,我重新连接ssh发现还是不行。
重启电脑也不行。。
然后就换成了nvcc -V 这个命令
如果报错找不到命令的话按照提示命令安装就好。
安装后遇到了一个报错,大概意思就是无法使用pytorch
检查了一下发现是装成了cpu
卸载重装就好。激活环境后,输入
conda uninstall pytorch
conda uninstall libtorch
卸载后重装,根据cuda环境自己挑,用pip安装
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu115
时间可能会比较久,慢慢等就好了^ ^
这样就好了。
SimpleITK
正常安装库的时候只需要输入pip install 或者conda install xxx就可以了,但是安装SimpleITK的时候一直报错说确实wheel
ERROR: Could not build wheels for SimpleITK, which is required to install pyproject.toml-based projects
本地下载再上传到ssh服务器再进行安装的话有点过于复杂,而且网址大多是win系统的,所以卡了有一会,后面发现只要输入以下命令就能安装了
conda install -c simpleitk simpleitk(==版本)
ps:
需要指定版本的话输入对应版本即可,python3.7输1.0.0的话会报错
faiss-gpu
项目——Dual-Normalization-main
这里用的是BRATS 2018数据集,下载方式在GitHub主页里有提到,点链接进去申请就好。
导入main文件和数据
可以直接在服务器上用git语句进行下载,也可以下载好之后上传到服务器。
然后用unzip进行解压就好。
然后开始安装相关库,源码里面没有提供requirement.txt,所以要试一次然后根据缺的库文件进行安装,或者直接看代码进行一个一个安装。用conda install或者pip install就好。
readme.md里有一个这样的框架,在代码里新建一个npz_data的空文件夹就好,然后再建一个npz_data/test和npz_data/train作为训练和测试的划分。
├── [Your BraTS2018 Path]
├── npz_data
├── train
├── t2_ss
├── sample1.npz, sample2.npz, xxx
└── t2_sd
├── test
├── t1
├── test_sample1.npz, test_sample2.npz, xxx
├── t1ce
└── flair
数据预处理
源码里有提供数据预处理的代码,即preprocess_func.py
里面提供了一个modality:
看上面提供的文件大概框架,t1/t1ce/flair都是用来进行测试的,t2用来训练。
关于t1、t2等详细介绍可以看这篇:医学影像分割入门MRI关于T1、T2、Flair等概念_t1和t2和flair信号的区别-优快云博客
使用时只要根据你想要的输出然后分别修改以下内容就好。
这里尝试了一下,预处理的速度感觉有点慢,只用1个数据集进行处理的话还是比较快的,但是后面进行训练的时候还是很慢,大概10min一个epoch,这里的默认参数是epoch=50,所以要用的时间还是很多,因为处理后有很多个sample的npz文件。暂时没找到能更好提高速度的方法。
如果直接用原文件nii.gz格式进行训练,还是很快的。但是不知道没有预处理的话精度会不会降低很多。
我将数据集分成了几个文件夹,方便直接进行预处理。
cd到preprocess_func.py的根目录,输入
python preprocess_func.py
开始预处理,这是处理三个数据的样子
我选的是t2,结束后会生成两个文件夹,每个大概是0-464个sample
这里大概整理了一下preprocess_func.py要用到的库,不一定齐全
nibabel
SimpleITK
scipy
matplotlib
训练
训练用到的是train_dn_unet.py,Readme.md里有提到各种参数的输入
照着输入就好。
——后面再补充