博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树莓派3B+ 64位Ubuntu安装caffe
阅读量:7222 次
发布时间:2019-06-29

本文共 4084 字,大约阅读时间需要 13 分钟。

树莓派3B+到货了,当然要把玩一番。

背景

树莓派从3代开始就用上了64位的处理器,奈何却没有更新上64位的系统。据说用上64位的系统,能提升不少的性能,甚至有人用。

拿着RPi3B+的我就对这个更感兴趣了,先折腾一下64位系统,再装个caffe吧。

我知道一个大大搞了个。

虽然说64位系统提升很大,但是由于缺乏官方的支持,民间高手研究出来的64位系统可能也略欠火候。

比如说,没有针对于3B+完美的稳定的Ubuntu64位系统。

由于缺乏官方网卡的驱动的支持,用大大的64位系统甚至还不能使用官方网卡,我只能掏出我的USB网卡。至于怎么配置wifi就不说了。

再比如说,尽管大大的系统很牛逼了,但是Ubuntu16.04系统依然没法在RPi3B+上用,而Ubuntu18.04可以。

安装

依赖包

首先先把这一大堆东西装了吧,当然,你一次性全部装完也行都一个样。

apt自带安装的python是2.7.15的,我觉得随意吧还行。

sudo apt updatesudo apt install -y gfortran cython sudo apt install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler gitsudo apt install --no-install-recommends libboost-all-devsudo apt install -y python-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev python-skimagesudo apt install -y python-pipsudo apt install -y build-essentialsudo apt install -y cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt install -y python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev

建立SWAP

安装后我发现该系统没有自带SWAP,SWAP分区对于1G小内存的树莓派来说,是至关重要的。

我提前放个图,这个图是我在编译的时候截的,表示内存使用最严重的时候,用了900+的Memory和800+的SWAP。

如果没有SWAP,那么编译就可能不会成功,因为会被杀掉。

首先我们在系统中划分1G空间来做SWAP,我用的位置的/var/swap

sudo dd if=/dev/zero of=/var/swap bs=1M count=1024sudo mkswap /var/swapsudo swapon /var/swap

如果以后还想开机自动挂载SWAP的话,可以这样:

sudo vim /etc/fstab# 添加 /var/swap swap swap defaults 0 0

如下图:

安装OpenCV

OpenCV还是必须要装的,这里我选一个2.4的OpenCV。

少废话,安pip包。

pip install pyzmq jsonschema pillow pip install numpy scipy pip install ipython jupyter pyyaml

其中numpy和scipy的编译难度可能较大,难在时间长、所需内存大造成SWAP换入换出严重阻塞IO。如果实在不行,可以使用apt之类的方法安装。

然后是下载OpenCV的包,并解压:

# 不喜欢的话,可以用aria2c wget https://github.com/opencv/opencv/archive/2.4.13.6.zipsudo apt install unzipunzip -o -d . 2.4.13.6.zip

开始编译OpenCV,这个是十分耗时的,一般是几个小时。

对于树莓派3B+,编译OpenCV的主要问题有两个:

  1. 内存不够,不够SWAP加了
  2. 太热,自备小风扇或水冷谢谢(水冷真的不是开玩笑。。)
cd opencv-2.4.13.6mkdir releasecd releasecmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..make -j4    sudo make installsudo apt install python-opencv

接下来我们检验一下Python中能不能正常导入OpenCV:

导入正常。

编译Caffe

先把Caffe拉下来:

cd git clone https://github.com/BVLC/caffecd caffecp Makefile.config.example Makefile.configvim Makefile.config

需要修改Makefile.config包括这几行:

# CPU_ONLY := 1INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

改成:

CPU_ONLY := 1INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/aarch64-linux-gnu/hdf5/serial/

P.S. 修改这3行的意思是:

  1. 修改为CPU模式,RPi没有GPU
  2. 添加hdf5的include
  3. 添加hdf5的lib,其中aarch64-linux-gnu是因为我用的是64位系统,如果是32位系统,可能是arm-linux-gnueabihf

开始编译

make all -j4make test -j4make runtest -j4

然后就是漫长的等待,结束后加上也把Python的给编译了

cd pythonpip install -r requirements.txtmake pycaffe -j4

然后在zsh或者bash环境中添加pycaffe的环境:

export PYTHONPATH=/home/ubuntu/extra/caffe/python:$PYTHONPATH

编译Caffe可能出现的错误:

可能错误1:undefined reference to cv::imread(cv::String const&, int)

错误详情:

CXX/LD -o .build_release/tools/convert_imageset.bin .build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)’ .build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&, cv::_InputArray const&, std::vector >&, std::vector > const&)’ .build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)’ collect2: error: ld returned 1 exit status make: * [.build_release/tools/convert_imageset.bin] Error 1

方法:

修改Makefile

LIBRARIES += glog gflags protobuf leveldb snappy lmdb boost_system hdf5_hl hdf5 m

改成

LIBRARIES += glog gflags protobuf leveldb snappy lmdb boost_system hdf5_hl hdf5 m opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
可能错误2:cannot find -lopencv_***

错误详情:

LD -o .build_release/lib/libcaffe.so.1.0.0/usr/bin/aarch64-linux-gnu-ld: cannot find -lopencv_imgcodecscollect2: error: ld returned 1 exit stautsMakefile:572: recipe for target '.build_release/lib/libcaffe.so.1.0.0' failedmake: *** [.build_release/lib/libcaffe.so.1.0.0] Error 1

方法:

sudo vim /etc/ld.so.conf.d/opencv.conf# 添加 /usr/local/lib

先这样吧

若有错误之处请指出,更多地关注。

转载地址:http://aikfm.baihongyu.com/

你可能感兴趣的文章
php 燕十八 观察者模式代码例子
查看>>
利用Android Lost通过互联网或短信远程控制安卓设备
查看>>
用JvisualVM监视远程tomcat
查看>>
python基础 - 文件读写
查看>>
成大事必备9种能力、9种手段、9种心态
查看>>
php 依赖注入容器
查看>>
matlab设定mex接驳的C/C++编译器
查看>>
Linux系统备份与恢复
查看>>
机场打车有感
查看>>
利用数组创建的顺序表实现各种功能
查看>>
POJ - 1062 昂贵的聘礼(最短路Dijkstra)
查看>>
tomcat运行模式APR安装
查看>>
【菜鸟也疯狂UML系列】——概述
查看>>
Oracle成长点点滴滴(2)— 权限管理
查看>>
文件包含漏洞检测工具fimap
查看>>
详细解说 STL 排序(Sort)(转)
查看>>
Maven单独构建多模块项目中的单个模块
查看>>
Xamarin Essentials教程剪贴板Clipboard
查看>>
malloc()函数(Linux程序员手册)及函数的正确使用【转】
查看>>
MFC限制edit控件的字符输入长度
查看>>