在深度学习的过程中,参考了很多网上的资料,感谢很多大神把自己的经验分享给我们这些小白。今天在配置goturn的过程中遇到了很多问题,大部分在github上找到了解决方案,将自己的解决方法分享出来,希望对大家有用。有些问题参考网上资料解决了,但是并不明白原理,欢迎知情大神指点迷津^~^
算法背景资料:
先看一下跟踪效果(其他效果更好的视频之后再更新):
文章的题目:《Learning to Track at 100 FPS with Deep Regression Networks》
算法简称:GOTURN(Generic Object Tracking Using Regression Networks)
文章以及附件:http://davheld.github.io/GOTURN/GOTURN.html
算法源码:https://github.com/autocyz/GOTURN
编译配置
注:所有的cmake操作通过cmake gui来操作
cmake安装:
$ sudo apt-get install cmake
cmake gui的安装:
$ sudo apt-get install cmake-qt-gui
1. Cmake编译安装Opencv
www.linuxidc.com/Linux/2014-12/110045.htm
2. Cmake编译安装Caffe
2.1 安装依赖库
caffe的的编译需要很多的lib文件和支持模块:
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
$ sudo apt-get install --no-install-recommends libboost-all-dev
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libhdf5-serial-dev
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
$ sudo apt-get install python-numpy
$ sudo apt-get install python-dev
2.2 安装Anaconda
下面给出了anaconda的官方网站,找到对于的python版本,下载对应Linux版本的文件:
注意下载自己电脑对应的版本!
下载完成后在其路径下输入bash指令,完成安装:
$ bash Anaconda2-4.3.0-Linux-x86_64.sh
2.3 安装CUDA和Cudnn
安装CUDA之前需要先安装显卡驱动,显卡必须是NVIDIA显卡。
在终端中输入以下指令:
$ sudo add-apt-repositoryppa:graphics-drivers/ppa
之后刷新软件库并安装最新驱动:
$ sudo apt-get update
$ sudo apt-get install nvidia-367
$ sudo apt-get install nvidia-settings nvidia-prime
$ sudo apt-get install mesa-common-dev
$ sudo apt-get install freeglut3-dev
安装完成后通过下面命令查看是否安装成功:
$ nvidia-settings
如果出现以下画面,说明安装成功:
安装CUDA
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台,是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。首先查看自己的GPU能不能进行计算,算力如何,网址如下:
developer.nvidia.com/cuda-downloads
选择自己对应的版本和安装方式,安装指令如图所示。安装完之后检查nvcc,即在终端中输入nvcc应出现相应选项。
环境变量配置
安装完毕后,再声明一下环境变量,并将其写入到 ~/.bashrc 的尾部
$ export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
安装CUDNN
cudnn为优化GPU加速计算的程序,首先从官网上下载cudnn的安装包。这里一定要注意,安装对应自己cuda版本的的cudnn!
将安装包解压,将此安装包放在home路径下即可,并在当前路径下进行解压,解压后的文件夹名为cuda。
在home路径下打开终端:
$ cd cuda/include (进入home/cuda/include文件夹)
$ sudo cp *.h /usr/local/cuda/include/ (注意这里是你自己的cuda的安装地址,复制*.h文件)
关闭终端并重新打开(也可以返回最开始的目录)
$ cd cuda/lib64
$ sudo cp libcudnn* /usr/local/cuda/lib64/
终端运行:
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
安装Caffe
前期准备工作:
在下载caffe源码前,先安装两个小工具,一个是pip,python的包管理器,另一个是Git,用了下载github上的源码
$ sudo apt install python-pip
$ sudo apt-get install git-core
下面将caffe的源码clone下来
$ git clone https://github.com/BVLC/caffe.git
下载完成之后,进入CAFFE文件夹, 进入里面的PYTHON文件夹,然后输入
$ for req in $(cat requirements.txt); do pip install $req; done
好的,那么下面就准备编译了,准备编译之前,跟新一下anaconda的gcc库,caffe在python接口下使用时只支持libgcc5版本,因此需要跟新
$ conda update libgcc
以下给出两种安装caffe的方式,普通安装和cmake安装。普通安装caffe:根据给定的makefile文件安装caffe。
普通安装caffe参考博客:
blog.csdn.net/angelfish91/article/details/56019558
注意:Goturn中要求用cmake来install caffe。
cmake安装caffe
给出官网教程:caffe.berkeleyvision.org/installation.html 最下面的CMake Build
$ mkdir build
$ cd build
$ cmake ..
$ make all
$ make install
$ make runtest
出现的错误:
问题1:
/usr/bin/ld: cannot find -lopencv_dep_cudart
collect2: error: ld returned 1 exit status
src/caffe/CMakeFiles/caffe.dir/build.make:30208: recipe for target 'lib/libcaffe.so.1.0.0' failed
make[2]: *** [lib/libcaffe.so.1.0.0] Error 1
CMakeFiles/Makefile2:304: recipe for target 'src/caffe/CMakeFiles/caffe.dir/all' failed
make[1]: *** [src/caffe/CMakeFiles/caffe.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
解决方法:参考:devtalk.nvidia.com/default/topic/970325/jetson-tx1/cmake-cannot-find-lopencv_dep_cudart/
即在终端输入:
$ ln -s /usr/local/cuda8-0/lib64/libcudart.so /usr/local/lib/
$ ln -s /usr/local/cuda8-0/lib64/libcudart.a /usr/local/lib/
Cmake的GUI中修改:
$set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
点击caffe/build 文件夹中的CMakeCache.txt可以直接打开cmake gui.(注意点击advance才能出现这个选项)
问题2:
fatal error: caffe/proto/caffe.pb.h: No such file or directory
#include "caffe/proto/caffe.pb.h"
解决方法:参考:blog.csdn.net/u012258999/article/details/56001541
用protoc从caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc
protoc语法参考如下(路径请根据自己情况):
$ ~/caffe3/build$ protoc --cpp_out=/home/sophie/caffe3/include/caffe/ caffe.proto
之后在
/home/sophie/caffe3/include/caffe/proto目录下新建文件夹,命名为proto,然后把编译出来的caffe.pb.h和caffe.pb.cc放进去之后,错误消失。
3. Cmake编译安装Goturn
给出官网指南:
成功安装就是以上的过程,caffe和opencv参见上面的教程,但是其中还是遇到了很多问题:
问题1:
/home/angelfish/GOTURN/src/native/vot.h:50:22: fatal error: trax.h: No such file or directory
compilation terminated.
CMakeFiles/GOTURN.dir/build.make:62: recipe for target 'CMakeFiles/GOTURN.dir/src/helper/bounding_box.cpp.o' failed
make[2]: *** [CMakeFiles/GOTURN.dir/src/helper/bounding_box.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:215: recipe for target 'CMakeFiles/GOTURN.dir/all' failed
make[1]: *** [CMakeFiles/GOTURN.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
解决方法:参考:github.com/davheld/GOTURN/issues/2
在GOTURN的CMakeList.txt文档中
# Add src to include directories.
include_directories(src)
后面加上
include_directories(src/native)
问题解决!
问题2:
vot.cpp:(.text+0x4cc): undefined reference to trax_cleanup' collect2: error: ld returned 1 exit status CMakeFiles/test_tracker_vot.dir/build.make:175: recipe for target 'test_tracker_vot' failed make[2]: *_\* [test_tracker_vot] Error 1 CMakeFiles/Makefile2:305: recipe for target 'CMakeFiles/test_tracker_vot.dir/all' failed make[1]: **\* [CMakeFiles/test_tracker_vot.dir/all] Error 2 Makefile:75: recipe for target 'all' failed make: **\* [all] Error 2
解决方法:参考:github.com/davheld/GOTURN/issues/1
下载 traxhttps://github.com/votchallenge/trax/ 并且cmake
在GOTURN的CMakeList.txt文档中:
add_executable (test_tracker_vot src/test/test_tracker_vot.cpp)
target_link_libraries(${PROJECT_NAME} /home/public/git/trax/build/libtrax.so)
target_link_libraries (test_tracker_vot ${PROJECT_NAME})
后添加:
target_link_libraries(${PROJECT_NAME} /home/sophie/trax/build/libtrax.so)
注意修改路劲
测试阶段
下载预训练模型,可以通过终端输入:
bash scripts/download_trained_model.sh
也可以在windows下通过其他下载工具下载好,复制到nets/models/pretrained_model 文件下中
测试:
下载数据集:www.votchallenge.net/vot2014/dataset.html
运行测试脚本(vot_folder为数据集文件夹名称):
bash scripts/show_tracker_test.sh vot_folder
测试时间在我的显卡(GTX1050)上平均为9.19ms