目标检测框架在目标跟踪中的应用

2023-10-27

目标检测框架在目标跟踪中的应用

从SiamRPN将跟踪问题定义为one-shot detection任务之后,出现了大量将检测组件由于跟踪的研究。不过Siamese系列一个很大的问题在于其本质仍然是一个模板匹配问题,网络关注的是寻找与target相似的东西,而忽视了区分target和distractor的判别能力,这正是目标检测任务所擅长的。目标检测和目标跟踪的关键差异在于检测是一个class-level的任务,而跟踪是一个instance-level的任务(即检测只关注类间差异而不重视类内差异,跟踪需要关注每一个实例,同时跟踪的类别是不可知的)。

本篇笔记关注如何将目标检测框架应用在跟踪中,主要介绍其思想,细节部分不做过多描述,记录论文包含:

Bridging the Gap Between Detection and Tracking: A Unified Approach

从结构图可以很直观的看出这就是Faster RCNN的框架,作者将目标跟踪任务看成是one-shot object detection 和 few-shot instance classification 的组合。前者是一个class-level的子任务用来寻找和目标相似的候选框,后者是instance-level的任务用来区分目标和干扰物。主要有两个模块:Target-guidence module(TGM) 和 few-shot instance classifier。

TGM对目标和搜索区域的特征以及它们在主干中的相互作用进行编码,相当于让网络更关注于与目标相关的instance,后面几篇文章也用了不同的方法来实现这个目的。

TGM虽然使检测器聚焦于与目标相关的物体,但忽略了周围的背景干扰。为了弥补这一点,提出了few-shot instance classifier。 然而,直接从头开始训练耗时且容易导过拟合。因此作者通过Model-Agnostic Meta Learning (MAML)进行few-shot finetune,增强判别性进一步消除distractors。

MAML的目的是训练一组初始化参数,**通过在初始参数的基础上进行一或多步的梯度调整,来达到仅用少量数据就能快速适应新task的目的,**示意图如下:

域自适应的检测器整体训练流程如下图:

输入是三元组,包括examplar, support, query,训练分为inner and outer optimization loops。对于Inner optimization loop中,在support image上计算的loss用来微调meta-layers即detector heads的参数,然后用微调后的参数计算meta-loss其梯度用于更新outer optimization loop。具体公式可以参考原文。

在线跟踪中将之前帧的检测结果作为训练样本在线更新detector head的参数。

作者称这是第一篇将目标检测框架应用到跟踪上的通用框架,检测模型可以用Faster RCNN,SSD等,速度上SSD模型为10FPS Faster RCNN模型为3FPS。


GlobalTrack: A Simple and Strong Baseline for Long-term Tracking

这篇文章构建了一个global instance search tracker,主要思想是利用target来引导网络搜索特定instance,与上一篇的TGM模块思想类似,不过这里对在RPN阶段和分类回归阶段都加入了target信息进行引导。对应的就是Query-guided RPN 和 Query-guided RCNN。

Query-guided RPN

z ∈ [ k , k , c ] z\in\left[k,k,c\right] z[k,k,c] 是query的ROI特征, x ∈ [ h , w , c ] x\in\left[h,w,c\right] x[h,w,c] 是搜索图像的特征。 f _ z f\_z f_z k × k k×k k×k 0-padding的卷积将 z z z 转换为 1 × 1 1×1 1×1 的核作用于搜索区域, f _ x f\_x f_x 使用 3 × 3 3×3 3×3 1-padding的卷积。 f _ o u t f\_{out} f_out 1 × 1 × c 1×1×c 1×1×c 的卷积将通道数变回为c,这个过程不使用正则化和激活函数。

Query-guided RCNN

z z z 定义同上, x ∈ [ h , w , c ] x\in\left[h,w,c\right] x[h,w,c]是提取的proposal的特征。 h _ z h\_z h_z h _ x h\_x h_x 均为 3 × 3 3×3 3×3 1-padding的卷积, h _ o u t h\_{out} h_out 1 × 1 × c 1×1×c 1×1×c 卷积。

GlobalTrack 对视频每一帧的跟踪完全不依赖相邻帧,没有累计误差使得它在长期跟踪问题中准确率保持稳定。速度为6FPS。

车牌在长期跟踪过程中消失了一段时间,当车牌再次出现的时候,其他跟踪算法就再也无法恢复跟踪了,而没有累计误差的 GlobalTrack不受前面的影响立刻跟踪到了目标。


Learning to Track Any Object

图1 (a)从基于图像的数据集学习一个通用对象先验,(b)通过计算一个封闭形式的目标和背景之间的线性判别器使其适应于一个感兴趣的特定对象(例如左上角的总线)。这允许跟踪物体通过显著的变形,而不捕获干扰物

本文重点在于将category-specific object detector 变成 category-agnostic, object-specific detector来做跟踪。想达到这个目的,需要处理如下两个关键的问题,如图1所示:

  1. 如何将 category specific prior 改为 generic objectness prior?
  2. 如何进一步的将这种 generic prior 改为 particular instance of interst?

针对问题1,作者构建了 a joint model for category-specific object detection and category-agnostic tracking。和之前类似,也是添加了目标特征的检测框架(基于 Mask R-CNN)如下图2所示 。其将目标模板作为输入,计算 feature embedding。然后该模板特征与测试图像计算相似性得到attention mask。attention mask又被用于重新加权空间特征,以检测感兴趣的物体。另外这个框架可以同时用于检测、跟踪和分割。

针对问题 2,本文计算一个线性分类器来区分第一帧的感兴趣目标和其他目标,通过最小二乘方法得到闭式解从而可以学习到一个更关注感兴趣instance的鲁棒特征。下图3通过一个例子说明,左下是直接用feature embedding计算的attention map,右下是用线性分类器计算的attention map,显然右下效果更好。

最后运行速度为7FPS。


Siam R-CNN: Visual Tracking by Re-Detection

这个就是用重检测的思想做跟踪,也是基于RCNN框架的,同时使用Tracklet Dynamic Programming Algorithm去跟踪所有潜在的目标。
这篇文章在之前有过讲解。


Tracking by Instance Detection: A Meta-Learning Approach

同样是域自适应方法将检测器转化成跟踪器,此篇更像是第一篇Bridging the Gap Between Detection and Tracking: A Unified Approach的进阶,不同的是本文没有额外添加模板引导分支,而是直接用标准的检测器通过元学习的方式做域自适应。避免了冗余结构使得速度大幅提升,达到40FPS。另外就是训练的时候加入了很多来自MAML++喝MetaSGD的技巧,效果更好。


总结

这几篇文章的一个共同思路都是融合了Siamese架构和目标检测框架,将目标实例信息以各种形式加入待检测图像中,从而将class-level的通用检测转变成instance-level的实例检测(跟踪)。借助目标检测对尺度,形变等复杂条件的优越性来解决跟踪中的问题,同时将跟踪转变成one-shot的检测任务也避免了更新带来的漂移(第一篇里面使用了MAML进行更新,主要原因猜测是单纯往RPN中融合目标信息还不够work,像globaltracker在head上也添加了instance,而第三篇则是构建一个分类器增强鲁棒性)。当然引入检测框架带来的计算开销也是很大的,最后一种方法避免了额外的模板分支相当于跳出了Siamese框架,给实时带来了可能。
更多Ai资讯:公主号AiCharm
在这里插入图片描述

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

目标检测框架在目标跟踪中的应用 的相关文章

随机推荐

  • 64位机器源码安装遇到的问题,解决,一锅端

    1 如果是centos5会出现如下问题 checking host system type Invalid configuration x86 64 unknown linux gnu machine x86 64 unknown not
  • Hexo-零基础搭建个人博客(详解)

    Hexo零基础搭建个人博客 Hexo是一个基于 node js的快速生成静态博客的开源框架 支持 Markdown和大多数 Octopress 插件 一个命令即可部署到 Github页面 Giteee Heroku等 强大的APl 可无限扩
  • 数据库关闭四种方式

    数据库关闭四种方式 shutdown 参数 默认normal abort 模拟突然掉电 内存被清空 内存中的数据没有写入数据文件 事务被立即中断 没有提交也没有回滚 immediate 强制中断当前正在运行的所有事务 回滚这些事务 回滚完毕
  • c语言编写简易的自动售货机程序

    今天本来想做一个弹窗的可以输入有按钮点确定的自动售货机程序的 但是因为学校没教我是自学的找了一下午 不是教我如何创建的 就是代码各种报错的 我试了一下午都不行 只能放弃了 今天这串代码是根据我的c语言笔试 我们有上机考试的 的其中一道编程的
  • 二、量化选股

    文章目录 总体介绍 一 基本面选股 1 因子选股 判断方法 五个步骤 2 风格轮动 3 行业轮动 二 市场行为选股 1 资金流 2 动量反转 基本概念 1 行为金融学 2 阿尔法动量模型 3 一致预期 4 趋势追踪 基本概念 5 筹码选股
  • uniGUI用Grid++Report报表插件设计保存报表(For unigui ver:0.95.0.1045)

    uniGUI的0 95 0 1045版本提供了CallbackUrl 我们也可以用这个提供的回调网址来实现优秀的国产报表插件在IE Chorme FireFox中在线设计并保存报表到服务端的功能 界面效果如下 代码如下 unit Main
  • SpringBoot用线程池ThreadPoolExecutor处理百万级数据

    SpringBoot用线程池ThreadPoolExecutor处理百万级数据 更多优秀文章 请扫码关注个人微信公众号或搜索 程序猿小杨 添加 一 背景 使用JDK线程池ThreadPoolExecutor多线程异步执行批量插入 更新等操作
  • 如何优雅地用VScode在Ubuntu服务器上跑cuda代码

    0 安装相关软件 VScode 及对应插件 推荐VScode配置好远程服务后在服务端添加如下插件 Xming Xming X Server for Windows download SourceForge netDownload Xming
  • CMake Error: CMake was unable to find a build program corresponding to “Ninja“.

    CMake Error CMake was unable to find a build program corresponding to Ninja 使用cmake G ninja 后出现问题 报错信息如下所示 CMake Error C
  • 关于dispose 方法的资源释放

    当在程序上实现dispose 方法时 当前对象所占用的资源会被释放 当前对象便不能再被使用 但在内存中还并不会被及时的释放 要待到下次垃圾回收的时候 内存才能得到释放
  • Redis哨兵模式高可用原理

    我们知道主从复制是高可用的基石 从库宕机依然可以将请求发送给主库或者其他从库 但是 Master 宕机 只能响应读操作 写请求无法再执行 所以主从复制架构面临一个严峻问题 主库挂了 无法执行 写操作 无法自动选择一个 Slave 切换为 M
  • javabean相关问题

    目录 一般情况下 javabean有哪些具体的规范 JavaBean规范 在jsp页中 如何实现对它页的引入 or 嵌入 1 第一种 js import 2 第二种 jsp include指令 3 第三种 jsp include动作 什么是
  • Qt笔记8--zlib实现gzip解压

    Qt笔记8 zlib实现gzip解压 几个月前 由于需要使用过zlib解压文本和图片 现在将当初的方法记录在这里 以便于后续查阅 1 功能及使用方法 功能 1 解压gzip压缩的字符串 2 解压gzip压缩的图片 方法 1 下载并编译zli
  • 日常学习 mmsegmentation处理数据集和图片格式

    mmsegmentation 对数据集的读取与处理 对于自定义数据集需要在mmseg datasets下建立自己的数据集文件 如 import os path as osp from builder import DATASETS from
  • BUG -- 背景图片 background-postion 值为 百分比 时无效

    最近再写公司官网 要求响应式 为了图方便用百分比遇到一个bug 经过多方测试 此时遇到的问题是 当background size的值与容器的width height值相同时 同为px或者 background postion属性值设置为百分
  • 毕业设计-基于人工智能的脱机手写数字识别系统

    目录 前言 课题背景和意义 实现技术思路 一 相关背景知识介绍 二 基于智能优化算法的SVM在手写数字中的应用 三 基于智能优化算法的KELM在手写数字中的应用 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实
  • js爬虫反扒

    3 js动态网页抓取方式 重点 许多时候爬虫取到的页面仅仅是一个静态的页面 即网页的源代码 就像在浏览器上的 查看网页源代码 一样 一些动态的东西如javascript脚本执行后所产生的信息是抓取不到的 下面两种方案 可用来python爬取
  • MyBatis—利用MyBatis查询(查询所有,查询一行,条件查询)

    文章目录 1 查询所有 2 查询详情 通过特定属性查询 3 多条件查询 1 接口参数列表三种表达方式 2 多条件查询 3 动态Sql 4 多条件动态查询 5 单条件动态查询 1 查询所有 基本步骤 1 定义mapper接口 编写接口方法 2
  • 常用算法之分治算法(如何解决汉诺塔问题)

    1 什么是分治算法 分治 从字面上解释就是 分而治之 将一个复杂的问题分解成为两个或者更多的相同或者相似的子问题 再把子问题分成更小的子问题 直到最后的子问题简单到可以直接求解 原问题的解就是子问题解的合并 复杂问题 gt 子问题 gt 更
  • 目标检测框架在目标跟踪中的应用

    目标检测框架在目标跟踪中的应用 从SiamRPN将跟踪问题定义为one shot detection任务之后 出现了大量将检测组件由于跟踪的研究 不过Siamese系列一个很大的问题在于其本质仍然是一个模板匹配问题 网络关注的是寻找与tar