在深度學(xué)習(xí)的過(guò)程中益兄,參考了很多網(wǎng)上的資料戒洼,感謝很多大神把自己的經(jīng)驗(yàn)分享給我們這些小白。今天在配置goturn的過(guò)程中遇到了很多問(wèn)題间唉,大部分在github上找到了解決方案绞灼,將自己的解決方法分享出來(lái)利术,希望對(duì)大家有用呈野。有些問(wèn)題參考網(wǎng)上資料解決了,但是并不明白原理印叁,歡迎知情大神指點(diǎn)迷津^~^
算法背景資料:
先看一下跟蹤效果(其他效果更好的視頻之后再更新):
文章的題目:《Learning to Track at 100 FPS with Deep Regression Networks》
算法簡(jiǎn)稱:GOTURN(Generic Object Tracking Using Regression Networks)
文章以及附件:http://davheld.github.io/GOTURN/GOTURN.html
算法源碼:https://github.com/autocyz/GOTURN
編譯配置
注:所有的cmake操作通過(guò)cmake gui來(lái)操作
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 安裝依賴庫(kù)
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的官方網(wǎng)站被冒,找到對(duì)于的python版本,下載對(duì)應(yīng)Linux版本的文件:
注意下載自己電腦對(duì)應(yīng)的版本轮蜕!
下載完成后在其路徑下輸入bash指令昨悼,完成安裝:
$ bash Anaconda2-4.3.0-Linux-x86_64.sh
2.3 安裝CUDA和Cudnn
安裝CUDA之前需要先安裝顯卡驅(qū)動(dòng),顯卡必須是NVIDIA顯卡跃洛。
在終端中輸入以下指令:
$ sudo? add-apt-repositoryppa:graphics-drivers/ppa
之后刷新軟件庫(kù)并安裝最新驅(qū)動(dòng):
$ 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
安裝完成后通過(guò)下面命令查看是否安裝成功:
$ nvidia-settings
如果出現(xiàn)以下畫面率触,說(shuō)明安裝成功:
安裝CUDA
CUDA(Compute Unified Device Architecture),是顯卡廠商N(yùn)VIDIA推出的運(yùn)算平臺(tái)汇竭,是一種由NVIDIA推出的通用并行計(jì)算架構(gòu)葱蝗,該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問(wèn)題。首先查看自己的GPU能不能進(jìn)行計(jì)算细燎,算力如何两曼,網(wǎng)址如下:
developer.nvidia.com/cuda-downloads
選擇自己對(duì)應(yīng)的版本和安裝方式,安裝指令如圖所示玻驻。安裝完之后檢查nvcc悼凑,即在終端中輸入nvcc應(yīng)出現(xiàn)相應(yīng)選項(xiàng)。
環(huán)境變量配置
安裝完畢后璧瞬,再聲明一下環(huán)境變量户辫,并將其寫入到 ~/.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為優(yōu)化GPU加速計(jì)算的程序,首先從官網(wǎng)上下載cudnn的安裝包嗤锉。這里一定要注意渔欢,安裝對(duì)應(yīng)自己cuda版本的的cudnn!
將安裝包解壓,將此安裝包放在home路徑下即可档冬,并在當(dāng)前路徑下進(jìn)行解壓,解壓后的文件夾名為cuda膘茎。
在home路徑下打開(kāi)終端:
$ cd cuda/include (進(jìn)入home/cuda/include文件夾)
$ sudo cp *.h /usr/local/cuda/include/? (注意這里是你自己的cuda的安裝地址,復(fù)制*.h文件)
關(guān)閉終端并重新打開(kāi)(也可以返回最開(kāi)始的目錄)
$ cd cuda/lib64
$ sudo cp libcudnn* /usr/local/cuda/lib64/
終端運(yùn)行:
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
安裝Caffe
前期準(zhǔn)備工作:
在下載caffe源碼前酷誓,先安裝兩個(gè)小工具披坏,一個(gè)是pip,python的包管理器盐数,另一個(gè)是Git棒拂,用了下載github上的源碼
$ sudo apt install python-pip
$ sudo apt-get install git-core
下面將caffe的源碼clone下來(lái)
$ git clone https://github.com/BVLC/caffe.git
下載完成之后,進(jìn)入CAFFE文件夾, 進(jìn)入里面的PYTHON文件夾,然后輸入
$ for req in $(cat requirements.txt); do pip install $req; done
好的,那么下面就準(zhǔn)備編譯了,準(zhǔn)備編譯之前帚屉,跟新一下anaconda的gcc庫(kù)谜诫,caffe在python接口下使用時(shí)只支持libgcc5版本,因此需要跟新
$ conda update libgcc
以下給出兩種安裝caffe的方式攻旦,普通安裝和cmake安裝喻旷。普通安裝caffe:根據(jù)給定的makefile文件安裝caffe。
普通安裝caffe參考博客:
blog.csdn.net/angelfish91/article/details/56019558
注意:Goturn中要求用cmake來(lái)install caffe牢屋。
cmake安裝caffe
給出官網(wǎng)教程:caffe.berkeleyvision.org/installation.html 最下面的CMake Build
$ mkdir build
$ cd build
$ cmake ..
$ make all
$ make install
$ make runtest
出現(xiàn)的錯(cuò)誤:
問(wèn)題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)
點(diǎn)擊caffe/build 文件夾中的CMakeCache.txt可以直接打開(kāi)cmake gui.(注意點(diǎn)擊advance才能出現(xiàn)這個(gè)選項(xiàng))
問(wèn)題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語(yǔ)法參考如下(路徑請(qǐng)根據(jù)自己情況):
$ ~/caffe3/build$ protoc --cpp_out=/home/sophie/caffe3/include/caffe/ caffe.proto
之后在
/home/sophie/caffe3/include/caffe/proto目錄下新建文件夾且预,命名為proto,然后把編譯出來(lái)的caffe.pb.h和caffe.pb.cc放進(jìn)去之后烙无,錯(cuò)誤消失锋谐。
3. Cmake編譯安裝Goturn
給出官網(wǎng)指南:
成功安裝就是以上的過(guò)程,caffe和opencv參見(jiàn)上面的教程截酷,但是其中還是遇到了很多問(wèn)題:
問(wèn)題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)
問(wèn)題解決涮拗!
問(wèn)題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)
注意修改路勁
測(cè)試階段
下載預(yù)訓(xùn)練模型,可以通過(guò)終端輸入:
bash scripts/download_trained_model.sh
也可以在windows下通過(guò)其他下載工具下載好迂苛,復(fù)制到nets/models/pretrained_model 文件下中
測(cè)試:
下載數(shù)據(jù)集:www.votchallenge.net/vot2014/dataset.html
運(yùn)行測(cè)試腳本(vot_folder為數(shù)據(jù)集文件夾名稱):
bash scripts/show_tracker_test.sh vot_folder
測(cè)試時(shí)間在我的顯卡(GTX1050)上平均為9.19ms