Imaging Biomarkers and Computer-Aided Diagnosis Laboratory — LymphNodeRFCNNPipeline
步骤来源:github
配置细节撰写人:Zongwei Zhou
我使用的是Windows 7,64位系统,如果碰巧一样的话就直接按照提供的地址下载安装即可,可以巧妙地避开很多坑。
Introduction
Developed by Kevin Cherry and Holger Roth
Please cite our papers if you end up using this code:
[1] HR Roth, L Lu, J Liu, J Yao, A Seff, C Kevin, L Kim, RM Summers: Improving Computer-aided Detection using Convolutional Neural Networks and Random View Aggregation. Medical Imaging, IEEE Transactions on. Year: 2015, Volume: PP, Issue: 99, Pages: 1 - 1, DOI: 10.1109/TMI.2015.2482920
[2] KM Cherry ; S Wang ; EB Turkbey ; RM Summers: Abdominal lymphadenopathy detection using random forest. Proc. SPIE 9035, Medical Imaging 2014: Computer-Aided Diagnosis, 90351G, doi:10.1117/12.2043837
Code includes open-source packages:
1. http://cs.nyu.edu/~wanli/dropc/ based on https://code.google.com/p/cuda-convnet/
2. https://code.google.com/p/randomforest-matlab/
3. NiftyReg http://sourceforge.net/projects/niftyreg
Requirements
1. Matlab
我使用的版本是MATLAB 2013a,下载地址,下载下来安装包,按照Matlab R2013a 安装过程详解.pdf一步步安装即可。
2. CUDA-compatible graphics card
使用CUDA对GPU进行编程,我们需要准备以下必备工具:
硬件平台,就是显卡,如果你用的不是NVIDIA的显卡,那么只能说抱歉,其他都不支持CUDA。
这个NVIDIA的要求比较坑,我原来的笔记本也算算是高配,但检查了一下显卡,只有intel,并没有NVIDIA的,顿时感到无力,后来换了一台电脑,选择时首要的指标就是:“有没有NVIDIA的显卡”,一般来说高配的电脑都有,但大家一定要先确认一下。
Windows7:右键桌面‘计算机’->选择设备管理器->查看显示适配器,看看有没有NVIDIA系列的显卡,不管什么型号的,NVIDIA系列的就ok
原来其实导师还想了一个方案,就是我的笔记本桌面远程,用他的电脑,但是我网上看了一下,感觉不靠谱,原因是:
你使用远程桌面连接登录到另一台服务器,该服务器上有显卡支持CUDA,但你远程终端不能运行CUDA程序。这是因为远程登录使用的是你本地显卡资源,在远程登录时看不到服务器端的显卡,所以会报错:“没有支持CUDA的显卡!”
解决方法:1.远程服务器装两块显卡,一块只用于显示,另一块用于计算;2.不要用图形界面登录,而是用命令行界面如telnet登录。
3. Install CUDA 4.2 64-bit (https://developer.nvidia.com/cuda-toolkit-42-archive)
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
按照自己电脑的情况依次下载安装Download Toolkit, Drivers, SDK,我用的版本就是这个Toolkit, Drivers, SDK,大家可以直接下载。在安装前首先确认你的显卡用的是NVIDIA了,而且更新了驱动。
双显卡的笔记本一定要注意显卡安装顺序,首先要安装集成显卡(Internet)更新后重启,否则无法安装独立显卡或容易报错,如上图。安装NVIDIA Graphics Driver时也可能会遇到这个错误,完美解决NVIDIA最新显卡驱动无法找到兼容的图形硬件,百度上有各种解决方法,有的好用有的没用,我用的是这个解决方案,亲测有效。
4. Python 2.7 64-bit with Numpy and Matplotlib!
Recommended to use Anaconda python distribution: http://continuum.io/downloads
Make sure it's added to path (and remove any conflicting python versions from path)
安装完python最好再安装一个pip,pip相当于苹果的app store,可以用它下载很多python需要的包,比如matplotlib就可以。python和pip的安装详细步骤可以参考这个教程,基本就没什么别的问题了。需要注意的是numpy和scipy这两个包用pip安装会出来各种问题,建议直接网上下载exe,双击安装。下载地址:Numpy,Scipy。这儿要说明一下,虽然我的系统是64位的,但我还是安装了32位的python和其附属包,因为我在做深度学习的实验的时候发现部分包64位不支持的。
另外,它有推荐Anaconda python distribution,我就安装了。
这儿再提一嘴,安装完python,你运行程序,想看看到底python怎么样的时候,可能会遇到上面的问题,解决方法是去Visual Studio安装的目录下查找cl.exe文件,把文件目录添加到系统路径里面。
我用的是Visual Studio 2012,这个是下载地址,当然Visual Studio各个版本的地址也有,大家可以自行挑选,不建议安装高版本的,原因是在后续的配置中,往往会不支持高版本。
5. Optional: MITK for viewing result (http://www.mitk.org/Download)
Run example (Windows 7, 64-bit):
1. Download example data from https://drive.google.com/file/d/0Byig_cLsHdU0VkdGTXQ1N195ZWc/view?usp=sharing and extract to .\data
数据挺大的,当时我在国外下载的,不能翻墙的话可以在这儿下载。
2. Open Matlab
3. CD to where 'run_LymphNodeRFCNNPipeline.m' is located and run it (it will automatically add necessary sub-folders to Matlab path)
划线的那句不要信,把该添加路径的都添加了,稳妥,不然各种找不到函数的问题烦死你。
4. Select ".\data\CTimage" as input folder
5. Select a suitable output folder
具体怎么修改呢,因为报错的句子是optRF.randForestFilename地址找不到,只要Ctrl+F搜索randForestFilename,找到它的定义,应该是这句optRF.randForestFilename = [pwd,filesep,'trained_Forests\RF_regression.mat'];这儿有一个pwd,意思是当前路径,默认的是你MATLAB安装的路径,所以当然不对。你去CADLab-master文件夹下搜索RF_regression.mat,找到了它的路径,把与pwd无关的删掉,就是pwd了,可以参见我的修改代码。
把上面的代码改完,这个MATLAB程序就可以开始运行一会儿了,大概一分钟,然后继续报错:
按照上述方法做,估计还是会报出很多错误...因为要开始读代码了,但是不要怕,我也卡这儿了,先继续把下面几个步骤完成再来细读代码。
Compile yourself (should work on platforms other than Windows 7, 64-bit and Visual Studio 10, but links have to be updated):
Requirements
1. ITK v4.5.0 (others are untested) http://sourceforge.net/projects/itk/files/itk/4.5/InsightToolkit-4.5.0.zip/download
ITK的作用相当于一个函数库,是C++写的,在后续的调用时都是要用到的。我用的不是v4.5.0版本 的。需要注意的是,ITK的版本需要与CMake的版本对应起来,具体怎么对应需要去官网查,我用的对应版本是ITK和CMake。验证可行,建议用我的下载地址。
先把ITK和Cmake对应的下载下来,然后开始编译ITK。
因为ITK是C++的工程,编译C++工程不同的系统都是不同的,Mac、Linux、Windows,而且不同版本的编译器Visual Studio、Codeblocks也是不同的,对于这个跨平台的编译,需要一个翻译,把C++工程翻译成不同的可执行的工程,这个“翻译”就是CMake。进一步的CMake的使用可以参考这儿,主要讲的是ITK借助CMake在VS2010下的使用。CMake的作用解释明白了,那我们就可以翻译。
打开下载完成的CMake,打开bin文件夹里面的cmake-gui.exe,跳出这个界面,就是CMake的界面啦。
在Where is the source code:中填入下载完的ITK中CMakeLists.txt文件的路径,这个CMakeLists.txt文件就是CMake的可执行文件了,以后看到这种CMakeLists字样脑子里面就应该反应过来,“哦,这儿需要CMake翻译一下了”。在Where to build the binaries:中填入你想把翻译完的工程放哪儿,我是新建了一个ITK_build文件夹。然后把Advanced的勾上
按Configure,选择编译器,我的是Visual Studio 2012,然后正常就开始运行啦,时间大概在5-10分钟。这一步版本弄对了会很爽,一路DONE,DONE,DONE,要是有个什么不对了,各种报错。
Configure完成后,按Generate,这个很快的,看到done了,恭喜你,翻译成功。打开翻译后的工程文件,用Visual Studio打开ITK.sln文件,看一下解决方案,导入了多少个项目,我这儿遇到一个问题,导入的项目只有217个,而和我一起装的同学,用的全是同一版本的ITK、CMake、Visual Studio,导入了600多个项目,我不知道是怎么回事,先放在一遍,反正暂时没有报错,还算顺利。
按生成->生成解决方案,等待N久,看你的电脑配置,有的持续一下午,有的一小时就编译完了。ok,至此,ITK算是安装完成啦。
2. CUDA 4.2 (others are untested) https://developer.nvidia.com/cuda-toolkit-42-archive
这一步和上面重复了,确保已经安装完成了就ok
3. BOOST 1.55 (others are untested): http://sourceforge.net/projects/boost/files/boost-binaries/1.55.0/boost_1_55_0-msvc-10.0-64.exe/download
1. Locate ".\pyconvnet\CMakeLists.txt", run CMake and produce Visual Studio or makefile (untested)
这一步其实就是用CMake来翻译..\CADLab-master\LymphNodeRFCNNPipeline\pyconvnet路径下面的CMakeLists.txt,基本的步骤和上面的ITK翻译差不多,但是还是会遇到一堆问题。
对于这个清一色找不到boost的路径我也是没有办法,我就装作没看到,不管它啰。
对于ITK的路径找不到,我的解决方法是把ITK_DIR-NOTFOUND这行替换成ITK翻译完的ITK_build文件夹路径,这个靠谱。
对于这种找不到显卡的问题,我的解决方法是去设备管理器看看,发现是这种情况
那么直接把显卡驱动升级一下就可以了。最后,我CMake完是这么一个提示,有瑕疵,但是至少done了,就可以继续接下来的步骤。
2. Compile pyconvnet
用Visual Studio打开翻译完的文件夹下的pyconvnet.sln,还是生成->生成解决方案,编译完即可。
3. compiling PACKAGE should include all binaries in a zip file, which can be installed in Matlab using 'install_LymphNodeRFCNNPipeline.m', called by 'run_LymphNodeRFCNNPipeline.m')
4. NiftyReg http://sourceforge.net/projects/niftyreg/files/nifty_reg-1.3.9/, Pre-build version with VS2010 is provided. Otherwise rebuild the code in 'niftyreg-git_prebuild_vs10_x64r' and modify m-scripts accordingly.
This NiftyReg version from git:
$ git log
commit 390df2baaf809a625ed5afe0dbc81ca6a3f7c647
Author: Marc Modat
Date: Fri Nov 14 13:06:52 2014 +0000
Modified the bending energy computation so that it does not over-regularise