第N+1次踩坑Caffe小计

2023-12-27 14:10
文章标签 caffe 小计

本文主要是介绍第N+1次踩坑Caffe小计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ubuntu16.04 Caffe 安装步骤记录(超详尽)

系统:Ubuntu 16.04+caffe+cuda9.1+cudnn+opencv2.4,默认是新电脑

第N+1次踩坑caffe,原来几次比较顺利,好久没配没想到遇到问题很大,趁机好好理解了下配置中遇到参数、路径、环境等的具体含义,不再机械化安装成功率高了不少,分享下。

 

安装流程细分为如下10个步骤,细化步骤粒度更易避免出错:

1、安装依赖包
2、禁用 nouveau
3、配置环境变量
4、下载 CUDA 8.0
5、安装 CUDA 8.0
6、验证 CUDA 8.0 是否安装成功
7、安装 cudnn
8、安装 opencv3.1
9、安装 caffe
10、安装 pycaffe notebook 接口环境

第1步 安装依赖包

安装后续步骤或环境必需的依赖包,依次输入以下命令:

 
  1. sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

  2.  
  3. sudo apt-get install --no-install-recommends libboost-all-dev

  4.  
  5. sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev

  6.  
  7. sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

  8.  
  9. sudo apt-get install git cmake build-essential

有一定几率安装失败而导致后续步骤出现问题,所以要确保以上依赖包都已安装成功,验证方法就是重新运行安装命令,如验证 git cmake build-essential是否安装成功共则再次运行以下命令:

 sudo apt-get install git cmake build-essential 

界面提示如下则说明已成功安装依赖包,否则继续安装直到安装成功。

 
  1. yhao@yhao-X550VB:~$ sudo apt-get install git cmake build-essential

  2. 正在读取软件包列表... 完成

  3. 正在分析软件包的依赖关系树

  4. 正在读取状态信息... 完成

  5. build-essential 已经是最新版 (12.1ubuntu2)。

  6. cmake 已经是最新版 (3.5.1-1ubuntu3)。

  7. git 已经是最新版 (1:2.7.4-0ubuntu1.1)。

  8. 下列软件包是自动安装的并且现在不需要了:

  9. lib32gcc1 libc6-i386

  10. 使用'sudo apt autoremove'来卸载它(它们)。

  11. 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 94 个软件包未被升级。

第2步 禁用 nouveau

安装好依赖包后需要禁用 nouveau,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动,禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,首先需要打开该文件,通过以下命令打开:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
  •  

打开后发现该文件中没有任何内容,写入:

blacklist nouveau option nouveau modeset=0 
  •  

保存时命令窗口可能会出现以下提示:

** (gedit:4243): WARNING **: Set document metadata failed: 不支持设置属性 metadata::gedit-position
  •  

无视此提示~,保存后关闭文件,注意此时还需执行以下命令使禁用 nouveau 真正生效:

sudo update-initramfs -u
  • 1

第3步 配置环境变量

同样使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc
  •  

打开后在文件最后加入以下两行内容:

 
  1. export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

  2.  
  3. export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

  • 注意下:

  • inux下profile和bashrc区别

        1./etc/profile
        用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的。

        2./etc/bashrc
        这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,那么这里面的东西就在起作用。

        3.~/.bash_profile
        用来设置一些环境变量,功能和/etc/profile 类似,但是这个是针对用户来设定的,也就是说,你在/home/user1/.bash_profile 中设定了环境变量,那么这个环境变量只针对 user1 这个用户生效.

        4.~/.bashrc
        作用类似于/etc/bashrc, 只是针对用户自己而言,不对其他用户生效。
        另外/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系.
     

 

第4步 下载 CUDA

进入 https://developer.nvidia.com/cuda-downloads ,依次选择 CUDA 类型然后下载即可。
这里写图片描述

第5步 安装 CUDA

第四步下载的CUDA中包含有 nvidia 显卡驱动,故此步骤 CUDA 的安装包括了 nvidia 显卡驱动的安装,此时注意你是否已经安装过 nvidia 显卡驱动,若无法保证已安装的 nvidia 显卡驱动一定正确,那就卸载掉之前安装的 nvidia 显卡驱动(卸载方法链接),然后开始安装 CUDA;若可以保证已安装正确的 nvidia 显卡驱动,则直接开始安装 CUDA ,在安装过程中选择不再安装 nvidia 显卡驱动。

后缀为该版本cuda要求的最低版本驱动,驱动向下兼容。也可以在软件服务里直接装驱动,然后安装cuda是,driver选择NO。

为了方便开始安装过程的路径查找,把下载的 CUDA 安装文件移动到 HOME 路径下,然后通过 Ctrl + Alt + F1 进入文本模式,输入帐号密码登录,通过 Ctrl + Alt + F7 可返回图形化模式,在文本模式登录后首先关闭桌面服务:

sudo service lightdm stop
  •  

然后通过 Ctrl + Alt + F7 发现已无法成功返回图形化模式,说明桌面服务已成功关闭,注意此步对接下来的 nvidia 驱动安装尤为重要,必需确保桌面服务已关闭。

Ctrl + Alt + F1 进入文本模式,然后运行 CUDA 安装文件进行安装,之前我们已经把 CUDA 安装文件移动至 HOME,直接通过 sh 命令运行安装文件即可:

sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs
  • 1

其中 cuda_8.0.61_375.26_linux.run 是我的 CUDA 安装文件名,而你需替换为自己的 CUDA 安装文件名,若此时忘记可直接通过 ls 文件查看文件名,这也是我建议把 CUDA 安装文件移动到 HOME 下的另一个原因。

执行此命令约1分钟后会出现 0%信息,此时按f快速增长,直到100%,然后按照提示操作即可,先输入 accept ,然后让选择是否安装 nvidia 驱动,这里的选择对应第5步开头,若未安装则输入 “y”,若确保已安装正确驱动则输入“n”。

剩下的选择则都输入“y”确认安装或确认默认路径安装,开始安装,此时若出现安装失败提示则可能为未关闭桌面服务或在已安装 nvidia 驱动的情况下重复再次安装 nvidia 驱动,安装完成后输入重启命令重启:

reboot
  •  

重启后登录进入系统,配置 CUDA 环境变量,与第3步相同,使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc
  •  

在该文件最后加入以下两行并保存:

 
  1. export PATH=/usr/local/cuda-8.0/bin:$PATH

  2.  
  3. export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

  • 其中cuda版本号按自己的cuda装

使该配置生效:

source ~/.bashrc

查看显卡是否安装成功:

$ sudo nvidia-smi
$ sudo nvidia-settings

第6步 验证 CUDA  是否安装成功

这里按照这个博客验证:https://blog.csdn.net/jonms/article/details/79318566

 

分别执行以下命令:

 
  1. cd /usr/local/cuda-X.X/samples/1_Utilities/deviceQuery

  2.  
  3. sudo make

  4.  
  5. ./deviceQuery

  •  

若看到类似以下信息则说明 cuda 已安装成功:

 
  1. ./deviceQuery Starting...

  2.  
  3. CUDA Device Query (Runtime API) version (CUDART static linking)

  4.  
  5. Detected 1 CUDA Capable device(s)

  6.  
  7. Device 0: "GeForce GT 740M"

  8. CUDA Driver Version / Runtime Version 8.0 / 8.0

  9. CUDA Capability Major/Minor version number: 3.5

  10. Total amount of global memory: 2004 MBytes (2100953088 bytes)

  11. ( 2) Multiprocessors, (192) CUDA Cores/MP: 384 CUDA Cores

  12. GPU Max Clock rate: 1032 MHz (1.03 GHz)

  13. Memory Clock rate: 800 Mhz

  14. Memory Bus Width: 64-bit

  15. L2 Cache Size: 524288 bytes

  16. Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)

  17. Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers

  18. Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers

  19. Total amount of constant memory: 65536 bytes

  20. Total amount of shared memory per block: 49152 bytes

  21. Total number of registers available per block: 65536

  22. Warp size: 32

  23. Maximum number of threads per multiprocessor: 2048

  24. Maximum number of threads per block: 1024

  25. Max dimension size of a thread block (x,y,z): (1024, 1024, 64)

  26. Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)

  27. Maximum memory pitch: 2147483647 bytes

  28. Texture alignment: 512 bytes

  29. Concurrent copy and kernel execution: Yes with 1 copy engine(s)

  30. Run time limit on kernels: No

  31. Integrated GPU sharing Host Memory: No

  32. Support host page-locked memory mapping: Yes

  33. Alignment requirement for Surfaces: Yes

  34. Device has ECC support: Disabled

  35. Device supports Unified Addressing (UVA): Yes

  36. Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0

  37. Compute Mode:

  38. < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

  39.  
  40. deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GT 740M

  41. Result = PASS

  •  

第7步 安装 cudnn

登录官网:https://developer.nvidia.com/rdp/cudnn-download ,下载对应 cuda 版本且 linux 系统的 cudnn 压缩包,注意官网下载 cudnn 需要注册帐号并登录,注意下载Library for Linux版本

这里写图片描述

下载完成后解压,得到一个 cudn 文件夹,该文件夹下include 和 lib64 两个文件夹,命令行进入 cudn/include 路径下,然后进行以下操作:

sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
  • 1

然后命令行进入 cudn/lib64 路径下,运行以下命令:

 
  1. sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库

  2. cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件

  3. sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成软衔接

  4. sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接

这里需要注意自己的版本:

sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 #生成软衔接
  • 1

起初我执行的也是上条链接 libcudnn.so.5.1.5 的命令,但是后面编译caffe时出错,报错内容为 /usr/bin/ld: 找不到 -lcudnn,所以这里需要先查看一下自己应该链接的是 libcudnn.so.5.1.10 还是 libcudnn.so.5.1.5 ,查看方法为下:

locate libcudnn.so
  • 1

我执行完后显示如下:

 
  1. yhao@yhao-X550VB:~$ locate libcudnn.so

  2. /home/yhao/.local/share/Trash/files/libcudnn.so

  3. /home/yhao/.local/share/Trash/files/libcudnn.so.5

  4. /home/yhao/.local/share/Trash/files/libcudnn.so.5.1.10

  5. /home/yhao/.local/share/Trash/files/cuda/lib64/libcudnn.so

  6. /home/yhao/.local/share/Trash/files/cuda/lib64/libcudnn.so.5

  7. /home/yhao/.local/share/Trash/files/cuda/lib64/libcudnn.so.5.1.10

  8. /home/yhao/.local/share/Trash/info/libcudnn.so.5.1.10.trashinfo

  9. /home/yhao/.local/share/Trash/info/libcudnn.so.5.trashinfo

  10. /home/yhao/.local/share/Trash/info/libcudnn.so.trashinfo

  11. /home/yhao/cuda/lib64/libcudnn.so

  12. /home/yhao/cuda/lib64/libcudnn.so.5

  13. /home/yhao/cuda/lib64/libcudnn.so.5.1.10

  14. /usr/local/lib/libcudnn.so

  15. /usr/local/lib/libcudnn.so.5

可以看到我的文件是 libcudnn.so.5.1.10 ,并没有 libcudnn.so.5.1.5,所以第三行命令我链接的是 libcudnn.so.5.1.10 ,这里第三行链接命令视你的查看结果而定。

安装完成后可用 nvcc -V 命令验证是否安装成功,若出现以下信息则表示安装成功:

 
  1. yhao@yhao-X550VB:~$ nvcc -V

  2. nvcc: NVIDIA (R) Cuda compiler driver

  3. Copyright (c) 2005-2016 NVIDIA Corporation

  4. Built on Tue_Jan_10_13:22:03_CST_2017

  5. Cuda compilation tools, release 8.0, V8.0.61

第8步 安装 opencv3.1

进入官网 : http://opencv.org/releases.html , 选择 3.1.0 版本的 source , 下载 opencv-3.1.0.zip
这里写图片描述

解压到你要安装的位置,命令行进入已解压的文件夹 opencv-3.1.0 目录下,执行:

 
  1. mkdir build # 创建编译的文件目录

  2.  
  3. cd build

  4.  
  5. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

  6.  
  7. make -j8 #编译

在执行 make -j8 命令编译到 92% 时可能会出现以下错误:

 
  1. modules/cudalegacy/src/graphcuts.cpp:120:54: error:

  2. ‘NppiGraphcutState’ has not been declared

  3. typedef NppStatus (*init_func_t)(NppiSize oSize,

  4. NppiGraphcutState** ppState, Npp8u* pDeviceMem);

  • 1
  • 2
  • 3
  • 4

这是由于opecv3.1与cuda8.0不兼容导致的。解决办法:

修改 /opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp 文件内容,如图:
这里写图片描述

编译成功后安装:

sudo make install #安装
  • 1

安装完成后通过查看 opencv 版本验证是否安装成功:

pkg-config --modversion opencv  
  • 1

第9步 安装 caffe

首先在你要安装的路径下 clone :

git clone https://github.com/BVLC/caffe.git
  • 1

进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :

sudo cp Makefile.config.example Makefile.config
  • 1

复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。

然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:

sudo gedit Makefile.config
  • 1

修改 Makefile.config 文件内容:

1.应用 cudnn

 
  1. #USE_CUDNN := 1

  2. 修改成:

  3. USE_CUDNN := 1

2.应用 opencv 版本

 
  1. #OPENCV_VERSION := 3

  2. 修改为:

  3. OPENCV_VERSION := 3

3.使用 python 接口

 
  1. #WITH_PYTHON_LAYER := 1

  2. 修改为

  3. WITH_PYTHON_LAYER := 1

4.修改 python 路径

 
  1. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

  2. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

 

#此处非常重要,注意查看python,若是anaconda下 则修改成相应的anaconda路径!!!!!!!

  1. 修改为:

  2. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

  3. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

 

然后修改 caffe 目录下的 Makefile 文件:

 
  1. 将:

  2. NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

  3. 替换为:

  4. NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

  • 1
  • 2
  • 3
  • 4
 
  1. 将:

  2. LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

  3. 改为:

  4. LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

然后修改 /usr/local/cuda/include/host_config.h 文件 :

 
  1. #error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

  2. 改为

  3. //#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

OK ,可以开始编译了,在 caffe 目录下执行 :

make all -j8
  • 1

这是如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。

编译成功后可运行测试:

sudo make runtest -j8
  • 1

这里写图片描述

如果显示结果为上图所示,则表示 caffe 已经成功安装。

10、安装 pycaffe notebook 接口环境

在上一步成功安装 caffe 之后,就可以通过 caffe 去做训练数据集或者预测各种相关的事了,只不过需要在命令行下通过 caffe 命令进行操作,而这一步 pycaffe 的安装以及 notebook 环境配置只是为了更方便的去使用 caffe ,实际上大多数都是通过 python 来操作 caffe 的,而 notebook 使用浏览器作为界面,可以更方便的编写和执行 python 代码。

首先编译 pycaffe :

 
  1. cd caffe

  2.  
  3. sudo make pycaffe -j8

  • 1
  • 2
  • 3

以下是我编译 pycaffe 时出现的错误:

python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录
  • 1

解决方法:

sudo apt-get install python-numpy
  • 1

此外也可能是由于 Makefile.config 文件中 python 路径设置错误出现的错误,可根据上一步检查一下,也可能出现别的错误,百度谷歌之~

编译 pycaffe 成功后,验证一下是否可以在 python 中导入 caffe 包,首先进入 python 环境:

python
  • 1

然后导入 caffe :

>>> import caffe
  • 1

若不报错则表示 caffe 的 python 接口已正确编译,但是应该不会那么顺利,以下是我导入 caffe 时出现的错误:

错误1:

File "<stdin>", line 1, in <module>   ImportError: No module named caffe
  • 1

解决方法:

 
  1. sudo echo export PYTHONPATH="~/caffe/python" >> ~/.bashrc

  2.  
  3. source ~/.bashrc

  • 1
  • 2
  • 3

错误2:

ImportError: No module named skimage.io
  • 1

解决方法:

pip install -U scikit-image #若没有安装pip: sudo apt install python-pip
  • 1

ok,最后一步,配置notebook环境

首先要安装python接口依赖库,在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。

在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。

首先进入 caffe/python 目录下,执行安装代码:

 
  1. sudo apt-get install gfortran

  2.  
  3. for req in $(cat requirements.txt); do sudo pip install $req; done

这篇关于第N+1次踩坑Caffe小计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/543382

相关文章

使用openpose caffe源码框架训练车辆模型常见错误及解决办法

错误1:what():  Error: mSources.size() != mProbabilities.size() at 51, OPDataLayer, src/caffe/openpose/layers/oPDataLayer.cpp 原因:这是因为在网络模型中数据源sources和probabilities设置的参数个数不一样导致的,一个数据源对应一个概率 解决方法:只需要将网络文

caffe训练openpose相关资源

CPMTransformationParameter参数解析: https://www.jianshu.com/p/063a2159f0f2 genLMDB.py: https://www.jianshu.com/p/1cae32cbd36d OpenPose 参数说明: https://blog.csdn.net/zziahgf/article/details/84668319 openp

在Ubuntu16环境下用QT调试caffe

用qt调试caffe需要配置一些东西具体方法可以参考一下链接: https://www.zhihu.com/question/27987666/answer/80728225 https://blog.csdn.net/xg123321123/article/details/52817658

ubuntu16.04 caffe python3.5 安装

在ubuntu16.04 下 caffe安装python3.5可以参考 https://blog.csdn.net/tingtie1438/article/details/82085199 但这里面有一些需要补充和修正其中的一些东西 一、其中“二. 安装依赖项”里面是这样的: sudo apt-get install python3-pipsudo apt-get install pytho

解决caffe 编译过程中protobuf版本冲突的问题

在编译caffe python3版本时一直会出现如下错误,(安装caffe python3具体方法可参考:https://blog.csdn.net/tingtie1438/article/details/82085199 ): 通过其错误信息可知是protobuf出了问题,现在网上教程一般都是默认安装的 libprotobuf-dev 和 protobuf-compiler,对于pytho

ubuntu16.04 caffe(github源码cpu)+python3.5+opencv3.4.5安装编译

https://www.cnblogs.com/hanjianjian90/p/10604926.html

caffe 配置过程中遇到的错误

错误1:  MSB3073: 命令“"D:\caffe-windows\windows\\scripts\BinplaceCudaDependencies.cmd" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin" "" false true "D:\caffe-windows\windows\..\Build\x64\D

找不到cannot find -lpython3.5m caffe anaconda python3 ubuntu16.04

LD -o .build_release/lib/libcaffe.so.1.0.0/usr/bin/ld: 找不到 -lpython3.5mcollect2: error: ld returned 1 exit statusMakefile:572: recipe for target '.build_release/lib/libcaffe.so.1.0.0' failedmake: ***

2015深度学习回顾:ConvNet、Caffe、Torch及其他

CVPR可谓计算机视觉领域的奥运会,这是vision.ai的Co-Founder,前MIT研究人员T. Malisiewicz针对CVPR'15尤其是Deep Learning的综述文章,谈到了ConvNet的Baseline,Caffe和Torch之间的分歧,ArXiv论文热,以及百度的ImageNet违规事件等。原文标题为:Deep down the rabbit hole: CVPR 20

windows环境Caffe安装配置步骤(无GPU)及mnist训练

最初的想法是动手熟悉Caffe,考虑到直接上手Ubuntu会有些难度,所以首先在windows环境下打个基础。有个插曲,台式机由于某些原因只能保持在32位系统,编译caffe.cpp时才发现系统不兼容,然后才换到64位的笔记本上进行操作。  前期准备:1.VS 2013   2. windows版的Caffe(https://github.com/BVLC/caffe/tree/window