版权声明:本文为博主原创文章,未经博主允许不得转载。个人网站: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:原谅我倒置的摄像头)