If you fail to install and run this tracker, please email me (zhangyunhua@mail.dlut.edu.cn)

Introduction

This repository includes tensorflow code of MBMD (MobileNet-based tracking by detection algorithm) for VOT2018 Long-Term Challenge. The corresponding arxiv paper has been drafted on Arxiv. Learning regression and verification networks for long-term visual tracking. Yunhua Zhang, Dong Wang, Lijun Wang, Jinqing Qi, Huchuan Lu

Prerequisites

python 2.7 ubuntu 14.04 cuda-8.0 cudnn-6.0.21 Tensorflow-1.3-gpu NVIDIA TITAN X GPU

Pretrained model

The bounding box regression's architecture is MobileNet, and the verifier's architecture is VGGM. The pre-trained model can be downloaded at https://drive.google.com/open?id=1g3aMRi6CWK88FOEYoQjqs61fY6QvGW1Z. Then you should copy the two files to the folder of our code.

Integrate into VOT-2018

The interface for integrating the tracker into the vot evaluation tool kit is implemented in the module python_long_MBMD.py. The script tracker_MBMD.m is needed to be copied to vot-tookit.

CPU manner

If you want to run this code on CPU, you need to just set os.environ ["CUDA_VISIBLE_DEVICES"]="" in the begin of python_long_MBMD.py

MobileNet based tracking by detection algorithm(MBMD)

大家好,在今年德国慕尼黑召开的ECCV Visual Object Tracking Workshop上,我们的算法有幸在SiameseRPN的巨大压力下,获得了Long-term Challenge的冠军。代码已开源在xiaobai1217/MBMD,训练和测试代码未来将在VOT2018官方网站上发布。

Visual-Object-Tracking Challenge (VOT) 是当前国际上在线目标跟踪领域最权威的测评平台,由伯明翰大学、卢布尔雅那大学、布拉格捷克技术大学、奥地利科技学院联合创办,旨在评测在复杂场景下单目标跟踪的算法性能。今年的VOT2018比赛中引入了Long-term Challenge:每个视频在2000帧至2万帧左右,被跟踪目标频繁离开视野,然后再次出现。因此,要求跟踪算法必须具有判断目标是否在当前帧出现和全图搜索目标的能力。Long-term比赛有两个任务,分别是长时跟踪(Long-term Tracking)和全图检测(Re-detection Experiment)。

方案简介:

Motivation: 匹配网络通过预训练能够适应在线跟踪时目标外观的变化,但是对干扰物区分度不够;分类网络能够很好地区分出干扰物,却很难适应目标外观的变化。如果用单一网络(匹配或分类),很难通过网络输出判断目标是否出现在当前帧,并执行全图搜索。如下图:

Algorithm: 如下图所示,我们的算法由两部分组成,一个基于匹配的回归网络和一个基于分类的验证网络。

算法框架

  • 回归网络有两个输入,分别是局部搜索区域和目标图像块。局部搜索区域以上一帧目标位置为中心,四倍目标大小在当前帧裁得。在每一帧,回归网络在搜索区域内提出一些和目标相似的候选框,每个候选框都有一个描述相似度的分值。验证网络在线学习一个分类器,它首先检验和目标最像的候选框是否是目标,若是,则此目标框为当前帧跟踪结果。如果最像的候选框被验证网络分为背景,则验证网络将从候选框中选择一个分类为前景的作为当前帧跟踪结果。如果两个网络均找不到一个候选框既与目标相似又被分类为前景,那么Tracker将开启全图搜索模式,即从图片左上角开始,裁出一个局部搜索区域,依次搜索全图,横向步长为目标长的一半,纵向步长为目标宽的一半。

  • 匹配网络通过离线训练而具备在一个区域内定位相似物体的能力。它采用SSD检测框架和MobileNets结构作为特征提取部分,使用了ILSVRC2014 Object Localization Dataset 和ILSVRC2015 Video Object Detection Dataset两个数据集。预训练时不使用任何类别标签信息。上支路输入为局部搜索区域,输出两种尺寸的特征图(1919和1010)。我们采用两种尺度来处理目标大小剧烈变化。下支路输入目标图像块(第一帧给定的待追踪目标),输出一个特征向量。两路的特征图经过融合得到的特征图输入到后面的候选区域生成网络(Region Proposal Network,RPN),并由RPN模块输出编码了候选框信息的特征图,随后送入到非极大值抑制模块(Non-Maximum-Suppression)得到最终候选框。融合过程如下图所示(以19*19尺寸为例):

  • 验证网络和MDNet的结构相似(VGGM结构),输入一个107*107的图片块,输出一个二维向量,分别是前景和背景的概率。我们加载VGGM在ImageNet Classification任务中预训练的参数,而不额外在Video数据集上训练。为了有效地滤掉干扰物,在线跟踪过程中,我们更新网络后三层来训练一个强分类器。

Performance: 在VOT2018 长时跟踪任务中,我们的F-score为0.61,AUC为0.81。

欢迎大家交流和cite:

@inproceedings{LRVNT,

title={Learning regression and verification networks for long-term visual tracking},

author={Yunhua Zhang, Dong Wang, Lijun Wang, Jinqing Qi, Huchuan Lu},

booktitle={arXiv preprint arXiv:1809.04320},

year={2018}

}

用siamRPN的proposal来做reid

SiamRPN+MDNet,proposal+verification的想法没优化的Code在2fps左右;image-wide detection部分很耗时间,未来要考虑重点加速。这个算法的核心思想是一个快速的较为精确的proposal机制(和SiamRPN结构类似,但train的没哪个好)和一个外观刻画能力强但确只需要处理少量样本的验证机制(所以就看上MDNet了,其实上看上VGG-M了,我们实验发现不用Video Training的VGG-M很牛)。

  • 验证网络特征用cnn,分类有没有尝试过简单的线性之类的?

  • 记得其他学生尝试过,可以使用VGG-M后面加逻辑回归或SVM之类的,效果会略差些。主要是VGG-M的特征会比较好,其实VGG-16更好(但是考虑到精度和速度平衡目前感觉现场网络中VGG-M是个不错的选择,目前基于VGG-M的代码优化好,是可能达到实时的)。

  • 我想问一下为什么会考虑把correlation之后的结果和broadcast之后的template concat在一起呢?原版siamRPN应该是只使用了前者对吧,你们这样做的考虑和实际效果是怎样的呢?在paper里没有看到对应的ablation study。

  • concat主要是想为后面的RPN提供目标的信息,对应的ablation study会在第二版论文中补充进去

  • 我测试了下您github上公开的代码,对于相似物体的跟踪容易出现错跟的情况,就拿vot2016数据集中ball来说,明明需要跟踪小伙踢球的那个球,但后面跟踪到了旁边的球上,出现了错跟的情况,这个有好的解决办法吗?

  • 这个Long-Term跟踪代码很难处理你提出的这个问题。个人见解,目前大多数Tracker都没从原理上解决这个问题,现在能处理的大部分视频靠的是运气。想要解决,可能有两种不同的思路:(1)更加细粒度的模型来区分相似目标;(2)利用局部多目标思想来处理相似目标的单目标跟踪问题。我们也正在尝试对于这个问题想出个好的方案。但感觉和长时跟踪有点矛盾,比如几个相似的目标都出镜,然后再回来,跟踪器无法肯定地跟踪到之前的目标了。

  • 你好,我想问一下您在进行RPN之前将模板特征复制到与搜索区域维度相同做点乘然后与模板特征cancat这样做的意义是什么呢?因为SiameseRPN和之前的siamfc都是直接做卷积的,这样做会有什么优势吗?

  • 您好,不知道您有没有训练过siamesefc,siamesefc的卷积方式是比较难训练的,难用于深层网络中(目前都是AlexNet),而我们采用了比较深层的mobilenet,所以没有采用卷积的方式。点乘是为了highlight相似的区域,得到相似性信息,concat模板特征是为了给rpn网络提供更多的目标信息,利于目标框的回归。

MBMD(MobileNet-based tracking by detection algorithm)作者答疑的更多相关文章

  1. Global Contrast based Salient Region Detection (Ming ming Cheng)

    abstract: Automatic estimation of salient object regions across images, without any prior assumption ...

  2. anomaly detection algorithm

    anomaly detection algorithm 以上就是异常监测算法流程

  3. [Object Tracking] Contour Detection through OpenCV

    利用OpenCV检测图像中的长方形画布或纸张并提取图像内容 - 阅读笔记 相对来说,如下链接是此文的高阶方案版本,做对比是极好的. [Object Tracking] Contour Detectio ...

  4. Floyd判圈算法 Floyd Cycle Detection Algorithm

    2018-01-13 20:55:56 Floyd判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm) ...

  5. Floyd's Cycle Detection Algorithm

    Floyd's Cycle Detection Algorithm http://www.siafoo.net/algorithm/10 改进版: http://www.siafoo.net/algo ...

  6. CVPR 2011 Global contrast based salient region detection

    Two salient region detection methods are proposed in this paper: HC AND RC HC: Histogram based contr ...

  7. [Object Tracking] Contour Detection through Tensorflow running on smartphone

    From: 手机端运行卷积神经网络的一次实践 -- 基于 TensorFlow 和 OpenCV 实现文档检测功能 貌似不错的东西:移动端视觉识别模型:MobileNets Holistically- ...

  8. [SimHash] the Hash-based Similarity Detection Algorithm

    The current information explosion has resulted in an increasing number of applications that need to ...

  9. 从时序异常检测(Time series anomaly detection algorithm)算法原理讨论到时序异常检测应用的思考

    1. 主要观点总结 0x1:什么场景下应用时序算法有效 历史数据可以被用来预测未来数据,对于一些周期性或者趋势性较强的时间序列领域问题,时序分解和时序预测算法可以发挥较好的作用,例如: 四季与天气的关 ...

随机推荐

  1. Python 愤怒的小鸟代码实现:物理引擎pymunk使用

    游戏介绍 最近比较忙,周末正好有时间写了python版本的愤怒的小鸟,使用了物理引擎pymunk,图片资源是从github上下载的,实现了一个可玩的简单版本. 功能实现如下: 支持小鸟类型:红色小鸟, ...

  2. docker-网桥

    使用桥接网络 在网络方面,桥接网络是链路层设备,它在网络段之间转发流量. 网桥可以是硬件设备或在主机内核中运行的软件设备. Docker而言,桥接网络使用软件桥接器,该软件桥接器允许连接到同一桥接网络 ...

  3. 利用SSH桥接访问服务器的Docker运行的MySql服务

    前情提要 docker的运用越来广泛,许多IT公司都已经将自己的服务跑在Docker上面.在安全性方面又做了一层防护.比如:跑在Docker上的Mysql不做外网端口映射,只能在linux服务器上或进 ...

  4. 关于Scrum+XP+DevOps的学习

    最近听了ECUG大会上孙敬云老师的分享感觉受益匪浅,毕竟大学课本上只讲到瀑布模型就没有下文了,工作以后一直贯彻的都是Scrum路线,一直也没有时间好好的去学习整理这部分的知识,直到近几天听到了孙老师的 ...

  5. python3 三行代码基于HTTP2完美实现APNS推送【详解】

    第一次做苹果APNS(Apple Push Notification service)推送,关于APNS推送原理以及证书的获取方式网上已经有许多资料,在此不做过多赘述,需要注意的是证书分为测试证书和正 ...

  6. MVC 统一验证Token demo

    /// <summary> /// 获取token /// </summary> /// <param name="staffId"></ ...

  7. dp-最长递增子序列 (LIS)

    首先引出一个例子 问题 : 给你一个长度为 6 的数组 , 数组元素为 { 1 ,4,5,6,2,3,8 } , 则其最长单调递增子序列为 { 1 , 4 , 5 , 6 , 8 } , 并且长度为 ...

  8. springcloud复习1

    1.SpringCloud是什么?SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶. 2.SpringCloud和SpringBoot是什 ...

  9. JavaWeb系统(增删改查、多条件查询功能)

    该系统是一个简单的青年服务管理系统,主要包括了较完整的常用的增删改查以及多条件查询功能,对于初学者有很大帮助. 下面是相关的Java代码.jsp页面.以及数据库的创建和相关表的设计 java代码 首先 ...

  10. kindeditor富文本编译器

    一.网址 kindeditor.net/about.php 二.编辑器的使用,看官方文档 三.常用初始化参数 1.resizeType2或1或0,2时可以拖动改变宽度和高度,1时只能改变高度,0时不能 ...