博主近來實(shí)在太忙,望大家見諒。這篇博客也是在忙亂當(dāng)中趕制出來,文中諸多1筆帶過不很清晰,望大家給予理解和包容
。任何疑問歡迎加群討論499820806
注意注意:記得看下文末備注部份額
所需文件:vs2013,windows-caffe,ubuntu-ssd,libboost,cudnn,opencv(可選),ssd_detect.cpp,io.cpp
windows-caffe地址:鏈接:http://pan.baidu.com/s/1hrGRu1A 密碼:j82r
ubuntu-ssd地址:鏈接:http://pan.baidu.com/s/1mhYuf7y 密碼:3jp2
libboost地址:鏈接:http://pan.baidu.com/s/1pLbBMpP 密碼:41tq
cudnn地址:鏈接:http://pan.baidu.com/s/1o8vWBhw 密碼:kdj4
opencv地址:鏈接:http://pan.baidu.com/s/1eSkHBj0 密碼:nhch
ssd_detect.cpp地址:鏈接:http://pan.baidu.com/s/1nvwECNv 密碼:e3yn
io.cpp地址:鏈接:http://pan.baidu.com/s/1i4CL7QP 密碼:g623
第1部份:CPU測(cè)試
1、編譯windows-caffe
1、修改commonsetting
cpu_only=true----編譯libcaffe(視正告為毛病-否)
2、編譯除matcaffe和pycaffe之外所有項(xiàng)(視正告為毛病-否)
2、移植ssd至windows-caffe
1、復(fù)制ubuntu-ssd下所有文件(除build,data,example和models以外)至windows-caffe,替換原來windows下對(duì)應(yīng)文件
2、復(fù)制ssd_detection.cpp至classification,移除原來的classification.cpp(為了方便,無需重新配置)
3、編譯libcaffe:5個(gè)windows-caffe文件(位于caffe/util)(signal_handler.cpp/hdf5.cpp/common.cpp/db_lmdb.cpp/io.cpp(我提供))替換對(duì)應(yīng)文件,編譯出錯(cuò)時(shí),修改db_lmdb.cpp,復(fù)制if _defined(_MSC_VER)......#endif至db_lmdb.cpp文件重新編譯
3、移層
1、在vs中添加復(fù)制后的layers(src/layer/),除roi_pooling之外全部加上(先不添加cu文件,只添加cpp,后面做gpu的時(shí)候再添加)
2、同時(shí)添加復(fù)制后的include(hpp頭文件,位于/include/caffe/layers,除roi_pooling)
3、編譯libcaffe---通過
4、編譯caffe(視正告為毛病-否),提示缺少libboost庫,vc++庫目錄添加,編譯出錯(cuò)
5、類似bbox加入libcaffe,libcaffe/src/util全部加入libcaffe(現(xiàn)有的ssd)
6、重編譯libcaffe,出錯(cuò)時(shí)在snprintf前加上下劃線"_"(兩個(gè)地方)
7、重編譯libcaffe(視正告為毛病-否)---成功
8、再編譯caffe---成功
4、編譯ssd_detection
編譯classification下的ssd_detection.cpp(加上libboost庫目錄)---成功
5、運(yùn)行ssd_detection(將此項(xiàng)目設(shè)為啟動(dòng)項(xiàng))
第2部份:GPU測(cè)試
1、修改commonsetting
cpu_only=false,cudnn=true
2、編譯libcaffe,
1、缺少cudnn.h,vc++包括目錄中添加~/cudnn⑺.0/cuda/include,再次編譯出錯(cuò)declarationis incompation......
2、修改inline const char*(加入CUDNNWINAPI)cudnn...,再次編譯,出錯(cuò)bnll_layer.cu(KBULL_THRESHOLD)
3、最后的KBNLL_THRESHOLD改成50,再次編譯,出錯(cuò)errormsb3073:cmd毛病
4、生成事件(預(yù)先生成事件-否,后期生成事件-否),再次編譯----成功
3、編譯classification和添加cu文件(cpu時(shí)沒有添加)
1、cudnn.h和cudnn.lib分別加入包括目錄和庫目錄,編譯-毛病
2、添加文件layer里的cu,solver里的cu和ctil里的cu
3、重啟vs后刪除這些層的cu,隨后再次添加文件至相應(yīng)工程下(de....cu,bb....cu,lstm....cu,norma....cu,permu....cu,recc....cu,smoo....cu,bbox.cpp),重編譯libcaffe-出錯(cuò)
想問我為何這么麻煩對(duì)吧,哼,不告知你
4、bbox.cu注釋2個(gè)trust和1個(gè)trust.sort(在哪自己找1下就行啦)
5、detection.cu注釋regex...和detectioon.cpp注釋rege...(在哪自己找1下就行啦)
6、detection.hpp注釋boost/regex.hpp,再次編譯libcaffe
4、編譯除matcaffe和pycaffe外其他所有項(xiàng)
5、運(yùn)行ssd_detection
若提示缺少cudnn.dll,找到文件加入/build/*64/debug便可
備注:
1、若不用cudnn,則在commonsetting中設(shè)置cudnn為false
2、cuda計(jì)算能力可以為3.0,3.5,5.0,5.2,6.1不等,在cudaarchitecture的compute和sm...中自己修改就行
3、ssd_detection中文件目錄自己添加便可,這里不再累墜