Meta-Tracker: Fast and Robust Online Adaptation for Visual Object Trackers
这篇论文发表在2018年ECCV上
论文地址:Meta-Tracker:Fast and Robust Online Adaptation for Visual Object Trackers
代码地址:github
看到题目的online adaptation,那怎么在线自适应呢?和之前的在线自适应有什么区别呢?请看详解
文章的摘要部分就提到了,这篇文章使用在线自适应提高了最好的视觉目标跟踪。
参考背景知识 meta-learning
这篇论文采用基于预测梯度的策略学习方法(元学习)获得普适性的初始化模型,可以使得跟踪自适应于后续帧特征的最佳梯度方向。该方法引入了两个待学习参数:初始化参数θ0\theta_0θ0 和梯度更新参数α\alphaα 。目标跟踪的元训练过程主要分为两步:1.随机初始化参数,将第一帧图像输入跟踪模型进行预测,利用预测误差函数以及梯度更新参数,反复迭代T次作为θ1\theta_1θ1;2.检查参数θ1\theta_1θ1,对后续帧(每次迭代随机取一帧)的鲁棒性,累积损失函数对θ1\theta_1θ1和α\alphaα的梯度,采用ADMM梯度下降算法优化参数θ0\theta_0θ0, α\alphaα的梯度。
论文将此方法应用于MDNet方法中,在训练的过程使用了元学习来训练网络从而得到更好的初始网络模型和梯度更新参数(一般的网络初始参数、学习率都是手工设定的,这里是要学习这些参数,使得更好更快的收敛),训练的时候就是考虑到在线跟踪只能使用第一帧快速的训练一个模型,因此元训练就是用训练视频的第一帧去学习两个参数,然后泛化到后续的帧,使得在线跟踪的时候,只需要用给定的第一帧训练一次网络,就能达到和MDNe相当的结果,没有使用多域、正则化等trick。
Our core contribution is an offline meta learning-based method to adjust the initial deep networks used in online adaptation-based tracking.
The meta learning is driven by the goal of deep networks that can quickly be adapted to robustly model a particular target in future frames.
By enforcing a small number of update iterations during meta-learning,the resulting networks train significantly faster.
The model learned during tracking should be flexible to account for appearance variations of the target due to viewpoint change,occlusion,and deformation.
文章提出了现在联合深度学习特征和在线自适应的方法存在的问题,首先有很小的训练样本(初始帧),后续视频帧因为有相同的目标和背景,所以大部分是冗余的,而且,深度模型很容易对小数据集overfitting。第二个问题是,最好的跟踪器在初始训练阶段花费大量的时间。因此,急需在初始帧快速的获得鲁棒的目标跟踪模型。
During the meta-training phase, we aim to find a generic initial representation and gradient directions that enable the target model to focus on features that are useful for future frames.
Our meta-training approach has two goals.One is that initialization for a tracker on a sequence can be performed by starting with θ0\theta_0θ0 and applying one or a very small number of iterations of a update function M parameterized by α\alphaα.Another goal is that the resulting tracker be accurate and robust on later frames.
update function M:
以上两幅图是meta-train的可视化图和算法,先初始化数据集和网络模型
接着按照上述Meta-training算法,进行初始化参数,如下,你能看出两个参数有什么区别吗?
## Initialize Meta Alpha(learning rate) Net##meta_init= OrderedDict()for k,p in tracker_net.get_learnable_params().items():meta_init[k] = Variable(p.data.clone(), requires_grad=True)#meta_init就是网络要学习的参数meta_init_params = [p for k,p in meta_init.items()]meta_init_optimizer = optim.Adam(meta_init_params, lr = opts['meta_init_lr'])## Initialize Meta Alpha(learning rate) Net##meta_alpha = OrderedDict()for k,p in tracker_net.get_learnable_params().items():alpha = Variable(p.data.clone(), requires_grad=True)alpha.data.fill_(opts['tracker_init_lr'])meta_alpha[k]=alphameta_alpha_params = [p for k,p in meta_alpha.items()]meta_alpha_optimizer = optim.Adam(meta_alpha_params, lr = opts['meta_alpha_lr'])
上述算法的N为8,T为1,总共训练15000次,前5000次只训练FC层,后5000次训练整个网络。进入一个batchsize:
对应算法4、5、6、7、8
tracker_net.copy_meta_weights(meta_init)
init_g, alpha_g, loss[j], lh_loss[j], acc[j], lh_acc[j] = train_init(tracker_net, meta_alpha, criterion, pos_regions, neg_regions, lh_pos_regions, lh_neg_regions, evaluator, train_all)# the first iterationpos_score = tracker_net.forward(pos_regions)neg_score = tracker_net.forward(neg_regions)loss = loss_fn(pos_score,neg_score)grads = torch.autograd.grad(loss, tracker_init_weights.values(), create_graph=True)tracker_weights = OrderedDict((name, param - torch.mul(meta_alpha,grad)) for((name, param),(_,meta_alpha),grad) inzip(tracker_init_weights.items(),meta_alpha.items(), grads))# compute meta grads for lookahead datasetgrads = torch.autograd.grad(lh_loss, tracker_init_weights.values(), retain_graph=True)alpha_grads = torch.autograd.grad(lh_loss, meta_alpha.values())return meta_init_grads, meta_alpha_grads, loss.data[0], lh_loss.data[0], acc, lh_acc
#对应于以上算法 15,16行,进行更新两个参数
def meta_update(meta_init, meta_init_grads, meta_alpha, meta_alpha_grads, meta_init_optimizer, meta_alpha_optimizer):
在minibatch的时候两个参数是不变的,一个batch后才更新两个参数。
训练后会得到meta_init_vot_ilsvrc.pth模型,在测试的时候进行加载使用,当然测试的时候也用预训练的模型。
在数据集VOT2016的结构如下:
那时间如何呢?论文说是MDNet的30倍,结构如下,B表示训练之前,A表示训练之后,LH表示应用在后续帧
测试代码课参考博客:metasdnet testing
Meta-Tracker: Fast and Robust Online Adaptation for Visual Object Trackers相关推荐
- hive.ql.exec.DDLTask. MetaException(message:java.io.IOException: Attempt to start meta tracker faile
Hive 0.13和HBase 0.98.6.1整合出现错误记录下 hive> CREATE TABLE hbase_table_1(key int, value string) > ST ...
- 论文笔记1:Fast and Robust Multi-Person 3D Pose Estimation from Multiple Views
快速且鲁棒的多视角下多人三维姿态估计 作者讲解:https://www.bilibili.com/video/BV1K441157Xf?from=search&seid=52494766343 ...
- 【2019-CVPR-3D人体姿态估计】Fast and Robust Multi-Person 3D Pose Estimation from Multiple Views
Fast and Robust Multi-Person 3D Pose Estimation from Multiple Views 题目:<快速鲁棒性多视图多人3D姿态估计> 作者: ...
- 读书笔记22:Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recogni
文章题目:Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recogniti ...
- CVPR2021:ST3D——Self-training for Unsupervised Domain Adaptation on 3D Object Detection详解
ST3D: Self-training for Unsupervised Domain Adaptation on 3D Object Detection Algorithm Main Method ...
- Meta Correction: Domain-aware Meta Loss Correction for Unsupervised Domain Adaptation in Semantic Se
1)算法简介 DMLC (Domain-aware Meta-learning strategy is devised to benefit Loss Correction )引入NTM(noise ...
- MODS: Fast and Robust Method for Two-View Matching
http://cmp.felk.cvut.cz/wbs/ 转载于:https://www.cnblogs.com/guochen/p/6672415.html
- Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition 翻译
光流引导特征:视频动作识别的快速鲁棒运动表示 项目地址:https://github.com/kevin-ssy/Optical-Flow-Guided-Feature 摘要 运动表示在视频中的人类动 ...
- 详解3D物体检测模型 SPG: Unsupervised Domain Adaptation for 3D Object Detection via Semantic Point Generation
本文对基于激光雷达的无监督域自适应3D物体检测进行了研究,论文已收录于 ICCV2021. 在Waymo Domain Adaptation dataset上,作者发现点云质量的下降是3D物件检测器性 ...
- 视觉里程计 | OF-VO:Robust and Efficient Stereo Visual Odometry Using Points and Feature Optical Flow
博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 代码执行环境:Windows 8 ...
最新文章
- 一个简单的C++程序,回顾基本语法
- 网络服务搭建、配置与管理大全(Windows版)
- phoenixcard 获取下载脚本失败,请确认固件版本是否正确
- 如何查看自己的Github仓库占据了多少存储空间
- JPA - EntityTransaction与事务
- python anaconda安装redis_Linux下安装python,redis
- 计算机网络基础应用课程标准,王建波《计算机网络基础》课程标准.doc
- 电脑连不上wifi怎么办?
- 饿了么api接口 php,饿了么美团开放平台接入
- 权限梳理_请梳理头发,擦鼻子-我单身父亲的月
- 为什么小程序getUserInfo获取的微信名称是“微信用户“?2.10.4词库之后如何渲染微信名称,微信头像和获取个人信息?
- Ubuntu下利用docker安装微信
- python3+requests+BeautifulSoup+mysql爬取豆瓣电影top250
- 如何打包Google扩展程序
- ioredis pipeline用法
- C#WinForm二维码编码解码器
- php上传文件自动解压,PHP自动解压上传的rar文件
- upc PinkRabbit写情书(枚举)
- 一种针对超声波测距的滤波处理算法
- 电子火折子的电路原理
热门文章
- 第三方支付账务系统论述
- 腾讯测试岗(部分附答案)
- 讲解三层代码讲解(DLL规则层如何接收服务器的数据,又如何交回给服务器)--第四课(*****) DATE :2004-06-01...
- python读取excel文件数据并且画折线图(入门级)
- 资源池(从内存池到连接池)
- 专项UI自动化测试 - appium(元素定位方式和思考)|看了就会
- Clonezilla 再生龙制作系统U盘还原系统
- 红黑树时间复杂度证明(O(lgn))
- php显示服务器ipv6,php获取用户IPv4或IPv6地址的代码
- C语言中空字符串长度,C语言中求字符串的长度