英伟达jetson TX1的caffe-ssd配置

本文主要介绍,英伟达超级计算模块jetson tx1的刷机过程及其配置caffe的教程

刷Jetpack包

首先是刷英伟达官网提供的Jetpack2.3,该包的具体介绍见:https://developer.nvidia.com/embedded/jetpack

首先看所需要的一些硬件:

一个装有ubuntu14.04的host(官网要求host必须是14.04系统)

Usb hub(Tx1需要用键鼠对它进行操作)

键鼠

HDMI接口的显示屏

路由器 连接host和tx1

下载jetpack2.3安装包

https://developer.nvidia.com/embedded/jetpack

下面是主机上进行的:

在/home/ubuntu/新建一个文件夹JetPack-2.3用于存放下载文件JetPack-L4T-2.3-Linux-x64.run

cd /home/ubuntu/
mkdir JetPack
cp /home/ubuntu/Downloads/JetPack-L4T-2.3-linux-x64.run /home/ubuntu/JetPack


安装jetpack

cd /home/JetPack
chmod 777 JetPack-L4T-2.3-linux-x64.run
./ JetPack-L4T-2.3-linux-x64.run


Next

选择tx1

NEXT

由于我已经安装好了所有的包,所以这边的Action一栏是no action,如果没有安装过的话,会显示install xxx。

这里点击Next后,接受所有的申明,就开始了漫长的下载与安装…(我等了10多个小时)

没有选择安装opencv。

下载完后进入网络配置选项,选择通过路由器连接互联网,同时将TX1连接到与主机同一个路由器上。

选择eth0端口,点击Next

设置 TX 1 为 Force USB Recovery Mode (强制USB恢复模式)

关闭设备,移除电源适配器

用自带的Micro USB 转 USB 数据线连接主机与TX1

连接电源适配器

按下POWER按钮

按住FORCE RECOVERY 按钮不放开,同时按一下RESET按钮,等待两秒钟,松开FORCE RECOVERY 按钮

在上面这个终端用命令

lsusb

lsusb命令查看是否含有Nvidia Corp设备,确认存在后敲击Enter,开始将操作系统以及开发包拷贝到TX1,中途连接TX1的显示器会显示Ubuntu 16.04 桌面系统

待安装部署完成后,在主机上退出 JetPack L4T 即可,这样就完成了 JetPack 2.3 的配置

配置opencv3.1

OpenCV 3.1 是目前较为稳定的版本,因此推荐大家在TX1上安装OpenCV 3.1

下载 OpenCV 3.1

下载 OpenCV for Linux/Mac (Version 3.1)

https://github.com/Itseez/opencv/archive/3.1.0.zip

http://dev.t7.ai/jetson/opencv/

安装依赖库

sudo apt-add-repository universe
sudo apt-get update
sudo apt-get install -y build-essential make cmake cmake-curses-gui g++
sudo apt-get install -y libavformat-dev libavutil-dev libswscale-dev
sudo apt-get install -y libv4l-dev libeigen3-dev libglew1.6-dev libgtk2.0-dev


编译安装OpenCV 3.1

cd /home/Ubuntu/Downloads
cp opencv-3.1.0.zip /home/Ubuntu/
cd ..
unzip opencv-3.1.0.zip
cd opencv-3.1.0
mkdir build
cd build
cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN="5.3" -DCUDA_ARCH_PTX="" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCUDA_FAST_MATH=ON ..


由于CUDA 8.0不支持OpenCV的 GraphCut 算法,可能出现以下错误:

/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: 'NppiGraphcutState' has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:135:18: error: 'NppiGraphcutState' does not name a type
operator NppiGraphcutState*()
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:141:9: error: 'NppiGraphcutState' does not name a type
NppiGraphcutState* pState;
.......


此时需要修改OpenCV源码,使其不编译graphcuts.cpp 即可

进入opencv-3.1.0/modules/cudalegacy/src/目录,修改graphcuts.cpp文件,将:

#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)


修改为:

#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)


sudo make -j4 install


编译好的OpenCV库会默认安装到 /usr/local/文件夹下

配置caffe-ssd

添加依赖库:

 

sudo add-apt-repository universe
sudo apt-get update -y
sudo apt-get install python-pip python-dev
sudo apt-get install cmake -y
# General Dependencies
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev \
libhdf5-serial-dev protobuf-compiler -y
sudo apt-get install --no-install-recommends libboost-all-dev -y
# BLAS
sudo apt-get install libatlas-base-dev –y
sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran python-numpy
# Remaining Dependencies
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev -y
sudo apt-get install python-dev python-numpy –y


下载源码:

git clone https://github.com/weiliu89/caffe.git
cd caffe/
git checkout ssd #切换至分支ssd
cd /home/Ubuntu/caffe/python
for req in $(cat "requirements.txt"); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done


修改Makefile.config

cd /home/ubuntu/caffe
cp Makefile.config.example Makefile.config
gedit Makefile.config


1、将 USE_CUDNN := 1 取消注释
2、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/hdf5/serial/
3、# Uncomment if you're using OpenCV 3
OPENCV_VERSION := 3
4、# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1


说明:第1步的作用是使用cudnn编译,第2、3步是添加hdf5的路径,没有的话会出现找不到hdf5.h的错误。

gedit Makefile


进入文件,修改

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


为 

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


说明:修改这一步是为了避免出现string.h 'memcy' was not declared in this scope这样的错误,这种错误通常是由于gcc版本太新而导致的。

建立hdf5软连接

cd /usr/lib/aarch64-linux-gnu
sudo ln libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
sudo ldconfig #使连接生效


编译caffe

cd /home/Ubuntu/caffe
make all -j4
make test -j4
make runtest -j4(这一步,github给出的选项是可选,没必要搞其实)
make pycaffe -j4


都搞完之后,验证一下是否安装成功

cd python
import caffe


没有报错就ok

测试AlexNet


cd /home/ubuntu/caffe
./build/tools/caffe time --gpu 0 --model ./models/bvlc_alexnet/deploy.prototxt


测试SSD:

下载VGGNET的模型

http://www.cs.unc.edu/~wliu/projects/SSD/models_VGGNet_VOC0712_SSD_300x300.tar.gz

解压,把其中的VGGNET文件夹放到/home/Ubuntu/models/下

/home/ubuntu/models/VGGNET

这时候添加pycaffe的环境变量

 

cd
echo "export PYTHONPATH=/home/ubuntu/caffe/python" >> ~/.profile
source ~/.profile
echo $PYTHONPATH #检查环境变量的值


接下来是调用一个usb摄像头,并用抓取到的视频进行检测

在.profile文件中添加环境变量

echo "export LD_PRELOAD=/usr/lib/aarch64-Linux-gnu/libv4l/v4l1compat.so" >> ~/.profile


然后在examples/ssd/ssd_pascal_webcam.py文件中修改"webcam_id=1"即可。

然后运行:

cd /home/ubuntu/caffe
python examples/ssd/ssd_pascal_webcam.py


检测效果只有6帧,好慢呀!

问题

遇到问题:

can not find –lopenblas


解决问题:

sudo apt-get install libopenblas-dev


http://www.openblas.net/

 

 福利答谢大家!

感谢您阅读本篇文章,对此特别发放一个无门槛的现金红包,打开支付宝扫码领取,可以领到钱的哦!



 

本文参考:

https://github.com/weiliu89/caffe/tree/ssd#installation

http://blog.csdn.net/Jalong_Ma/article/details/52743923

http://blog.csdn.net/jesse_mx/article/details/53404563




  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值