校园实战Nvidia jetson tx1 用caffe实现camera_object_identification

校园实战Nvidia jetson tx1 实现tegra_multimedia_api/samples/11_camera_object_identification

  1. tx1配置
  2. opencv3.1.0的安装
  3. caffe的安装
  4. tegra_multimedia_api/samples/11_camera_object_identification的实现

先上个图最后的结果图,帧率下面是目标可能性以及目标的类别,感觉实在不准=。=

1.tx1配置

网上教程很多,这里只强调一点,用Jetpack3.0刷tx1的时候,一定要在非校园网环境下,否则就会像我一样耽误了3天总会有安装包破损,最后去同学家里几个小时就搞定了,也没有换源。。还有就是尽量看老外的视频教程,如果看国内的教程一定要弄明白执行的命令的具体作用,切忌看到一个命令就复制粘贴。。装好系统后用下面的命令安装火狐浏览器
$ sudo apt-get install firefox
设置CPU and GPU clocks为最大:
$ sudo ./jetson_clocks.sh

2.opencv3.1.0的安装

一开始我直接装caffe的,是按照tegra_multimedia_api/samples/11_camera_object_identification的README文件来做的,但是过程中报了有关opencv库的错,运行
pkg-config --modversion opencv
发现opencv的版本是2.4.13,查了一下好像有些兼容问题,于是着手装3.1.0版本,漫漫长征开始了。。也可以先直接进行第3步安装caffe,跟我一样装不下去再回来进行这一步。此处参考https://docs.opencv.org/3.2.0/d6/d15/tutorial_building_tegra_cuda.html

1、把tx1 Home 目录里的samples、cuda-L4T、几个安装包都移到16 GB Volume等其他位置,给后面要装的东西腾出空间
2、卸载opencv2.4.13
3、下载opencv3.1.0

$ git clone https://github.com/opencv/opencv.git
完成后会在home自动创建opencv文件夹
$ cd opencv
$ git checkout -b v3.1.0 3.1.0
$ git cherry-pick 10896
(如果询问要不要执行,就输入 git commit -m “My message” 意思是按我说的执行)
$ git cherry pick cdb9c
$ git cherry-pick 24dbb

输入 cd 返回home目录
$ git clone https://github.com/opencv/opencv_extra.git
完成后会在home自动创建opencv_extra文件夹
$ cd opencv_extra
$ git checkout -b v3.1.0 3.1.0

4、安装依赖包
返回home目录
$ sudo apt-add-repository universe
$ sudo apt-get update
(校园网下报错可以用手机开热点。。)
$ sudo apt-get install
libglew-dev
libtiff5-dev
zlib1g-dev
libjpeg-dev
libpng12-dev
libjasper-dev
libavcodec-dev
libavformat-dev
libavutil-dev
libpostproc-dev
libswscale-dev
libeigen3-dev
libtbb-dev
libgtk2.0-dev
pkg-config

$ sudo apt-get install python-dev python-numpy python-py python-pytest
安装完以上依赖包,在home目录下建一个build文件夹,在build里面开始装opencv
$ mkdir build
$ cd build
$ cmake
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=/usr
-DBUILD_PNG=OFF
-DBUILD_TIFF=OFF
-DBUILD_TBB=OFF
-DBUILD_JPEG=OFF
-DBUILD_JASPER=OFF
-DBUILD_ZLIB=OFF
-DBUILD_EXAMPLES=ON
-DBUILD_opencv_java=OFF
-DBUILD_opencv_python2=ON
-DBUILD_opencv_python3=OFF
-DENABLE_PRECOMPILED_HEADERS=OFF
-DWITH_OPENCL=OFF
-DWITH_OPENMP=OFF
-DWITH_FFMPEG=ON
-DWITH_GSTREAMER=OFF
-DWITH_GSTREAMER_0_10=OFF
-DWITH_CUDA=ON
-DWITH_GTK=ON
-DWITH_VTK=OFF
-DWITH_TBB=ON
-DWITH_1394=OFF
-DWITH_OPENEXR=OFF
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0
-DCUDA_ARCH_BIN=5.3
-DCUDA_ARCH_PTX=""
-DINSTALL_C_EXAMPLES=ON
-DINSTALL_TESTS=OFF
-DOPENCV_TEST_DATA_PATH=…/opencv_extra/testdata
…/opencv

然后就可以make了
$ make -j4
然后测试一下
$ make test
(说实话我记得test的时候我报错了,然后没管继续往下走还是装好了。。)
$ make install
至此,opencv3.1.0就装好了,注意build、opencv、opencv_extra都是相关文件夹。
pkg-config --modversion opencv
应该能看到opencv版本是3.1.0了

3.caffe的安装

只想说最后是看老外的教程才搞定的https://www.jetsonhacks.com/2016/09/18/caffe-deep-learning-framework-64-bit-nvidia-jetson-tx1/

返回home目录
$ git clone https://github.com/jetsonhacks/installCaffeTX1.git
cd installCaffeTX1
sudo ./installCaffe.sh
(花费了很长时间,如果几个小时后在进行test的时候卡住不动,直接ctrl+c退出来不影响,可以用
$ tools/caffe time --model=models/bvlc_alexnet/deploy.prototxt --gpu=0
进行测试,比如博主自己。。)
发现前馈网络大概78ms就可以跑一次,还是蛮快
下面的工作就很简单啦

4.tegra_multimedia_api/samples/11_camera_object_identification的实现

因为tegra_multimedia_api/samples/11_camera_object_identification的README文件用的目录是Home/Work/caffe/caffe-master,所以记得改目录或者新建这样的文件夹把东西都拷进去。博主比较懒,就直接改的目录。
参考https://blog.csdn.net/yhaolpz/article/details/71375762
cd caffe
cp Makefile.config.example Makefile.config
用gedit修改Makefile.config文件
sudo gedit Makefile.config
1、取消USE_CUDNN := 1的注释;(去掉前面的”#”符号)
2、将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
3、将
#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1
4、
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
最后
$ make -j4

然后同样用gedit打开确定/tegra_multimedia_api/samples/11_camera_object_identification/opencv_consumer_lib里的makefile的路径
CUDA_DIR:=/usr/local/cuda
CAFFE_DIR:=$HOME/caffe

$ make

最后按照READMD的文件指示
sudo pip install pyyaml
cd ~/caffe/caffe-master
./scripts/download_model_binary.py models/bvlc_reference_caffenet/
./data/ilsvrc12/get_ilsvrc_aux.sh

sudo vim ~/.bashrc
export TEGRA_ARMABI=aarch64-linux-gnu
export DISPLAY=:0
export LD_LIBRARY_PATH=$HOME/caffe/build/lib:/usr/local/cuda/lib64
source ~/.bashrc

cd ~/tegra_multimedia_api/samples/11_camera_object_identification
make -j4
cd ~/tegra_multimedia_api/samples/11_camera_object_identification

最后执行
./camera_caffe -width 1920 -height 1080
-lib opencv_consumer_lib/libopencv_consumer.so
-model $HOME/caffe/caffe-master/models/bvlc_reference_caffenet/deploy.prototxt
-trained $HOME/caffe/caffe-master/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
-mean $HOME/caffe/caffe-master/data/ilsvrc12/imagenet_mean.binaryproto
-label $HOME/caffe/caffe-master/data/ilsvrc12/synset_words.txt
就可以看到开篇的图像啦。
最后贴个标签:北理工ASDG-UAV 赵小伟~

猜你喜欢

转载自blog.csdn.net/v2432538/article/details/84872570