深度学习Tracking(1)——Learning to Track at 100 FPS with Deep Regression Networks(代码理解)

工程地址:【http://davheld.github.io/GOTURN/GOTURN.html

第一次看深度学习网络实现的工程代码,有很多内容和结构不理解,并且在Linux下跑网络工程代码没有IDE,无法调试,我也不知道在查看函数的时候如何跳转,因此看整个工程文件十分麻烦。因此自己也是边看边查边学。

下面开始解析该工程代码,可能存在一些偏差和错误,将会不断学习和修正。

一、工程结构

工程结构

工程主目录下有6个文件夹以及3个文件。

CMakeLists.txt:
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。CMake的所有语句都写在CMakeLists.txt文件中,当CMakeList.txt文件确定后,可以用ccmake命令对相关的变量值进行配置,这个命令必须指向CMakeList.txt所在的目录。配置完成后,应用cmake命令生成相应的Makefile(在UNIX like系统下)或者project文件(指定用Windows下的相应编程工具编译时)。
详细看博文:【http://blog.csdn.net/u012150179/article/details/17852273

build文件夹:
这里写图片描述

该文件夹内为编译之后生成的一些文件,具体我也不是很懂,之后再看。

cmake文件夹:
这里写图片描述

该文件夹是配置文件,指向相应的caffe模型,配置工程所需的库文件。
FindTinyXML.cmake的功能之后再去了解吧。。。

imgs文件夹内存放的是一张论文中功能实现的截图。

nets文件夹:
这里写图片描述

tracker.prototxt定义了网络的结构,利用netscope我们可以看到网络结构是这样的,并不复杂。
这里写图片描述
这里写图片描述
这里写图片描述
solver.prototxt文件是整个模型运行的参数配置文件。

models里是已经训练好的网络模型:
这里写图片描述

tracker_output里是工程的输出文件,包括videos等。

scripts文件:
这里写图片描述
该文件夹内是运行程序的一些脚本文件。实现的功能包括下载模型初始化(download_model_init.sh),下载训练好的模型(download_trained_model.sh),评估结果(evaluate_val.sh),保存测试运行结果(save_videos_test.sh),追踪过程展示(show_tracker_test.sh),追踪过程验证(show_tracker_val.sh),训练(train.sh)以及解压ImageNet(unzip_imagenet.sh)。还有一个文件夹Fscore_v1.0应该是计算Fscore时用到的相关文件。

src文件夹:
这里写图片描述
该文件夹内为c++源码。

由于服务器上运行无法实现可视化,所以我按照源码文档的说明,将测试数据运行结果保存下来(调用save_videos_test.sh脚本文件),然后观察其performance。下面将按照运行的流程对部分代码进行解释说明。

二、代码流程(根据需求调用的部分)
首先通过如下语句运行脚本文件以执行程序:

bash scripts/save_videos_test.sh  /*/dataPackage/vot2014

1、因此,进入save_videos_test.sh文件

#!/bin/bash

if [ -z "$1" ]
  then
    echo "No folder supplied!"
    echo "Usage: bash `basename "$0"` vot_videos_folder"
    exit
fi

# Choose which GPU the tracker runs on
GPU_ID=10

VIDEOS_FOLDER=$1

FOLDER=GOTURN1_test

DEPLOY_PROTO=nets/tracker.prototxt

CAFFE_MODEL=nets/models/pretrained_model/tracker.caffemodel

OUTPUT_FOLDER=nets/tracker_output/$FOLDER

echo "Saving output to " $OUTPUT_FILE

# Run tracker on test set and save vidoes 
build/save_videos_vot $VIDEOS_FOLDER $DEPLOY_PROTO $CAFFE_MODEL $OUTPUT_FOLDER $GPU_ID 

GPU_ID:这里可以修改使用的GPU编号,由于服务器上运行的程序较多,导致程序运行速度变慢,因此,要选择一个空闲的GPU使用。(新开一个终端,输入nvidia-smi就可以查看GPU使用情况。)

VIDEOS_FOLDER:$1指的是第一个参数,即指令后面紧跟的第一个参数,这里是输入的视频文件夹(事实上是图像文件夹);

DEPLOY_PROTO:该指令调用的模型,即网络结构
,但是存在未知参数。

CAFFE_MODEL:训练好的网络模型,经过训练,参数都已确定。

脚本文件的最后调用了save_videos_vot.cpp,因此下面进入该文件。

2、save_videos_vot.cpp

该文件在test文件夹下,代码内容如下:

#include <string>

#include <boost/lexical_cast.hpp>
#include <boost/filesystem.hpp>

#include <opencv/cv.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

#include "helper/high_res_timer.h"
#include "network/regressor.h"
#include "loader/loader_alov.h"
#include "loader/loader_vot.h"
#include "tracker/tracker.h"
#include "tracker/tracker_manager.h"

using std</
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值