LTMU

第零部分:前景提要

一般来说,单目标跟踪任务可以从以下三个角度解读:

  • A matching/correspondence problem.把其视为前后两帧物体匹配的任务(而不考虑在跟踪过程中物体外观的改变,也就是不会因为物体外观更改而更改模型)。
  • An appearance learning problem.外观学习的任务(需要在测试时fine-tune网络)。例如MDNet
  • A prediction problem.一个目标检测的任务,例如:ROLO = CNN + LSTM。就是使用LSTM来模拟物体在整个视频中的运动状态。

LTMU主要关注的是外观学习的任务中模型更新的机制,即第二个任务。

而对于第二个任务,其模型按照定位目标框的方式通常分为两类:稀疏采样密集采样

稀疏采样——以MDNet为例:

由于第二个会对模型的外观信息进行实时更新,因此我们不妨优先来看一下MDNet:

训练过程:简单来说,对于K个视频序列,该网络会设置K个fc_6层,对于每次迭代,会输入第k个视频序列,去训练相应的第k个fc_6层。这样,一个epoch,就是每个fc_6层被依次训练一次。训练实际上是一个分类问题,这也就意味着具有位置信息的框是训练前就生成的。对于每一个序列,在训练前会根据GT,抽取该视频中的8帧,每一帧会生成4个正框(IoU>0.7)以及12个负框(IoU<0.5),即一个序列生成32个正例和96个负例。每次迭代根据交叉熵损失更新各层。

测试过程:在第一帧的框周围生成一系列框,通过上面的分类器得到最优的那个框(得到之后可以通过BBox regression调整一下位置),再用一些正例去更新网络,再次进入下一帧。

而测试过程中,后面框更新是由前一帧框的周边进行随机采样,选取得分最高的那个获得的,也就是稀疏采样

密集采样——以ATOM为例:

ATOM则是采用“分类即定位”(类似RPN网络),通过前后景分类得到物体可能在的一个置信度分布图得到最高置信度点。之后在这个点周围,按照参考帧(上一帧)的框的大小随机生成一些不同尺度(变化不会特别大)的框,将这些框送入到IoU预测器中,去预测这些框的IoU得分值

IoU预测器:IoUNet的方式是有类别信息的,比如对于狗这个类,该预测期能够得到该框覆盖狗的IoU。而本文的IoU预测器,则是先把模板帧的图和BBox得到IoU Modulation中,获取到相应的向量,最后和当前的框获得相应的IoU。

而LTMU则是针对密集采样的Online部分模型更新的策略进行改进的一个机制,以使得模型能够处理long-term tracking的任务。

下面进入论文解析阶段:

第一部分:引入

对于long-term跟踪器,一般需要满足以下要求:

  • long-term跟踪器要求具备处理目标频繁消失和出现的能力,即需要有较强的再检测能力。因此,需要能够选择何时进行在线部分的更新,何时不需要。

    • 为了表示跟踪错误或者当前帧没有目标存在而拒绝更新这一机制,作者提出了一个指标TNR,即所有跟踪错误的帧不进行更新的比例。像上面ATOM有一定的拒绝更新的能力,ATOM能够根据分类得到置信图来判断是否需要更新。
  • 跟踪器由于存在长时间更新的要求,可能会有目标跟的位置、尺度上的偏差,背景的变化从而可能累计误差,被噪声样本污染模型。因此需要有对抗污染的机制。

本文做的工作:

  • 提出一种元更新器指导如何更新在线部分的模型。
  • 提出一套long-term tracking的框架。

第二部分:元更新器MU

如上图,定义了一些记号。

如上图所示,第二个小图中,从人类角度看来,跟的是比较准的,但是其在置信图中,其峰值比较低。同样,在第三张图中出现了双峰值,但其实也是能跟着目标点,而其最大相应值则处于更低的状态(以至于完全可以视为更丢了)。而最后一张图已经更丢了,却有一个较高的相应值。

即有两种问题:

  • 目标对但是置信值低
  • 目标错但是置信值高

为了解决这两个问题,作者考虑到希望能够设计一个网络,去学习到是否要更新,即所谓的元更新器。为此作者考虑了以下的信息:

  • 几何信息:

  • 判别信息:

    • 得分(峰值):

    • 得分图:![image-20201103224503978]

      一般会通过一个CNN层提取到整个图的特征,为了应对目标对但置信值低。

  • 外观信息

    即当前图和第一张图之间的外观差距(度量距离),用来处理目标错但是置信值高的现象。

  • 时序信息:利用三级级联的LSTM,将上面三者得到的vector(同时concat前面一段帧数的特征)作为输入,输出是否要进行更新的值。

总体如此图:

而其中的一些网络,都是与预训练好的。然后对于LSTM级联则是下面这种训练方式:

  • 如何训练?

  1. 先用一般的跟踪器跑一下送入的视频序列,这样能够得到第一遍的每个样本BBOX。前面已经讲了,每次送入到MU中的是[t-ts+1,t]这ts帧的特征。而该二分类网络的GT则是按照

    也就是在第一遍的时候,我们获得了训练这个网络的所需内容。于是可以进行第一轮的训练。
  2. 之后跑的时候,由于存在了MU可以告知是否应该用该BBOX对跟踪器进行训练,因此跟踪器会得到fine-tune,此时再次进行第一步中的方式:跑一遍视频序列,得到可能与上次不尽同的label,再次训练MU。

于是MU就训练完毕。

由上面的MU就可以得到一个长期更新框架。

第三部分:长期跟踪框架

现在,我们拥有了一个一个MU用来控制模型的更新,等于解决了要不要更新问题,而对于啥时候跟丢我们直接采用使用另外一个不同的跟踪器进行确认,因此我们就知道了什么时候应该重新找目标什么时候应该fine-tune我们的tracker

  • 对于什么时候应该fine-tune我们的tracker:即上图Local tracking部分,其中local tracker和verifier都是tracker(一般会使用不同的跟踪器)。视频序列输入时,由local tracker控制跟踪,由verifier验证跟的位置对不对,由MU控制更新(对两个跟踪器都要)。然后就能够得到置信度。根据置信度去选择继续fine-tune还是全局搜索,重新寻找目标。

  • 对于什么时候应该重新找目标:即上图Global search部分。当需要重新寻找目标时,会使用一个检测器(如faster-rcnn)得到一些候选框,选取每个候选框的周边区域,然后用SiamRPN利用模板帧和该区域进行搜索,看看是不是能找得到目标,找不到,就直接跳到下一帧,重复该过程。找到了,就进入Local tracking部分。

个人认为该框架有冗余,其实存在优化的地方。

第四部分:结果

注:作者使用的是自己魔改过的RTMDNet(即表中的MBMD)作为local tracking。

注:TNR是错误帧中不更新的比例,TPR是正确帧更新的比例,MaxGM是前两者权衡

而对于一般的跟踪器,在long-term任务上,MU也能够做到一个比较大的提升:

LTMU论文解析的更多相关文章

  1. [Network Architecture]Mask R-CNN论文解析(转)

    前言 最近有一个idea需要去验证,比较忙,看完Mask R-CNN论文了,最近会去研究Mask R-CNN的代码,论文解析转载网上的两篇博客 技术挖掘者 remanented 文章1 论文题目:Ma ...

  2. CVPR2020论文解析:实例分割算法

    CVPR2020论文解析:实例分割算法 BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation 论文链接:https://arxiv ...

  3. 人脸真伪验证与识别:ICCV2019论文解析

    人脸真伪验证与识别:ICCV2019论文解析 Face Forensics++: Learning to Detect Manipulated Facial Images 论文链接: http://o ...

  4. 人体姿态和形状估计的视频推理:CVPR2020论文解析

    人体姿态和形状估计的视频推理:CVPR2020论文解析 VIBE: Video Inference for Human Body Pose and Shape Estimation 论文链接:http ...

  5. 视频教学动作修饰语:CVPR2020论文解析

    视频教学动作修饰语:CVPR2020论文解析 Action Modifiers: Learning from Adverbs in Instructional Videos 论文链接:https://a ...

  6. 分层条件关系网络在视频问答VideoQA中的应用:CVPR2020论文解析

    分层条件关系网络在视频问答VideoQA中的应用:CVPR2020论文解析 Hierarchical Conditional Relation Networks for Video Question ...

  7. 慢镜头变焦:视频超分辨率:CVPR2020论文解析

    慢镜头变焦:视频超分辨率:CVPR2020论文解析 Zooming Slow-Mo:  Fast and Accurate One-Stage Space-Time Video Super-Resol ...

  8. CVPR2020论文解析:视觉算法加速

    CVPR2020论文解析:视觉算法加速 GPU-Accelerated Mobile Multi-view Style Transfer 论文链接:https://arxiv.org/pdf/2003 ...

  9. CVPR2020论文解析:视频语义检索

    CVPR2020论文解析:视频语义检索 Fine-grained Video-Text Retrieval with Hierarchical Graph Reasoning 论文链接:https:/ ...

随机推荐

  1. *新阿里镜像maven配置流程

    解决idea中maven仓库下载jar包慢的问题 配置阿里镜像 设置idea 配置阿里镜像参考链接:https://blog.csdn.net/redhat0921/article/details/1 ...

  2. Java 内存级默认DNS缓存

    Java 默认的DNS缓存时间,即不设置任一系统属性,如networkaddress.cache.ttl 设置SecurityManager 默认的CachePolicy为Forever,即永久缓存D ...

  3. rsync 守护进程模式搭建 与常见报错

    守护进程模式搭建 1.环境准备 2.安装rsync(做备份的服务器都安装) [root@backup ~]# yum install -y rsync 3.服务端配置 [root@backup ~]# ...

  4. leetcode学习总结

    转自https://leetcode-cn.com/ 1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以 ...

  5. JUC---08ForkJion(分支合并)

    一.什么是ForkJion Fork/Join框架是Java7提供的并行执行任务框架,思想是将大任务分解成小任务,然后小任务又可以继续分解,然后每个小任务分别计算出结果再合并起来,最后将汇总的结果作为 ...

  6. Redis常用命令(1)——Key

    DEL 格式:DEL key [key ...] 作用:删除一个或多个 key.不存在的 key 会被忽略. 返回值:被删除 key 的数量. 示例: 192.168.1.100:6379> s ...

  7. Django之实现分页显示内容

    关注公众号"轻松学编程"了解更多.- ​ 分页 1.作用 数据加载优化 2.前端引入bootstrap样式: {# 引入bootstrap样式的cdn资源 #} <link ...

  8. 《Clojure编程》笔记 第2章 函数式编程

    目录 背景简述 第2章 函数式编程 背景简述 本人是一个自学一年Java的小菜鸡,理论上跟大多数新手的水平差不多,但我入职的新公司是要求转Clojure语言的.坊间传闻:通常情况下,最好是有一定Jav ...

  9. #10053 L 语言

    L 语言 dalao 看来是水题?我可不这么认为. 很多人都写了我认为不怎么正确的贪心,那就是直接看到一个单词就减去. 那么这组数据就可以 hack 掉了: 2 1 whatis what whati ...

  10. SQL 速查表

    关系数据库,基于关系模型,使用关系(表)存储数据,同时定义了完整性约束.常见的关系数据库系统包括:Oracle.MySQL/MariaDB.SQL Server.PostgreSQL 等等. SQL, ...