本文主要介绍,英伟达超级计算模块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