博主近来实在太忙,望大家见谅。这篇博客也是在忙乱当中赶制出来,文中诸多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测试
1、编译windows-caffe
1、修改commonsetting
cpu_only=true----编译libcaffe(视正告为毛病-否)
2、编译除matcaffe和pycaffe之外所有项(视正告为毛病-否)
2、移植ssd至windows-caffe
1、复制ubuntu-ssd下所有文件(除build,data,example和models以外)至windows-caffe,替换原来windows下对应文件
2、复制ssd_detection.cpp至classification,移除原来的classification.cpp(为了方便,无需重新配置)
3、编译libcaffe:5个windows-caffe文件(位于caffe/util)(signal_handler.cpp/hdf5.cpp/common.cpp/db_lmdb.cpp/io.cpp(我提供))替换对应文件,编译出错时,修改db_lmdb.cpp,复制if _defined(_MSC_VER)......#endif至db_lmdb.cpp文件重新编译
3、移层
1、在vs中添加复制后的layers(src/layer/),除roi_pooling之外全部加上(先不添加cu文件,只添加cpp,后面做gpu的时候再添加)
2、同时添加复制后的include(hpp头文件,位于/include/caffe/layers,除roi_pooling)
3、编译libcaffe---通过
4、编译caffe(视正告为毛病-否),提示缺少libboost库,vc++库目录添加,编译出错
5、类似bbox加入libcaffe,libcaffe/src/util全部加入libcaffe(现有的ssd)
6、重编译libcaffe,出错时在snprintf前加上下划线"_"(两个地方)
7、重编译libcaffe(视正告为毛病-否)---成功
8、再编译caffe---成功
4、编译ssd_detection
编译classification下的ssd_detection.cpp(加上libboost库目录)---成功
5、运行ssd_detection(将此项目设为启动项)
第2部份:GPU测试
1、修改commonsetting
cpu_only=false,cudnn=true
2、编译libcaffe,
1、缺少cudnn.h,vc++包括目录中添加~/cudnn⑺.0/cuda/include,再次编译出错declarationis incompation......
2、修改inline const char*(加入CUDNNWINAPI)cudnn...,再次编译,出错bnll_layer.cu(KBULL_THRESHOLD)
3、最后的KBNLL_THRESHOLD改成50,再次编译,出错errormsb3073:cmd毛病
4、生成事件(预先生成事件-否,后期生成事件-否),再次编译----成功
3、编译classification和添加cu文件(cpu时没有添加)
1、cudnn.h和cudnn.lib分别加入包括目录和库目录,编译-毛病
2、添加文件layer里的cu,solver里的cu和ctil里的cu
3、重启vs后删除这些层的cu,随后再次添加文件至相应工程下(de....cu,bb....cu,lstm....cu,norma....cu,permu....cu,recc....cu,smoo....cu,bbox.cpp),重编译libcaffe-出错
想问我为何这么麻烦对吧,哼,不告知你
4、bbox.cu注释2个trust和1个trust.sort(在哪自己找1下就行啦)
5、detection.cu注释regex...和detectioon.cpp注释rege...(在哪自己找1下就行啦)
6、detection.hpp注释boost/regex.hpp,再次编译libcaffe
4、编译除matcaffe和pycaffe外其他所有项
5、运行ssd_detection
若提示缺少cudnn.dll,找到文件加入/build/*64/debug便可
备注:
1、若不用cudnn,则在commonsetting中设置cudnn为false
2、cuda计算能力可以为3.0,3.5,5.0,5.2,6.1不等,在cudaarchitecture的compute和sm...中自己修改就行
3、ssd_detection中文件目录自己添加便可,这里不再累坠