玩转Jetson Nano(六)安装caffe

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/beckhans/article/details/89393280

进入正文之前先说一个心得,昨天训练一个人脸识别模型,发现不一会就OOM异常,就是资源耗尽的异常。运行free -m一看,我的天啊,free内存只有不到400M。想了很多办法都不行,后来直接把ubuntu的桌面禁用,效果感人啊!!内存从300多M一下子到了3.3G有木有!!!

beckhans@Jetson:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        335M        3.3G         17M        234M        3.4G
Swap:            0B          0B          0B
# ubuntu关闭图形用户界面
sudo systemctl set-default multi-user.target
sudo reboot

# ubuntu启用图形用户界面
sudo systemctl set-default graphical.target
sudo reboot

(一)准备工作

在写本文之前我层N次安装caffe失败,都留下阴影了。好几次都想不用算了,但是caffe的例子实在是多,欲罢不能,硬着头皮趟出一条路。

1. 安装CUDA,cuDNN,以及OpenCV,nano已经将这些安装好了,但是需要配置一下,如何配置请看前文吧。下面列出如何检查这三样成功安装

 # 检查CUDA
nvcc -V    

 # 检查opencv
pkg-config opencv --modversion


# 检查cuDNN
cd /usr/src/cudnn_samples_v7/mnistCUDNN   #进入例子目录
sudo make     #编译一下例子
sudo chmod a+x mnistCUDNN # 为可执行文件添加执行权限
./mnistCUDNN # 执行

2. 创建Swap交换空间,不用Swap我一次都没有成功过,但是禁用桌面后能不能成功我还没试过。而且Swap空间还不能设的太大,我有一次设了10G,系统直接无法启动,不知道是不是Swap的原因

# 先禁用以前的
sudo swapoff /swapfile
 
# 修改swap 空间的大小为4G
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
 
# 设置文件为“swap file”类型
sudo mkswap /swapfile
 
# 启用swapfile
sudo swapon /swapfile

# 在/etc/fstab中添加下面代码,将swap空间永久保留,不执行这句重新启动后swap空间被释放
/swapfile            swap                   swap    defaults        0 0

3.安装依赖包

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
 
sudo apt-get install --no-install-recommends libboost-all-dev
 
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
 
sudo apt-get install git cmake build-essential

(二)开始安装caffe

1. 下载caffe

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

2. 生成Makefile.config文件

cd caffe
sudo cp Makefile.config.example Makefile.config
sudo vim Makefile.config

3.编辑Makefile.config

# 将下面三句前面的注释符号去掉
USE_CUDNN := 1
OPENCV_VERSION := 3
WITH_PYTHON_LAYER := 1

# 将下面这段话中20和21那部分删掉,删掉后如下
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
                -gencode arch=compute_35,code=sm_35 \
                -gencode arch=compute_50,code=sm_50 \
                -gencode arch=compute_52,code=sm_52 \
                -gencode arch=compute_60,code=sm_60 \
                -gencode arch=compute_61,code=sm_61 \
                -gencode arch=compute_61,code=compute_61

# 修改路径,注释掉原来的,换成新的
#INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
#LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/aarch64-linux-gnu /usr/lib/aarch64-linux-gnu/hdf5/serial

这里贴出我自己的Makefile.config,我觉得nano用户是可以通用的。

链接:https://pan.baidu.com/s/1WOcknNVO4tn3LXQxECZ7CQ 
提取码:xijq 
 

4.修改 caffe 目录下的 Makefile 文件:

# 这一句在425行
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)


# 这一句在181行
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

同样在上面的链接中也放了我的这个文件

5. 开始编译,我这部做了1个小时10分钟左右,编译成功后,打开python,import caffe试试吧

sudo make 

 

展开阅读全文

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