【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程

【神经网络与深度学习】【CUDA开发】【VS开发】Caffe+VS2013+CUDA7.5+cuDNN配置成功后的第一次训练过程记录<二>

标签:【神经网络与深度学习】 【CUDA开发】 【VS开发】


紧着上一篇,我在windows上备份了三个版本的Caffe库以及visual studio 13的编译工程,主要当时是一步一步来的,想着先是only cpu,然后是支持cuda,最后是并入cuDNN。当我意识到程序要支持在没有GPU的设备上运行时,需要有不同的选择。这里主要记录关于三种不同的配置生成的库的差别及其在不同场景下的使用说明。


刚开始觉得,在部署配置的时候只需要定义如下的内容部分进行修改即可:

#ifdef CPU_ONLY
Caffe::set_mode(Caffe::CPU);
#else
Caffe::set_mode(Caffe::GPU);
#endif

即如果定义了CPU_ONLY,那么就将caffe的mode设置为CPU,否则设置为GPU,这就能够保证应该能在没有配置GPU的电脑上跑了!

可是中间出现了一个问题,就是运行的时候总出现一个问题,我就以为这个CAFFE+CUDA+cdDNN的库可能不支持CPU,于是就去尝试着将另外两个备份的CAFFE库也放入了D盘的第三方库中,并修改如下:

LIBS += D:\Caffe_3rdparty\OnlyCPULib\Release\libcaffe.lib

结果还是爆出同样的错误,于是开始配置在onlycpu的编译工程中添加classification,试验一下能不能进行分类,结果很显然可以。我就开始怀疑Qt版本与visual studio 2013版本究竟有哪些区别,最后是在Qt的工程中通过debug模式,找到了爆出错误的lib居然是libopenblas,我忽然意识到这两个版本使用的库文件是有一定的区别的,因为我当时调Qt的独立第三方库的时候用了别的版本的lib,因为GPU跑的时候没出现问题,所以就没有让两者保持完全一致,没料到居然在这里出现了问题。于是将Visual studio 2013中使用的openblas库放入了第三方库中,并修改.pro中的LIBS:

LIBS += D:\Caffe_3rdparty\lib\libopenblas.dll.a

再次运行就没有出现错误!真的让我浪费了好几个小时!


现在已经验证了Caffe+CUDA+cuDNN的库也是可以只在CPU上跑的,而onlyCPU版本是支持CPU而不支持GPU的,而且从我的观察上看,三个版本的libcaffe.lib的大小也是:

onlyCPU(306MB)<CPU+CUDA(335MB)<CPU+CUDA+cuDNN(371MB)

这其实也就说明的是一层包含一层吧!向下都应该保持兼容性的!


通过上面的分析,在部署深度神经网络进行分类识别时,只需要使用最后一版本即可!


2016-9-16 19:24

张朋艺 pyZhangBIT2010@126.com

上一篇:Nginx的配置文件简介及在Nginx中配置基于不同ip的虚拟主机


下一篇:为什么Smalltalk不流行