nnUNet安装踩坑-自适应医学图像分割框架

nnunet是由德国学者提出来的一个用于医学图像分割的通用自适应框架

  • 项目地址:https://github.com/MIC-DKFZ/nnUNet

最近想在电脑上部署一下,顺便踩踩坑,感觉其中最大的坑就是apex的安装,深度学习环境的部署可以看上一篇文章

硬件环境

HP Z8G4工作站,RTX2080ti显卡
Ubuntu 1804.4 桌面版本
Nvidia graphic driver 450.57

安装CUDA和CuDNN

这部分还算是比较简单,从官网下载CUDA10.0和对应的CuDNN 7.6.5,CUDA10.0有一个主程序和一个补丁包

sudo sh cuda_10.0.130_410.48_linux.run
sudo sh cuda_10.0.130.1_linux.run

由于已经装好了驱动,所以就选择不安装驱动,也不需要安装samples,只安装toolkit就好,安装路径选择默认路径 /usr/local/cuda-10.0 并选择建立软连接,之后安装CuDNN

tar -xvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

然后在.bashrc文件中添加环境变量

sudo vim ~/.bashrc
在文件最后添加
export PATH= $ PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
保存退出后使改动生效
source ~/.bashrc
测试nvcc
nvcc --version

安装pytorch

安装pytorch可以按照pytorch官网上的说明进行安装,但nnunet建议不使用conda虚拟环境,而是使用系统自建一个虚拟python环境进行安装

We very strongly recommend you install nnU-Net in a virtual environment.
Here is a quick how-to for Ubuntu..
Please do not use conda environments. This has caused multiple issues in the past.

新建虚拟python环境

首先需要更新软件列表,确认系统版本和python版本,系统应为ubuntu1804,python为3.6

sudo apt-get update
sudp apt-get -y update
python3 --version # 确定系统python版本,我的使python 3.6.9

然后安装pip和其他必要的库

sudo apt-get install -y python3-pip
sudo apt-get install build-essential libssl-dev libffi-dev pyhton-dev

建立虚拟环境,首先安装venv module

sudo apt-get install -y python3-venv

然后,建立一个目录用于存放虚拟环境

mkdir environments
cd environments
python3 -m venv nnunet # 新建一个环境名为nnunet的虚拟环境
source nnunet/bin/activate # 激活新环境

此时,命令行最左边应该有环境名,类似激活了一个conda环境

(nnunet)img@img:~/environments$

当然,退出的话,同样使用 source nnunet/bin/deactivate来实现,由于没有把该目录加入环境变量,所以每次都要定位至此处。因为系统中本身装有conda,为了好区分,就没有把该虚拟环境加入环境变量中
在新的虚拟环境中,使用python和pip即可,不需要再使用python3和pip3

安装pytorch

pytorch的安装按照官网指引即可,注意与cuda版本匹配,由于我是cuda10,python3.6,因此我选择安装pytorch1.2和torchvision0.4.0,使用pip安装

pip install torch1.2.0 torchvision0.4.0 -f https://download.pytorch.org/whl/torch_stable.html

或者直接从该页面上找到相应的whl文件,使用pip安装。安装完成后,进入python

import torch
torch.version.cuda
应该输出:10.0.130

安装apex

APEX是由nvidia开发的适用于pytorch的实用库,可适用于分布式,混合精度训练,以提升训练速度。在nnunet的介绍中也提到,如果使用他们训练好的模型进行推理的话,可以不需要apex。安装apex遇到了不少问题,我目前也是成功安装,但是并不能保证能够成功使用。APEX的官方推荐安装方法:

git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --no-cache-dir --global-option="–cpp_ext" --global-option="–cuda_ext" ./

正常来说,应该就可以成功安装,但是概率不知道有多大。如果不成功的话,大部分人的建议是将torch和cuda的版本统一,不要在conda虚拟环境下安装,并且将torch和cuda的版本调整至最新版本
由于我安装的是cuda10和pytorch1.2.0,在issue中发现有人提到在f3a960f这个分支下的apex可以成功编译,猜测是不是老一点的分支对老版本兼容性更好一些?当然,在老版本上也要承担相应的bug风险

git checkout -b f3a960f

然后在该分支下编译,最终编译成功
nnUNet安装踩坑-自适应医学图像分割框架_第1张图片

(原谅我截了个图,因为太不容易了。。。。)

安装nnunet

这部分就相对简单了,安装项目的readme来就可以

git clone https://github.com/MIC-DKFZ/nnUNet.git
cd nnUNet
pip install -e .

但是报错,找不到’find_namespace_packages’,不过这个也简单,应该就是setuptools版本较老的原因,更新一下就好,顺便给pip也更新一下

python -m pip install -U pip setuptools

然后重复上面的安装。至此,uunet已经在系统中安装完毕,后面会继续跟进数据整理、训练、优化等方案。大家有问题也可以在评论区评论,最近有不少医学分割比赛想要参加一下。

你可能感兴趣的:(nnUNet安装踩坑-自适应医学图像分割框架)