博主近来实在太忙,望大家见谅。这篇博客也是在慌乱之中赶制出来,文中诸多一笔带过不很清晰,望大家给予理解和包容。
注意:
1、记得看文末备注部分
2、需要windows-ssd以及windows-ssd-mobilenet整个工程的请通过扣扣联系博主!
所需文件: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
第一部分:CPU测试
一、编译windows-caffe
1、修改commonsetting
cpu_only=true----编译libcaffe(视警告为错误-否)
2、编译除matcaffe和pycaffe以外所有项(视警告为错误-否)
二、移植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文件重新编译
三、移层
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---成功
四、编译ssd_detection
编译classification下的ssd_detection.cpp(加上libboost库目录)---成功
五、运行ssd_detection(将此项目设为启动项)
第二部分:GPU测试
一、修改commonsetting
cpu_only=false,cudnn=true
二、编译libcaffe,
1、缺少cudnn.h,vc++包含目录中添加~/cudnn-7.0/cuda/include,再次编译出错declarationis incompation......
2、修改inline const char*(加入CUDNNWINAPI)cudnn...,再次编译,出错bnll_layer.cu(KBULL_THRESHOLD)
3、最后的KBNLL_THRESHOLD改成50,再次编译,出错errormsb3073:cmd错误
4、生成事件(预先生成事件-否,后期生成事件-否),再次编译----成功
三、编译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以及一个trust.sort(在哪自己找一下就行啦)
5、detection.cu注释regex...以及detectioon.cpp注释rege...(在哪自己找一下就行啦)
6、detection.hpp注释boost/regex.hpp,再次编译libcaffe
四、编译除matcaffe和pycaffe外其他所有项
五、运行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中文件目录自己添加即可,这里不再累赘
任何问题请加唯一QQ2258205918(名称samylee) !!!
或唯一VX:samylee_csdn