windows下编译caffe与faster-rcnn+gpu(2080Ti)
一些背景:
题记:本来在笔记本上已经配置好caffe-gpu与caffe-frcnn,训练了caffe数据集,也验证了frcnn自带的例子。在使用frcnn的时候出现了意外,ZF模型的目标检测是正常的,VGG16gpu状态时,模型的目标检测一直显示超出内存,在使用系统监视器观察时,确实在调用VGG16的时候显存飙升,但是使用cpu时可以跑通,不过意料之中的慢,ZF网络的时候占用显存很少,可以跑通,具体情况见图,同时给出我的笔记本硬件:
dell g3-3590;
显卡:双显卡,集显+NVIDIA gtx1660Ti-MQ(被阉割过的意思,游戏本)
cpu:i7-9570H. 内存:8G
CUDA-8.0;cudnn加入后不能编译,会报一些错误,网上说是MQ类显卡没有适配的cudnn版本,就果断不用这个加速了。
第一张图:vgg16在cpu下运行的cpu状态:
第二张图:vgg16在gpu下的报错以及gpu状态
反正就是瞬间登顶,不知道是不是我设置错了,毕竟VGG16在Ubuntu16.04操作系统下,只需要3G显存就可以运行,在windows下出现了这种状况,一时头大,路过的大佬可以交流指导给点意见。
第三张图:ZF网络模型在gpu状态下的运行:
可以看到真的是毫无压力,令人迷惑。
步入正题:
windows10+2080Ti+vs2013+Anaconda2+cuda8.0+cudnn5+microsoft-caffe
因为上面出现的问题,我决定在2080Ti的台式机(windows系统)上配置类似环境,试图找找问题出在哪里,顺便也记录一下过程。
1.安装显卡驱动:
网址:选择显卡驱动版本
选择合适的版本安装就行,windows上显卡驱动安装比较简单。
2.安装VS2013
VS2013的安装很简单,有一个“软件安装管家”的工重号(不是本人的,也没有打广告的意思),里面有安装包和大白式安装步骤,直接**。我的安装:
3.安装Anaconda2:
网址:Anaconda官网
也没啥好说的,下载python2.7的版本吧,目前还能用,说是2020才不再维护,到时候应该会有更好的解决方法。
4.安装cuda8.0
之所以用cuda8.0,是因为笔记本上配置的是8.0,主要想用来找出vgg16不能运行的原因,并且一些新的版本可能不适用,这个我参考的博客中,最频繁,而且已经下载好。
网址:cuda-8.0下载地址
进去下载就好了,安装也是大白式操作,默认安装在C,我曾经试图安装在非系统盘,自动移植到C盘,惹不起。
5.安装cudnn-5.0
网址:cudnn下载地址
这个需要注册NVIDIA账号的,自己用邮箱注册一个,下载好对应版本,安装也很简单,将里面的三个文件夹(bin,include,lib)放在CUDA的安装路径下,有需要替换的直接点击替换就行了,具体如下:
另外,可以把这个解压缩出来的cudnn文件放在cuda并列的文件夹或者caffe的文件夹,因为这个路径后来要用到,放在哪图个方便就成:
5.microsoft-caffe
最好用这个版本的caffe吧,安装起来很轻松的,有直接的windows文件夹使用:Microsoft-caffe
下载好放在某个路径下,
1.打开~\caffe-maste\windows文件夹,将其中CommonSettings.props.example文件复制一份,重命名为CommonSettings.props
2.用VS打开CommonSettings.props
a. 把其中的CudaVersion改为8.0
b. 把PythonSupport改为true
c. 把CuDnnPath改为刚才拷贝cuda文件夹的地址,即C:\caffe-master
d. 把PythonDir改为~\Anaconda2
具体的看图,照葫芦画瓢:
更改完成后保存关闭
3.以管理员方式打开VS2013,在Vs内找到~/caffe/windows/caffe.sln,打开,编译其中的各个工具包,每个工具包编译的方式都一样,我很少会一起编译,因为极大可能会报错,别人博客有写整体编译,可以参考:安装Windows版Caffe与py-faster-RCNN(强烈推荐)
编译之前需要将调试方式由Debug改为Release,所编译的项目设为启动项目,且关闭“将警告视为错误”,具体如下:
选定某个要编译的项目右键:
再点击上图最下栏的属性,更改最后一项:
4.此时,几乎可以编译了(右键某个项目,如libcaffe,点击生成),但是接下来应该会报错,每个人的环境不一样,以我的为例子,我报错主要出在两个地方:
(1)opencv版本旧,这个要更新到2.4.11
错误 5 error MSB4062: 未能从程序集 S:\NugetPackages\OpenCV.2.4.10\build\native\\private\coapp.NuGetNativeMSBuildTasks.dll 加载任务“NuGetPackageOverlay”。未能加载文件或程序集“file:///S:\NugetPackages\OpenCV.2.4.10\build\native\private\coapp.NuGetNativeMSBuildTasks.dll”或它的某一个依赖项。系统找不到指定的文件。 请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。 S:\NugetPackages\OpenCV.2.4.10\build\native\OpenCV.targets 768 5 libcaffe
(2)glog版本太高。先卸载后安装,不要慌
Error 270 error MSB4062: **The “NuGetPackageOverlay” task could not be loaded from the assembly D:\caffe1\NugetPackages\gflags.2.1.2.1\build\native\private\coapp.NuGetNativeMSBuildTasks.dll. **Could not load file or assembly ‘file:///D:\caffe1\NugetPackages\gflags.2.1.2.1\build\native\private\coapp.NuGetNativeMSBuildTasks.dll’ or one of its dependencies. 系统找不到指定的文件。 Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. D:\caffe1\NugetPackages\glog.0.3.3.0\build\native\glog.targets 329 5 libcaffe
解决方法:
先讲明,解决方法要在编译之前,因为我是挨个编译的,所以下载完NugetPackages包后,每次要编译一个项目之前,都会进行下面两个操作:
(1)点击“项目”-管理Nuget程序包-“更新”(因为额我把opencv更新过了,所以更新下面就没了,但是还是要贴上来,形象一点):
(2)去“已安装的包里面”卸载glog,再在“联机”里面搜索“glog”进行安装:
为什么报错gflags要对glog进行更改,不直接对gflags进行更改呢?仔细看报错的最后一行,出现了关键字“glog”,猜测应该也是版本不匹配的原因吧。
5.至此,一个项目的已经预备好了,点击项目右键,生成即可如下图所示,其他项目也要挨个按照前面的步骤来,如果你的错误和我的不一样,那么每次编译之前也一定要注意做好自己的修改以免功亏一篑。
一般需要的工具无非就是求平均值,转换数据格式,构建python接口(编译pycaffe项目)等等。
6.import caffe
将将caffe-master\Build\x64\Release\pycaffe\caffe文件夹 ,放在~\Anaconda2\Lib\site-packages文件夹中 ,有冲突点击替换即可,然后在windows下打开终端,输入python,在输入import caffe不报错,编译完成了,至于训练,和ubuntu环境下基本一样,重新编译一些命令就可以了。
caffe结束。
faster-rcnn明天写。。累死了