Imaging Biomarkers and Computer-Aided Diagnosis Laboratory —?LymphNodeRFCNNPipeline
步驟來源:github
配置細節(jié)撰寫人:Zongwei Zhou
我使用的是Windows 7,64位系統(tǒng),如果碰巧一樣的話就直接按照提供的地址下載安裝即可,可以巧妙地避開很多坑。
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

原來其實導師還想了一個方案,就是我的筆記本桌面遠程,用他的電腦,但是我網(wǎng)上看了一下,感覺不靠譜,原因是:
你使用遠程桌面連接登錄到另一臺服務器,該服務器上有顯卡支持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安裝會出來各種問題,建議直接網(wǎng)上下載exe,雙擊安裝。下載地址:Numpy,Scipy。這兒要說明一下,雖然我的系統(tǒng)是64位的,但我還是安裝了32位的python和其附屬包,因為我在做深度學習的實驗的時候發(fā)現(xiàn)部分包64位不支持的。
另外,它有推薦Anaconda python distribution,我就安裝了。

這兒再提一嘴,安裝完python,你運行程序,想看看到底python怎么樣的時候,可能會遇到上面的問題,解決方法是去Visual Studio安裝的目錄下查找cl.exe文件,把文件目錄添加到系統(tǒng)路徑里面。

我用的是Visual Studio 2012,這個是下載地址,當然Visual Studio各個版本的地址也有,大家可以自行挑選,不建議安裝高版本的,原因是在后續(xù)的配置中,往往會不支持高版本。
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
數(shù)據(jù)挺大的,當時我在國外下載的,不能翻墻的話可以在這兒下載。
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)
劃線的那句不要信,把該添加路徑的都添加了,穩(wěn)妥,不然各種找不到函數(shù)的問題煩死你。


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程序就可以開始運行一會兒了,大概一分鐘,然后繼續(xù)報錯:

按照上述方法做,估計還是會報出很多錯誤...因為要開始讀代碼了,但是不要怕,我也卡這兒了,先繼續(xù)把下面幾個步驟完成再來細讀代碼。
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的作用相當于一個函數(shù)庫,是C++寫的,在后續(xù)的調用時都是要用到的。我用的不是v4.5.0版本 的。需要注意的是,ITK的版本需要與CMake的版本對應起來,具體怎么對應需要去官網(wǎng)查,我用的對應版本是ITK和CMake。驗證可行,建議用我的下載地址。
先把ITK和Cmake對應的下載下來,然后開始編譯ITK。
因為ITK是C++的工程,編譯C++工程不同的系統(tǒng)都是不同的,Mac、Linux、Windows,而且不同版本的編譯器Visual Studio、Codeblocks也是不同的,對于這個跨平臺的編譯,需要一個翻譯,把C++工程翻譯成不同的可執(zhí)行的工程,這個“翻譯”就是CMake。進一步的CMake的使用可以參考這兒,主要講的是ITK借助CMake在VS2010下的使用。CMake的作用解釋明白了,那我們就可以翻譯。
打開下載完成的CMake,打開bin文件夾里面的cmake-gui.exe,跳出這個界面,就是CMake的界面啦。

在Where is the source code:中填入下載完的ITK中CMakeLists.txt文件的路徑,這個CMakeLists.txt文件就是CMake的可執(zhí)行文件了,以后看到這種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久,看你的電腦配置,有的持續(xù)一下午,有的一小時就編譯完了。ok,至此,ITK算是安裝完成啦。
2. CUDA 4.2 (others are untested)?https://developer.nvidia.com/cuda-toolkit-42-archive
這一步和上面重復了,確保已經(jīng)安裝完成了就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文件夾路徑,這個靠譜。

對于這種找不到顯卡的問題,我的解決方法是去設備管理器看看,發(fā)現(xiàn)是這種情況

那么直接把顯卡驅動升級一下就可以了。最后,我CMake完是這么一個提示,有瑕疵,但是至少done了,就可以繼續(xù)接下來的步驟。

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