Win10+vs2015+python3.5+CUDA9.0的caffe库编译(一)

写在前面的废话

接到的第二个任务是使用mtcnn的方法进行人脸捕捉,具体的mtcnn介绍,这个算法现在不详细说。
由于要将这个的算法加入我们的工程中,工程是windows下的c++代码,而大多数现有的mtcnn代码c++端都是用caffe写的,所以我们用别人的代码前,要先开始配置自己的caffe环境了。

传统编译方法

Caffe库对linux系统的支持是比较好的,但是对windows支持就差很多,我踩了无数的坑才编译成功。

传统的编译方法是参考BVLC-win,这个windows分支之前的话下面是有windows文件夹的,里面放着一个vs的工程,可以直接打开修改prop进行编译,但是现在的已经没有这个文件夹了,如果找资料的话大部分参考还都停留在那个版本,这是第一个坑。

那么你就只能乖乖的按照它上面写的说明一部一部去做,先把cmake、python装好,需要gpu运算的把cuda和cudnn装好,CUDA和CUDNN安装。这里需要注意一下,它的主页已经说明了编译成功的配置组合

在这里插入图片描述

请按照这个来编译,不然很容易出错,不过这个方法最后我自己cmake出来工程,但是编译不出来。这个只能以后如果等我头发再少点,说不定就能编译出来了,毕竟越秃越强。

Win10+vs2013+python2.7+GPU版本caffe编译

那么如果不用官网的案例去从头编译,我们可以使用别人做好的半成品去编译caffe库。一起做这个项目的同事在网上找到了github上的一个vs2013和python2.7编译的案例caffe-microsoft,这个是微软提供的方法。

编译方法caffe在win10+vs2013+GPU版本下面的配置,这个如果需要的话自己查一下,编译起来问题也不是很多,遇到把警告视为错误的问题就在配置里面把警告视为错误这一项改成否,估计大部分人都能编译出来。

但是的问题是第一:这个caffe库是在v120工具集上进行的编译,我们的工程最少要v140

第二:接口是python2.7,由于这个例子年代比较久远,所以还是python2的接口,从2020年1月1号开始,python2将停止维护,包括现在使用起来,很多的库都已经不支持python2了,所以这个例子具有比较大的局限性。

Win10+vs2015+python3.5+GPU版本caffe编译

我们要更高版本的caffe库,在这里需要感谢一下大神happynearcaffe-windows,这是他的CSDN,编译的过程遇到错误不要着急,一个一个解决就能行了,有几个地方需要注意。

作者这边提供了第三方库的链接,下载下来以后加到对应的路径上,在prop文件中配置好,cuda的话虽然他写的是cuda8.0,但是编译的时候我用的cuda9.0才通过编译。

打开vs工程编译的时候,一定要先编译libcaffe,再编译caffe,最后如果需要python接口的话把pycaffe也编译一下就可以了。

如果编译失败了,把在根目录下生成的build的文件夹删掉,再重新编译,不然的话可能会继续同样的错误,反正这个过程是比较痛苦的,慢慢来。

C++调用caffe库的方法

编译成功以后,如果需要调用,c++端的配置可以参考c++配置caffe库,这里面的第三方库特别多,所以调用起来很麻烦。但这也没啥办法,c++就这样。

如果你的代码写好了,环境也配好了,编译通过了,生成了.exe文件,可能在运行的时候运行不了,这个时候有两种可能:

  1. 一种是缺少dll文件,把caffe库下面build文件里面和caffe.exe相同路径下的dll拷贝到你的.exe文件。

  2. 如果代码使用了gpu很可能是cuda的库或者dll没读到。

C++调用caffe库的方法

Python接口调用的方法比较简单,只需要把build下面找到pycaffe的文件夹,把文件夹里面的内容复制到python的Lib/ site-packages里面,然后打开cmd,进入python以后import一下,看看缺什么库就pip install一下就行,这个比较简单。

下一篇将介绍如何把自己定义的层或者别人定义的层加到caffe的库里面来调用。

猜你喜欢

转载自blog.csdn.net/weixin_41240513/article/details/104022308