Imaging Biomarkers and Computer-Aided Diagnosis Laboratory —?LymphNodeRFCNNPipeline
步驟來源:github
配置細(xì)節(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進(jìn)行編程蝇裤,我們需要準(zhǔn)備以下必備工具:
硬件平臺,就是顯卡频鉴,如果你用的不是NVIDIA的顯卡栓辜,那么只能說抱歉,其他都不支持CUDA垛孔。
這個NVIDIA的要求比較坑藕甩,我原來的筆記本也算算是高配,但檢查了一下顯卡周荐,只有intel狭莱,并沒有NVIDIA的,頓時感到無力概作,后來換了一臺電腦腋妙,選擇時首要的指標(biāo)就是:“有沒有NVIDIA的顯卡”,一般來說高配的電腦都有仆嗦,但大家一定要先確認(rèn)一下辉阶。
Windows7:右鍵桌面‘計(jì)算機(jī)’->選擇設(shè)備管理器->查看顯示適配器先壕,看看有沒有NVIDIA系列的顯卡瘩扼,不管什么型號的谆甜,NVIDIA系列的就ok
原來其實(shí)導(dǎo)師還想了一個方案,就是我的筆記本桌面遠(yuǎn)程集绰,用他的電腦规辱,但是我網(wǎng)上看了一下,感覺不靠譜栽燕,原因是:
你使用遠(yuǎn)程桌面連接登錄到另一臺服務(wù)器罕袋,該服務(wù)器上有顯卡支持CUDA,但你遠(yuǎn)程終端不能運(yùn)行CUDA程序碍岔。這是因?yàn)檫h(yuǎn)程登錄使用的是你本地顯卡資源浴讯,在遠(yuǎn)程登錄時看不到服務(wù)器端的顯卡,所以會報(bào)錯:“沒有支持CUDA的顯卡蔼啦!”
解決方法:1.遠(yuǎn)程服務(wù)器裝兩塊顯卡榆纽,一塊只用于顯示,另一塊用于計(jì)算捏肢;2.不要用圖形界面登錄奈籽,而是用命令行界面如telnet登錄。
3. Install CUDA 4.2 64-bit (https://developer.nvidia.com/cuda-toolkit-42-archive)
CUDA(Compute Unified Device Architecture)鸵赫,是顯卡廠商N(yùn)VIDIA推出的運(yùn)算平臺衣屏。 CUDA?是一種由NVIDIA推出的通用并行計(jì)算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問題藕赞。
按照自己電腦的情況依次下載安裝Download Toolkit, Drivers, SDK,我用的版本就是這個Toolkit, Drivers, SDK,大家可以直接下載。在安裝前首先確認(rèn)你的顯卡用的是NVIDIA了,而且更新了驅(qū)動。
雙顯卡的筆記本一定要注意顯卡安裝順序侨颈,首先要安裝集成顯卡(Internet)更新后重啟耘分,否則無法安裝獨(dú)立顯卡或容易報(bào)錯拜秧,如上圖楼肪。安裝NVIDIA Graphics Driver時也可能會遇到這個錯誤暂殖,完美解決NVIDIA最新顯卡驅(qū)動無法找到兼容的圖形硬件洋腮,百度上有各種解決方法坪稽,有的好用有的沒用,我用的是這個解決方案,親測有效肿孵。
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相當(dāng)于蘋果的app store大莫,可以用它下載很多python需要的包懈凹,比如matplotlib就可以杂腰。python和pip的安裝詳細(xì)步驟可以參考這個教程垃你,基本就沒什么別的問題了。需要注意的是numpy和scipy這兩個包用pip安裝會出來各種問題少辣,建議直接網(wǎng)上下載exe凌摄,雙擊安裝。下載地址:Numpy漓帅,Scipy锨亏。這兒要說明一下,雖然我的系統(tǒng)是64位的忙干,但我還是安裝了32位的python和其附屬包器予,因?yàn)槲以谧錾疃葘W(xué)習(xí)的實(shí)驗(yàn)的時候發(fā)現(xiàn)部分包64位不支持的。
另外捐迫,它有推薦Anaconda python distribution劣摇,我就安裝了。
這兒再提一嘴弓乙,安裝完python末融,你運(yùn)行程序,想看看到底python怎么樣的時候暇韧,可能會遇到上面的問題勾习,解決方法是去Visual Studio安裝的目錄下查找cl.exe文件,把文件目錄添加到系統(tǒng)路徑里面懈玻。
我用的是Visual Studio 2012巧婶,這個是下載地址,當(dāng)然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ù)挺大的,當(dāng)時我在國外下載的罚勾,不能翻墻的話可以在這兒下載毅人。
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
具體怎么修改呢俐载,因?yàn)閳?bào)錯的句子是optRF.randForestFilename地址找不到蟹略,只要Ctrl+F搜索randForestFilename,找到它的定義瞎疼,應(yīng)該是這句optRF.randForestFilename = [pwd,filesep,'trained_Forests\RF_regression.mat'];這兒有一個pwd,意思是當(dāng)前路徑壁畸,默認(rèn)的是你MATLAB安裝的路徑贼急,所以當(dāng)然不對。你去CADLab-master文件夾下搜索RF_regression.mat捏萍,找到了它的路徑太抓,把與pwd無關(guān)的刪掉,就是pwd了令杈,可以參見我的修改代碼走敌。
把上面的代碼改完,這個MATLAB程序就可以開始運(yùn)行一會兒了逗噩,大概一分鐘掉丽,然后繼續(xù)報(bào)錯:
按照上述方法做,估計(jì)還是會報(bào)出很多錯誤...因?yàn)橐_始讀代碼了纲刀,但是不要怕项炼,我也卡這兒了,先繼續(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的作用相當(dāng)于一個函數(shù)庫锭部,是C++寫的,在后續(xù)的調(diào)用時都是要用到的面褐。我用的不是v4.5.0版本 的拌禾。需要注意的是,ITK的版本需要與CMake的版本對應(yīng)起來展哭,具體怎么對應(yīng)需要去官網(wǎng)查蹋砚,我用的對應(yīng)版本是ITK和CMake扼菠。驗(yàn)證可行,建議用我的下載地址坝咐。
先把ITK和Cmake對應(yīng)的下載下來循榆,然后開始編譯ITK。
因?yàn)镮TK是C++的工程墨坚,編譯C++工程不同的系統(tǒng)都是不同的秧饮,Mac、Linux泽篮、Windows盗尸,而且不同版本的編譯器Visual Studio、Codeblocks也是不同的帽撑,對于這個跨平臺的編譯泼各,需要一個翻譯,把C++工程翻譯成不同的可執(zhí)行的工程亏拉,這個“翻譯”就是CMake扣蜻。進(jìn)一步的CMake的使用可以參考這兒,主要講的是ITK借助CMake在VS2010下的使用及塘。CMake的作用解釋明白了莽使,那我們就可以翻譯。
打開下載完成的CMake笙僚,打開bin文件夾里面的cmake-gui.exe芳肌,跳出這個界面,就是CMake的界面啦肋层。
在Where is the source code:中填入下載完的ITK中CMakeLists.txt文件的路徑亿笤,這個CMakeLists.txt文件就是CMake的可執(zhí)行文件了,以后看到這種CMakeLists字樣腦子里面就應(yīng)該反應(yīng)過來栋猖,“哦责嚷,這兒需要CMake翻譯一下了”。在Where to build the binaries:中填入你想把翻譯完的工程放哪兒掂铐,我是新建了一個ITK_build文件夾罕拂。然后把Advanced的勾上
按Configure,選擇編譯器全陨,我的是Visual Studio 2012爆班,然后正常就開始運(yùn)行啦,時間大概在5-10分鐘辱姨。這一步版本弄對了會很爽柿菩,一路DONE,DONE雨涛,DONE枢舶,要是有個什么不對了懦胞,各種報(bào)錯。
Configure完成后躏尉,按Generate,這個很快的后众,看到done了胀糜,恭喜你,翻譯成功蒂誉。打開翻譯后的工程文件教藻,用Visual Studio打開ITK.sln文件,看一下解決方案右锨,導(dǎo)入了多少個項(xiàng)目括堤,我這兒遇到一個問題,導(dǎo)入的項(xiàng)目只有217個绍移,而和我一起裝的同學(xué)悄窃,用的全是同一版本的ITK、CMake登夫、Visual Studio广匙,導(dǎo)入了600多個項(xiàng)目允趟,我不知道是怎么回事恼策,先放在一遍,反正暫時沒有報(bào)錯潮剪,還算順利涣楷。
按生成->生成解決方案,等待N久抗碰,看你的電腦配置狮斗,有的持續(xù)一下午,有的一小時就編譯完了弧蝇。ok碳褒,至此,ITK算是安裝完成啦看疗。
2. CUDA 4.2 (others are untested)?https://developer.nvidia.com/cuda-toolkit-42-archive
這一步和上面重復(fù)了沙峻,確保已經(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)
這一步其實(shí)就是用CMake來翻譯..\CADLab-master\LymphNodeRFCNNPipeline\pyconvnet路徑下面的CMakeLists.txt,基本的步驟和上面的ITK翻譯差不多两芳,但是還是會遇到一堆問題摔寨。
對于這個清一色找不到boost的路徑我也是沒有辦法怖辆,我就裝作沒看到是复,不管它啰删顶。
對于ITK的路徑找不到,我的解決方法是把ITK_DIR-NOTFOUND這行替換成ITK翻譯完的ITK_build文件夾路徑淑廊,這個靠譜逗余。
對于這種找不到顯卡的問題,我的解決方法是去設(shè)備管理器看看蒋纬,發(fā)現(xiàn)是這種情況
那么直接把顯卡驅(qū)動升級一下就可以了猎荠。最后,我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