准备工作:
1、Happynear大神的caffe-windows:https://www.github.com/happynear/caffe-windows
2、以及他自己做的3rdparty:http://pan.baidu.com/s/1sk3QyyL里面有boost,leveldb,hdf5啊什么的依赖库
3、Boost:http://sourceforge.net/projects/boost/files/boost-binaries/1.56.0/
本人GPU是GeForce 410M,在此之前安装好vs2013和CUDA,opencv2.4.9,我的是CUDA6.5,英伟达官网上只有7.5的,大神build里面也用的CUDA7.5(但据说也不是版本越高越好的,看电脑配置),但是如果你不是,也不用着急,在VCXPROJ文件中把CUDA7.5改成你的版本就好啦~亲测可以编译~
安装参考:http://blog.csdn.net/happynear/article/details/45372231
http://blog.csdn.net/tjusxh/article/details/48463409
还有happynear大神的caffe-windows下载界面下面的安装说明:
https://www.github.com/happynear/caffe-windows
另附一个各个版本caffe配置的网址总结:
http://www.th7.cn/system/win/201507/121664.shtml
右击计算机-属性-高级系统设置-环境变量中更改path值,系统变量值啊什么的
按照:http://www.bubuko.com/infodetail-902302.html设置
CUDA_PATH_V6_5 安装好cuda6.5之后,会自动添加环境变量CUDA_PATH_V6_5
系统变量:(新建)
OPENCV_2_49 D:/Tools/opencv2.49/build/
BOOST_1_56 D:/Tools/boost_1_56_0
然后准备开始编译啦(在X64和release下)~
将3rdparty文件夹放在caffe-windows下:
打开buildvs2013里面的sln文件:
在release,X64条件下进行编译设置(按照大神推荐的)
1、 C/C++
常规-附加包含目录:
添加caffe文件夹里的src,include,3rdparty,以及3rdparty文件夹下面的include及其以下子目录
预处理器定义(添加):如果你的电脑的性能不太好,最好不要加上USE_CUDNN啊,宝宝之前加了虽然编译出来了但是训练的时候就提示cudnn怎么怎么样的~
_VARIADIC_MAX=10
WIN32
NDEBUG
_CONSOLE
USE_CUDNN
USE_OPENCV
USE_LEVELDB
USE_LMDB
2、 CUDA C/C++
Device-code generation
compute_20,sm_20
compute_30,sm_30
compute_35,sm_35
compute_50,sm_50
之前因为没有添加然后编译一直出现问题,网上说要根据自己电脑的性能添加,但我实在找不到我的版本适合的,所以就全都加上去了,也调试出来了。
3、 链接器
常规-附加库目录:
添加3rdparty文件夹下面lib文件
输入-附加依赖项:(release下的是这些,debug下的在后面加上个d)
caffelib.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
cudart.lib
cublas.lib
curand.lib
libprotobuf.lib
hdf5_tools.lib
hdf5_hl_fortran.lib
hdf5_fortran.lib
hdf5_hl_f90cstub.lib
hdf5_f90cstub.lib
hdf5_cpp.lib
hdf5_hl_cpp.lib
hdf5_hl.lib
hdf5.lib
zlib.lib
szip.lib
opencv_world300.lib
shlwapi.lib
leveldb.lib
cublas_device.lib
cuda.lib
libglog.lib
lmdb.lib
cudnn.lib
libopenblas.dll.a
libgflags.lib
嗯,就是这样,然后开始编译
编译过程中出现一些问题:
总结网上的列举如下:
A、(1)【conv_layer.cu】 错误78 error: too few arguments in function call;
(2)【error: MSB3721】
(3)无法打开输入文件caffelib.lib
(4)CUDA6.5target.pros什么的有错误?忘了。。。。
解决方法:
在最后加入第四个参数"false“,改成:
B、【transformer_layer.cu】和【gram_layer.cu】、【hotspot.cpp】、【tanh_layer.cpp】、【hdf5out——layer.cu】error C1083: 无法打开包括文件:"device_atomic_functions.hpp"
参考网上的方法:简单粗暴:device_atomic_functions.hpp标注掉。之后成功编译。
C、出现error MSB3721:
检查路径是否出现中文字符,改一下就好
D、math_functions.cu里面会出现红的,但是可以直接编译,木有事情可以编译出来~
然后就是一个个的编译啦~都是没有问题的;
历经两个星期,之前换了各种版本,vs2013,vs2012,CUDA6.5,CUDA7.5,boost1-5-6,boost1-5-8,反正一直都有问题,也不造肿么回事,可能才开始接触,太浪费时间了,之前用的网上的一个编译好的vs2012版本的caffewindows,不可以训练hdf5数据的模型,也不造这次可不可以,我先试试看哈~明天再说,先睡觉~
已成功训练自己的hdf5数据,开森~都可以用啊~感谢happynear大神啦~
顺便说一句,在又花了一天配置好MATLAB接口之后(其实很早就配置好了,只是宝宝没发现,木有把caffe.mexw64所在的文件夹加到MATLAB的pathtool里面,一直走弯路~),宝宝本来准备开森的重新开始训练模型,结果又出现了hdf5的header和library版本不一致的问题,一个是1.8.13,一个是1.8.15,然后,纠结了很久之后,就是在系统变量里加上这个,就好了~
然后就开始愉快的玩耍啦~让他训练吧,宝宝去睡觉啦~