cvpr2017:branchout——基于CNN的在线集成跟踪
1、引言
2017年CVPR上有不少关于跟踪的paper。CF方面最引人瞩目的应该是ECO了,CNN方面也有一些新的进展。Branchout是一个基于CNN用bagging集成的在线跟踪方法。
contributions:
(1)提出了一种简单有效的正则化技术branchout,减少了集成学习方法在模型多样化和训练样本中噪声标签较少的限制。
(2)网络中每个独立的branch有不同数量的FC,并保留了多层级特征。
(3)验证了方法的有效性,并在没有pretraining的情况下也取得了start-of-the-art的成果。
2、框架
notations:
D = { (xi,yi)| i = 1,2,...,M }为更新模型的训练样本集。其中xi表示image patch,
表示xi对应的二进制标签,其中(1,0)表示positive,(0,1)表示negative。
框架如下图:

从图中可以看出,输入图片,大小为3*107*107,之后经过三层卷积层,得到512*3*3的特征图,之后进入branches。每个独立的branch中有多个fc层,论文在实验阶段采用了1层或两层。之后进入average pool,最后再经过fc6层,计算softmax得到最后的结果。
当训练网络时,用伯努利分布来选择一个branches子集,假设有K个branches,则有下面的分布 ak ~ Bernoulli(Pk),其中ak表示第k个branch被选中更新的二进制结果,Pk是分布的一个参数。Loss如下:

Mb是mni-batch的size,F是softmax输出的结果。梯度是直接对theta求导。只对FC层更新,而且只更新一到两个FC层。理由是很难在有限训练样本的情况下在线学习两个以上的全连接层。
对第一帧首先标出正负样本,也就是前景和后景,之后开始跟踪第一帧标出的目标。从上一帧中获取目标中心的xi高斯分布,改变维度,计算所有branches的softmax结果。目标状态由下面的公式得到:

为了提高定位的精确度,采用bounding box regression,用1000个训练样例训练 (at the first frame only),意思是由第一帧进行数据增大得到的?然后应用model到所有后续帧。因为学习目标框很耗时,而且因为没有gt,使用其他帧学习到的特征不一定可靠。
另外一个在线学习的要素是如何构造训练样例。由于没有gt,只能依靠预测得到的目标位置。从第t帧得到的正样本要包含IoU值高于0.7的bounding box。
更新策略:(1)每10帧整个model更新一次,(2)当xt*的值小于0.5时更新一次。
算法流程如下:

寻找每帧的目标时,提取256个样本用于观察。如果连续10帧从CNN获得的分类结果低于阈值就扩大搜索空间。当模型需要更新时,基于ak(Pk = 0.5)选择一个branches子集。每个mini-batch的大小是128.包含36个正样本和92个负样本。在线学习时,学习率设置为0.0001,迭代30次,momentum为0.9,weight decay为0.0005。
3、实验结果
与MDNet相比:

在VOT2015数据集上结果:

C-COT的结果出乎意料的不太好,不过ECO在robustness、EAO、EFO这些指标领先,在acc上SSAT最高(VOT2016)。
cvpr2017:branchout——基于CNN的在线集成跟踪的更多相关文章
- 基于Android的在线播放器系统的设计与实现
文章结构: 1 引言 1.1系统的研究背景 现在的时代是互联网的时代,互联网高速发展的同时,无线网络也接入了互联网.社会的各个领域都已经被无线网络渗透.小的比如手机,电脑,电视.大的比如灯光系统,智能 ...
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)
相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...
- 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)
前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...
- 学习笔记——Maven实战(四)基于Maven的持续集成实践
Martin的<持续集成> 相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订 ...
- 20个最强的基于浏览器的在线代码编辑器 - OPEN资讯
20个最强的基于浏览器的在线代码编辑器 - OPEN资讯 20个最强的基于浏览器的在线代码编辑器
- 基于storm的在线关联规则
基于storm的在线视频推荐算法.算法根据youtube的推荐算法 算法相对简单,能够觉得是关联规则仅仅挖掘频繁二项集.以下给出与storm的结合实如今线实时算法 , 关于storm见这里.首先给出 ...
- [项目回顾]基于Redis的在线用户列表解决方案
迁移:基于Redis的在线用户列表解决方案 前言: 由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能: 在单机环境下,在线列表的实现方案 ...
随机推荐
- Spring+Mybatis配置
Spring+Mybatis配置 之前做项目的时候用到了spring+mybatis框架,一直想抽空整理一下 Mybatis: mybatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 ...
- Spring Boot简单xml配置集成mybatis
一.xml配置版 1.properties文件中增加的配置: mybatis.config-locations=classpath:mybatis/mybatis-config.xml mybatis ...
- java 文件的编码 问题
package com.io; public class Encodedemo { public static void main(String[] args)throws Exception{ // ...
- JDBC相关知识
一.连接数据库 1. 步骤 //1.创建一个Driver实现类的对象 Driver driver = new com.mysql.jdbc.Driver();//注意抛异常 //2.准备 url 和 ...
- 深入 HTML5 Web Worker 应用实践:多线程编程
深入 HTML5 Web Worker 应用实践:多线程编程 HTML5 中工作线程(Web Worker)简介 至 2008 年 W3C 制定出第一个 HTML5 草案开始,HTML5 承载了越来越 ...
- C# Datatable.Select()用法简介
dt为一个DataTable,以dt为例说明dt.select()方法的功能: 1.dt.Select() 获取所有行数 例:Datarow[] drs=dt.Select(); 此时drs为dt数据 ...
- 怎么调试nodejs restful API 以及API的Authorization
最近Nodejs,python越来越火了,同时也越来越多的人在用node写服务,可是怎么去调试服务呢?以及当你一个服务发布出去,怎么保证其安全性呢? 环境:linux unbuntu 语言:nodej ...
- 本地Server发布外网Web应用(Oray实现)
主要讲解如何将本地当做服务器,发布Web应用至外网访问. 准备条件: 1.web应用服务(此处为Tomcat作为web应用服务器): 2.花生壳应用: 第一步,正常搭建本地web项目,应用名为 ...
- FreeRTOS——内存管理
1. 标准malloc() 和 free() 库函数的缺陷: 1)在小型的嵌入式系统中,可能不可用. 2)具体实现相对较大,占用较多宝贵的代码空间. 3)通常不具备线程安全性. 4)具有不确定性,每次 ...
- win7 远程桌面连接过程
背景:在公司日常工作中经常需要是用到远程桌面的连接,在内网环境下,远程桌面连接比qq更加方便!可以考虑外网的连接. 1 准备工作 这里我实验的另一台机器的ip:168.33.51.198,本机ip:1 ...