GOTURN——Learning to Track at 100 FPS with Deep Regression Networks

2023-11-12


文章的题目叫:《Learning to Track at 100 FPS with Deep Regression Networks》
算法简称:GOTURN(Generic Object Tracking Using Regression Networks)
作者是斯坦福的David Held
文章以及附件: http://davheld.github.io/GOTURN/GOTURN.html
算法源码: https://github.com/autocyz/GOTURN

1、算法速度

当我第一眼看到文章题目时,真的被吓一跳,用深度网络做跟踪能达到100FPS?
are you kiding?
再一看, 哦,原来是在GPU上跑的。
But,即使是GPU这也还是很快啊,别的用深度网络做跟踪的能达到10FPS就very well了!

在看文章内容之前,咱们先看看这个算法的速度到底是怎样的。引用作者中的内容:

On an Nvidia GeForce GTX Titan X GPU with cuDNN acceleration, our tracker runs at 6.05 ms per frame (not including the 1 ms to load each image in OpenCV), or 165 fps. On a GTX 680 GPU, our tracker runs at an average of 9.98 ms per frame, or 100 fps. If only a CPU is available, the tracker runs at 2.7 fps.

好一点的GPU,能达到165fps;稍微逊色一点的GPU,能达到100fps;不用GPU呢,2.7fps(对于用CNN做跟踪的,的确是很不错的速度了,鄙人看过一个CNN做跟踪的算法用好的GPU,也才7fps)

  最近亲自跑了一下,发现速度确实可喜!!!

2、算法整体框架:



图1 算法整体框架1

整个算法实现的框架如上图:作者将上一帧的目标和当前帧的搜索区域同时经过CNN的卷积层(Conv Layers),然后将卷积层的输出通过全连接层(Fully-Connected Layers),用于回归(regression)当前帧目标的位置。整个框架可以分为两个部分:
- 1、卷积层,用于提取目标区域和搜索区域的特征
- 2、全连接层,被当成一个回归算法,用于比较目标特征和搜索区域特征,输出新的目标位置

作者对网络的训练是offline的,在跟踪的时候没有online update的过程。这也是算法速度足够快的一个重要原因,把耗时的计算过程都离线做好,跟踪过程只有一个计算前馈网络的过程,



图2 算法整体框架2

3、算法实现细节

3.1、算法输入输出形式

输入:
在第t-1帧中,假设目标所在位置为(cx,cy),其大小为(w,h),则提取一块大小为(2w,2h)的图像块输入到CNN中。
在第t帧中,也以(cx,cy)为中心,提取大小为(2w,2h)的图像块,输入到CNN中。

输出:
输出目标在第t帧中左上角和右下角的坐标。

3.2、网络结构

见图1。
网络的卷积层采用的是CaffeNet的前五层(caffenet:
https://github.com/BVLC/caffe/tree/master/models/bvlc_reference_caffenet)。
并在imagenet上进行了预训练。

后面是3层全连接层,每层都有4096个结点,全连接层之后是一个只有四个结点的输出层,用于输出目标左上、右下的坐标。

3.3、网络的训练过程

这篇文章的训练方法比较有意思,在看他如何训练前,先看作者的一些关于跟踪视频序列性质的研究:

对于跟踪问题,一般的当前帧目标的位置和尺度都与上一帧是有关系,这个关系到底是怎么样的暂时没人分析过,作者通过对视频序列中的groundtruth进行研究发现,当前帧目标的位置和尺度变化与上一帧的目标存在着某种分布关系,具体分析如下:

cx=cx+wΔxcy=cy+hΔyw=wγwh=hγh
上述描述中, cx,cy,w,h 代表的是上一帧目标的位置和大小, cx,cy,w,h 代表当前帧目标的位置和大小, Δx,Δy,γw,γh 代表目标位置和大小变化的程度(比例)。
上述公式可以写成如下形式:
Δx=cxcx/wΔy=cycy/yγw=w/wγh=h/h
作者通过实验发现,这四个变化因子都符合laplace分布,laplace分布的概率密度函数为:
f(x|μ,b)=12bexp(|xμ|b)
其中 μ 是位置参数, b 是尺度参数,这个分布的期望E(x)=μ,方差为 D(x)=2b2 ,分布示意图如下:



图3 laplace分布示意图

作者通过统计实验发现上述的四个参数的分布图像如下:


图4 作者实验验证laplace分布

观察上述分布可以发现, Δx Δy 符合均值为0,尺度为1/5的laplace分布, γw γh 符合均值为1,尺度为1/15的laplace分布。

  有了上述发现,作者在训练网络时,对数据进行了人工扩充(data augmentation),如图4,在训练阶段,对目标的位置和尺度添加符合上述分布的转换(shift),为了避免尺度变化过大对网络造成不利影响,其限制了尺度变化范围 γw,γh(0.6,1.4)



图5 video data augmentation

另外,他不仅对视频序列进行训练,还对一些单帧图像也进行了训练,实现方法类似于上述的视频数据的data augmentation过程,其对标有groundtruth的图片随机进行位置和尺度的变换,变换的参数也符合上述的laplace分布



图6 image data augmentation

4、扩充实验

作者做了非常多且非常细致、严谨的实验,每个实验都有理有据,实验设置的条件也合情合理,且每个实验都验证了不同的条件或者情形。

一、data augmentation对算法的影响



图7 data augmentation对算法的影响

作者发现,batch size取50,augmented data的个数可以去取0~49,至少保留一个真实样本(因为augmented data都是从这个真实样本变换得来的)。观察上图可发现,性能最好的是batch中有49个augmented data只有一个real data,但是实际上当augmented data的数量高于20的时候,性能基本保持不变了。
作者文章使用的batch size是50,作者对每个图像进行了10倍的data augmentation。

二、全连接层个数对算法的影响



图8 全连接层个数对算法的影响

实验发现,全连接层个数为3时,效果最好。(这说明作者全连接层个数不是乱取的,是有理有据的)

三、多个因素对整体效果的影响



图9 多个因素对整体效果的影响

作者还做了损失函数、motion smoothness (data augmentation)、image data对整体性能的影响,最后发现使用L1 loss + motion smothness + image training + video training是效果最好的。

四、泛化性能实验



图10 泛化性能实验

随着训练视频的增加,算法的泛化性能越好。

参考资料:

1、Learning to Track at 100 FPS with Deep Regression Networks
2、Learning to Track at 100 FPS with Deep Regression Networks - Supplementary Material
3、拉普拉斯分布

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GOTURN——Learning to Track at 100 FPS with Deep Regression Networks 的相关文章

  • 网络***实用战术手册(UNIX)

    摘要 一个系统有很多步骤 阶段性很强的 工作 其最终的目标是获得超级用户权限 对目标系统的绝对控制 从对该系统一无所知开始 我们利用其提供的各种网络服务收集关于它的信息 这些信息暴露出系统的安全脆弱性或潜在入口 然后我们利用这些网络服务固有
  • 基于正点原子STM32F103ZET6工程文件修改成C8T6工程文件

    1 打开一个正点原子的工程 点击魔术棒 2 修改芯片型号为STM32F103C8 3 修改宏定义ZET6是大容量产品用的是STM32F10X HD C8T6是中容量产品 用的是STM32F10X MD 3 更换启动文件将startup st
  • [Vue3+Element-Plus]点击列表中的图片预览时,图片被表格覆盖问题

    问题复现 源代码段
  • matlab simulink 模糊PID控制空调系统温度

    1 内容简介 略 630 可以交流 咨询 答疑 2 内容说明 随着社会不断的发展 能源问题表现的日益突出 因此 节能变得尤其重要 而现 在随着人们物质水平的提高 对中央空调系统的要求也随之提高 希望在耗能最低的情 况下 保持室内合适的温度和
  • 3-Spring笔记

    Spring容器介绍 简介 Spring是一个开源免费的框架 容器 Spring是一个针对bean的生命周期进行管理的轻量级的框架 非侵入式的 控制反转 IoC 面向切面 Aop 对事物的支持 对框架的支持 解决企业应用开发的复杂性 Spr
  • C语言实现离散傅里叶变换DFT

    离散傅里叶变换DFT的计算公式如下 关于对DFT的详细讨论 请阅读前一篇博客基于matlab的FFT分析 include
  • 蓝桥杯C/C++省赛:排它平方数

    目录 题目描述 思路分析 AC代码 题目描述 小明正看着 203879 这个数字发呆 原来 203879 203879 41566646641 这有什么神奇呢 仔细观察 203879 是个6位数 并且它的每个数上的数字都是不同的 并且它平方
  • 常见文件预览实现

    一 word文档预览 1 使用文档预览服务预览 使用微软链接 https view officeapps live com op view aspx src 文档http地址 使用XDOC链接 http view xdocin com xd

随机推荐

  • python/pytorch/pip安装包手动下载的网站

    https www lfd uci edu gohlke pythonlibs python安装pytorch等因为太大总是下载中断 自己手动单个下载的神器网站 conda install use local pytorch 1 3 0 p
  • 如何自己开发漏洞扫描工具

    漏洞扫描工具 核心就是扫描器 而扫描器的设计思想是 灵活 易扩展 易修改 灵活的意思就是可单独执行专项漏洞的扫描 也可以批量执行集成的所有漏洞探测模块 易扩展的意思就是 新的漏洞检测模块可清晰简单的集成进扫描器 易修改 对各个漏洞扫描模块可
  • ssh免密登录配置

    本次测试需要服务器己安装好 ssh keygen和ssh copy id 安装方式如下 安装ssh keygen root localhost yum install y ssh keygen 安装ssh copy id root loca
  • 线性代数知识点整理

    目录 前言 一 行列式 1 行列式求值 2 七大性质 3 特殊行列式的值 二 矩阵及其运算 1 行列向量 2 可逆矩阵 3 常用性质 4 伴随矩阵 三 矩阵的初等变换和线性方程组 1 初等变换 2 矩阵的秩 定义 特性 求秩 3 齐次与非齐
  • Java Swing-JScrollPane,JTable

    同事要一个和Access功能类似的软件 但是要满足她提出的各种要求 她知道我是做软件的 所以让我给写一个 想想她的提的需求很容易实现 所以就答应了 因为Access的功能她就用来管理表格 日常的很多表格很多 都需要进行电子档的登记 此软件肯
  • 【倒计时2天】CCIG文档图像智能分析与处理论坛开启直播预约,共探智能文档处理前沿技术

    文档是人们在日常生活 工作中产生的信息的重要载体 各领域从业者几乎每天都要与金融票据 商业规划 财务报表 会议记录 合同 简历 采购订单等文档 打交道 让计算机具备阅读 理解和解释这些文档图像的能力 在智能金融 智能办公 电子商务等许多领域
  • [深入研究4G/5G/6G专题-59]: 以太网交换平台软件如何升级成基站平台软件

    前言 本文从全局的视角阐述把一个通用的Linux平台软件升级成基站平台软件 一 基站的硬件 1 1 设备硬件 1 2 SOC芯片
  • 不用看网课就能学到python的文章(第三天)

    紧接着上一篇不用看网课就能学到python的文章 第二天 Why does it work的博客 CSDN博客 如果说到语句 那我们应该了解一些一些python python最具特色的就是使用缩进来表示代码块 不需要使用大括号 行与缩进 i
  • spring mvc中log4j的配置与使用

    原文地址 http rockelixir iteye com blog 1902352 如果使用spring插件创建一个spring template project 它会默认带log4j 只要改下log4j的配置就可以使用了 如果自己创建
  • ppt地图分布图一块一块的怎么做_没想到地图还能这么用,简直是PPT图表神器!...

    本期导读 如何让你的PPT看起来高大上 本文教你一个鲜为人知的视觉化技巧 利用电子地图 制作PPT图表 即便你不懂PS 不懂设计 也能轻松上手 PPT地图图表的妙用 三种PPT地图的创建方法 本文是2019年3月推送的第20篇干货 计159
  • 全国电赛K题江苏省二等奖----王澳刚

    2017年TI杯江苏省大学生电子设计大赛 题目 单相用电器分析监测装置 题目编号 K题 参赛队编号 ZJ022 参赛队学校 江苏科技大学 参赛队学生 王澳刚 雷松泽 匡正 指导老师 王宝忠 李垣江 二0一七年八月 摘 要 本系统以STM32
  • TCP:为什么是三次握手

    定义 HTTP是基于传输层的TCP协议 而TCP是一个端到端的面向连接的协议 所谓的端到端可以理解为进程到进程之间的通信 所以HTTP在开始传输之前 首先需要建立TCP连接 而TCP连接的过程需要所谓的 三次握手 在TCP三次握手之后 建立
  • C++从入门到放弃之:C++ 左值引用与右值引用详解

    C 从入门到放弃 C 引用 1 左值引用 2 万能引用 常引用 3 右值引用 4 引用型函数返回值 5 引用和指针 6 函数传参传递指针和引用的区别 总结 C 引用 1 左值引用 定义 引用即别名 某个变量的别名 对引用的操作就等同于对变量
  • idea导入java文件_怎么在idea中导入Java文件并运行文件

    怎么在idea中导入Java文件并运行文件 发布时间 2020 06 22 20 58 37 来源 亿速云 阅读 926 作者 元一 这篇文章将为大家详细讲解有关怎么在idea中导入Java文件并运行文件 小编觉得挺实用的 因此分享给大家做
  • Golang-循环变量作用域针对那些数据类型会出现问题

    一 原因 在 Go 中 循环变量的作用域是整个 for 循环语句块 因此 循环变量在 for 循环语句块中的代码都是可见的 但是 当循环变量的值被用于闭包 协程或者使用指针类型的数据结构时 会出现一些问题 这是因为循环变量的值在每一次迭代中
  • Add One

    Add One 题意 给一个数n 有m次操作 每次操作把n的每一位加一 例如1912操作一次后变成21023 问操作m次后 数字的位数 思路 可以初始化0 9每一个数字操作k次后的位数f i k k lt m 然后把n的每一位操作后的长度加
  • LeetCode-Python-1584. 连接所有点的最小费用(MST)

    给你一个points 数组 表示 2D 平面上的一些点 其中 points i xi yi 连接点 xi yi 和点 xj yj 的费用为它们之间的 曼哈顿距离 xi xj yi yj 其中 val 表示 val 的绝对值 请你返回将所有点
  • Java-网络编程

    网络通信 1 两台及以上设备之间通过网络实现数据传输 2 将数据通过网络从一台设备传送到另一台设备 3 java net包下提供了一系列的类或者接口使用来实现网络通信 网络 1 两台或者多台设备通过一定物理设备连接起来构成了网络 2 根据覆
  • 【Android】-- 编辑框EditText、焦点变更监视器、文本变化监视器

    一 编辑框EditText 编辑框用于接收键盘输入的文字 由文本视图派生而来 除了TextView已有的各种属性和方法 EditText还支持下列XML属性 inputType 指定输入的文本类型 输入类型的取值说明如下表 若同时使用多种文
  • GOTURN——Learning to Track at 100 FPS with Deep Regression Networks

    文章的题目叫 Learning to Track at 100 FPS with Deep Regression Networks 算法简称 GOTURN Generic Object Tracking Using Regression N