Jetson TX1开发笔记(四):使用Caffe对摄像机视频流中的目标进行识别

2019-05-25 22:45:23 浏览数 (1)

版权声明:本文为博主原创文章,未经博主允许不得转载。个人网站:http://cuijiahua.com。 https://cloud.tencent.com/developer/article/1433813

转载请注明作者和出处:http://blog.csdn.net/c406495762

嵌入式平台(Target): Jeston TX1

一、前言

代码语言:txt复制
安装好Jetpack3.0中所有的组件之后,TX1的/home目录中出现一个tegra_multimedia_api文件夹,这个文件夹包含了许多多媒体API实例。在~/tegra_multimedia_api/samples/11_camera_object_identification目录中,我们可以找到REAME文件,这个文件就是教我们如何运行这个摄像机目标识别实例的。

二、搭建Caffe环境

1.使用如下指令安装依赖包

代码语言:javascript复制
sudo apt-get install libboost-all-dev libprotobuf-dev libleveldb-dev libsnappy-dev
sudo apt-get install libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev
sudo apt-get install liblmdb-dev libblas-dev libatlas-base-dev python-numpy python-skimage python-pip python-opencv
sudo pip install protobuf

2.使用如下方法下载Caffe源码

下载url:https://github.com/BVLC/caffe

点击下图所示的Download ZIP,下载caffe-master.zip

将下载完成的caffe-master.zip拷贝到创建的~/caffe目录下。/your/path/to/caffe-master.zip为你的caffe-master.zip所在的目录。

代码语言:javascript复制
mkdir ~/caffe 
cp /your/path/to/caffe-master.zip ~/caffe
cd ~/caffe
unzip caffe-master

3.编译caffe源码

a)拷贝Makefile.config文件

代码语言:javascript复制
cd ~/caffe/caffe-master
cp Makefile.config.example Makefile.config

b)修改Makefile.config文件

代码语言:txt复制
取消USE_CUDNN := 1的注释;(去掉前面的”#”符号)
代码语言:txt复制
修改以下两行内容,保存并退出(wq):
代码语言:javascript复制
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

c)编译

代码语言:javascript复制
make all -j4
make runtest -j4
make pycaffe -j4
代码语言:txt复制
在make runtest的时候,时间有些久,需要耐心等待:

三、编译本例程需要使用的OpenCV

1.使用如下指令进入编译文件夹

代码语言:javascript复制
cd ~/tegra_multimedia_api/samples/11_camera_object_identification/opencv_consumer_lib

2.检查Makefile,确保以下两行的内容正确

代码语言:javascript复制
CUDA_DIR:=/usr/local/cuda
CAFFE_DIR:=$HOME/caffe/caffe-master

3.编译

代码语言:javascript复制
make -j4

四、下载训练好的Caffe模型

1.使用如下指令下载模型

代码语言:javascript复制
sudo pip install pyyaml
cd ~/caffe/caffe-master
./scripts/download_model_binary.py  models/bvlc_reference_caffenet/

2.使用如下指令获取ImageNet标签文件

代码语言:javascript复制
./data/ilsvrc12/get_ilsvrc_aux.sh

五、编译并运行实例

1.使用如下指令添加环境变量

代码语言:javascript复制
sudo vim ~/.bashrc
代码语言:txt复制
在~/.bashrc最后一行如下内容,保存并退出(wq):
代码语言:javascript复制
export TEGRA_ARMABI=aarch64-linux-gnu
export DISPLAY=:0
export LD_LIBRARY_PATH=$HOME/caffe/caffe-master/build/lib:/usr/local/cuda/lib64
代码语言:txt复制
然后使用指令如下:
代码语言:javascript复制
source ~/.bashrc

2.编译Caffe目标识别实例

代码语言:javascript复制
cd ~/tegra_multimedia_api/samples/11_camera_object_identification
make -j4

3.使用如下指令运行实例

代码语言:javascript复制
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

六、运行结果

代码语言:txt复制
TX1运行结果如下图所示,可以看到:帧率为20,识别结果在FPS下方显示:概率 - 类别(PS:原谅我倒置的摄像头)

0 人点赞