2. Caffe安装脱坑指南

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zzpong/article/details/81592913

笔者感觉,相较于TensorFlow来说,Caffe的坑更多更深,而想在Windows系统的VS、Python与Matlab平台均调试成功则更是难上加难。为了降低调试难度,请务必使用Caffe安装包中所要求的各对应软件版本进行安装调试。网上有很多不错的安装教程,请酌情参考,在此不再赘述。
本文主要给出一些疑难问题的解决办法,若仍有疑问,请多读几遍。文中所使用的安装包为caffe-master,该包默认支持的软件为VS2013、Python2.7。


Visual Studio 部分

  • “未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0. props”以及“libcaffe加载失败”
    请在“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations”目录下放入下述文件,“V120”还是“V140”决定于你使用哪种平台工具集(请尽量安装VS2013,并在任意VS中选择V120工具集,以获得最佳体验)。

    获取方法请参考上一篇文章 https://blog.csdn.net/zzpong/article/details/80282814

  • cuDNN的文件路径在哪?之前我都是用它把CUDA安装文件直接覆盖的
    请不要把cuDNN文件包中文件对原CUDA安装文件进行覆盖安装,而要放在其他你喜欢的地方。caffe-master中的cuDNN路径(在CommonSettings.props中设置)与CUDA路径(在系统环境变量里设置,一般安装时会自动配置好)是分开的。切记路径设置正确,否则会报MSB3073的错误,下图就是该路径下不存在cuDNN文件的示例:


    上述图片出现路径双斜线错误是因为文件不存在,但也有的路径双斜线错误是真的在程序上多了一条斜线,比如下面的:

  • MSB4062: 未能从程序集 …\NugetPackages\OpenCV.2.4.10\build\native\private\coapp.NuGetNativeMSBuildTasks.dll 加载任务“NuGetPackageOverlay”。

    这个是真的多了一条斜线,修改位置…\NugetPackages\OpenCV.2.4.10\build\native\OpenCV.props文件下:将$(MSBuildThisFileDirectory)/private中的“/”删去即可:$(MSBuildThisFileDirectory)private。
    若还未解决问题,请删除NugetPackages路径下OpenCV.2.4.10文件夹,管理员身份打开Visual Studio,重新生成项目。(并非百分之百解决问题,若有完美解决方案,还望不吝赐教。)

  • MSB3721 “C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\bin\nvcc.exe” -ccbin … 已退出,返回代码为 1。 libcaffe …
    这是使用更高版本的CUDA(比如CUDA 8.0)导致的,因为新版本的bin路径已更换为“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin”。请将v8.0文件夹下的所有文件(因为除bin外其他文件夹下的文件之后也会要用到)拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA下再运行即可。

  • nvcc warning : The ‘compute_20’, ‘sm_20’, and ‘sm_21’ architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
    libcaffe——Project Properties——CUDA C/C++ ——Command Line —— Additional Options位置增加
    -gencode=arch=compute_50,code=\”sm_50,compute_50\”。

  • too few arguments in function call(在出现此问题时请优先解决,因为它会产生更多奇怪的错误)
    这是因为caffe-master包代码本身问题。在“cudnn.hpp”(请使用“解决资源方案管理器”搜索,或双击错误跳转)有:

    但查找声明我们可以看到,该函数
    这里写图片描述
    少了一个变量… 所以在缺失的地方补上对应的CUDNN_DATA_FLOAT或CUDNN_DATA_DOUBLE即可:
    这里写图片描述

  • 无法打开包括文件: “gpu/mxGPUArray.h”: No such file or directory
    如果打开详细诊断,你会看到在各种后缀为“_layer.cu”的文件都会出现这个错误:

    其实这儿不是cicc的问题,而是你使用的新版本Matlab库文件路径更改导致的。请在CommonSettings.props第55行增加”$(MatlabDir)\toolbox\distcomp\gpu\extern\include;”,将

    修改为
    即可。

  • 无法打开文件”libboost_python-vc140-mt-1_59.lib”
    这类问题大部分都是版本不符造成的,其中vc140是VS工具集的版本号。在这儿的问题表示,NuGet根据libcaffe中packages.config指示所下载的数据包跟你所需要的版本不符。比如在这儿就需要:

    才对(工具——NuGet包管理——管理解决方案的NuGet程序包)。但是直接下载就会报错“‘boost_python-vc140’与xxxx不兼容”等类似问题。解决办法:将所有需要的包收集齐并在packages.config中进行修改,关闭VS,删除所有原有包,编译libcaffe让其重新下载所需要的。但是这种方法很麻烦,之后会出现的新问题也无法预估,所以“安装VS2013,并使用V120进行编译”是更优的选择。

  • 请将caffe与libcaffe中的“将警告视为错误”选项修改为“否”,如果你不想被编码方式困扰的话

  • NuGet无法更新
    请使用魔法。不仅是NuGet,Python中的”pip install xxx”,Windows官网下载的Redistributable Package等等,凡是遇到卡住、丢包、VS2013离线安装进度缓慢等问题,请施加魔法。

  • Visual Studio的错误报告太简陋了,每次就只会说“我发生了一个错误”
    “VS菜单栏——工具——选项——项目和解决方案生成并运行——MSBuild项目生成输出详细级别/MSBuild项目生成日志文件详细级别——诊断”,给你详细到爆炸的错误报告。但是调试完成后请还原成“安静”,因为它运行起来真的好慢。

  • 已经执行了你所说的操作,为什么还是报错
    请重启编译软件,无论你是在调试VS、Python还是Matlab,修正后的重启可能会带来意想不到的效果。另外,VS重启后可能还需要对项目右键,选择“清理”然后再“重新生成”。


Python 部分

  • import skimage.io ImportError: No module named skimage.io
    如果你没使用最方便的安装包Anaconda2的话,那么对于选择纯净版Python2.7的你,可能会遇到以上错误,翻译过来就是“拓展包不够”。请到cmd中cd到你安装Python的目录(尤其是你有好几个版本的Python时),使用pip指令安装各种包,比如pip install scikit-image。若下载很慢或速度为零,请释放魔法。另外,请优先安装numpy包,下载地址,选择“numpy-1.15.0+mkl-cp27-cp27m-win_amd64.whl”,安装指令pip install “numpy-1.13.3+mkl-cp27-cp27m-win_amd64.whl”。

  • ImportError: No module named caffe
    请将…\caffe-master\Build\x64\Release\pycaffe中的caffe文件夹复制到…\Python27\Lib\site-packages文件夹下即可。


Matlab 部分

  • Invalid MEX-file ‘…\caffe_.mexa64’: Missing dependent shared libraries ‘xxx.dll’ required by ‘…\caffe_ .mexa64’
    请将…\caffe-master\Build\x64\Release文件夹下的所有dll文件都复制到…\caffe-master\Build\x64\Release\matcaffe+caffe\private文件夹下。(或者将…\caffe-master\Build\x64\Release设为环境变量)

  • Invalid MEX-file ‘…\caffe_.mexa64’: Missing dependent shared libraries ‘msvcr90.dll’ required by ‘python27.dll’ by ‘…\caffe_ .mexa64’
    网络上有很多“msvcr90.dll”文件,微软也提供了很多Microsoft Visual C++ 2008 SP1 Redistributable Package版本,来提供“msvcr90.dll”文件。但只有这个官方版本所提供的“msvcr90.dll”文件才能解决问题。安装此版本后,你将会在C盘拥有8个版本的“msvcr90.dll”:

    其中只有文件路径带有amd64的可以解决这个问题,笔者选的最后一个。将该文件拷贝到System32文件夹下,重启Matlab(必须)再运行测试代码即可。感谢这篇文章给笔者带来的灵感。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页