Ubuntu16.04+Opencv2.4.13+caffe配置跟踪算法Goturn

在深度学习的过程中,参考了很多网上的资料,感谢很多大神把自己的经验分享给我们这些小白。今天在配置goturn的过程中遇到了很多问题,大部分在github上找到了解决方案,将自己的解决方法分享出来,希望对大家有用。有些问题参考网上资料解决了,但是并不明白原理,欢迎知情大神指点迷津^~^

算法背景资料:

先看一下跟踪效果(其他效果更好的视频之后再更新):


GOTURN跟踪算法_腾讯视频

文章的题目:《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版本的文件:

www.continuum.io/downloads

注意下载自己电脑对应的版本!

下载完成后在其路径下输入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

给出官网指南:

github.com/autocyz/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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容