Real-time ‘Actor-Critic’ Tracking

2019-07-15 10:49:16

Paperhttp://openaccess.thecvf.com/content_ECCV_2018/papers/Boyu_Chen_Real-time_Actor-Critic_Tracking_ECCV_2018_paper.pdf

Codehttps://github.com/bychen515/ACT

1. Background and Motivation:

本文提出一种利用 “连续” 动作空间的强化学习算法来进行跟踪。之前的 MDNET 是随机采样,然后进行打分的;而 ADNet 是 “离散”的动作选择,即:通过一系列离散的动作选择,实现 BBox 的移动,来完成跟踪。下图展示了本文方法与这两种方法的不同:

本文的贡献点在于:

1). 该算法是首次探索了连续的动作 (continuous actions) 进行跟踪,仅通过 Actor model 进行一次动作选择,即可完成动作的定位;

2). 该算法也是首次利用 “Actor-Critic” 跟踪框架。

3). 在速度达到实时的同时,精度也比不错。

2. Tracking via the "Actor-Critic" Network:

2.1 Problem Settings:

本文将跟踪问题看做是序列决策问题(Decision-making problem)。基础的马尔科夫决策过程包括如下几个元素:State,Action,State transition functions,Reward。

在本文中,tracker 被当做是 agent,并且来预测每一帧目标物体的准确位置。该智能体与环境进行交互,通过观察 s,执行动作 a,并且得到奖励 r。在第 t 帧中,智能体根据当前的状态 s,给出了连续的动作 a,得到了跟踪结果 s'。动作 a 被定义为:the relative motion of the tracked object,表明在当前帧,应该怎么直接移动 BBOX。与 ADNET 不同的是,该算法仅仅执行一个连续的动作,来定位目标物体,使得该算法更加高效。具体各个元素的定义如下:

State

在该工作中,作者定义状态 s 为:在BBox内部的观察到的图像块。给定视频帧 F 和 BBox b = [x, y, h, w],作者首先用预处理函数 s 来处理得到该图像块。

Action and State Transition

为了进行连续的控制,动作空间被假设为连续的,即:如何直接移动该 BBox。此处,作者用 $a = [\Delta x, \Delta y, \Delta s]$ 来描绘跟踪物体的相对运动,$\Delta x, \Delta y$ 表明了物体水平和竖直方向的变换,$\Delta s$ 表明了尺寸的相对变换。考虑到跟踪物体时序上的连续性,作者加了如下的约束来控制 BBox 的变化幅度:$-1 <= \Delta x <= 1, -1 <= \Delta y <= 1, -0.05 <= \Delta s <= 0.05$。通过对上一帧的 BBox 进行这样动作的变换,可以得到一个新的 BBox b' = [x' y' h' w']:

然后,状态转移过程 $s' = f(s, a)$ 可以隐式的通过预处理函数来实现。

Reward

奖励函数 r(s, a) 描述了定位的准确性,所以,其可以按照重合度的方法进行度量:

每次执行一个 action,都会产生一个奖励,然后被用于离线训练的深度网络更新 (to update the deep networks in offline learning)。

2.2 Offline Training

Network Architecture:

本文的网络结构如上图所示。可以看到 Actor network 是将上一帧的跟踪结果的 image patch 作为输入,输出是三维的数字,即对应了 水平,竖直 和 尺寸上的变换。在 offline training中,还有一个是 Critic network,该网络的结构跟 Actor 类似,但是用途是不同的。该网络要求的输入是:根据当前的状态,将三维 action vector 组合后的结果,以得到 Q-value,并用于动作的评价。

Training via DDPG

本文采用 DDPG 方法来训练该 “Actor-Critic Network”,核心的思想是:迭代的训练 “Critic” 和 “Actor” 模型。给定 N 个经验 (si, ai, ri, si'),Critic model 可以利用贝尔曼方程来进行学习。通过目标网络,学习可以通过最小化下面的损失来实现:

然后,Actor 模型可以通过链式法则进行更新:

在训练迭代中,作者随机的选择一个训练序列及其 GT。在此之后,作者将跟踪器在选择的序列上得到了训练 pair (st, at, rt, st') 。

Experimental Results:

==

Real-time ‘Actor-Critic’ Tracking的更多相关文章

  1. 深度增强学习--Actor Critic

    Actor Critic value-based和policy-based的结合 实例代码 import sys import gym import pylab import numpy as np ...

  2. Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor

    Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor 20 ...

  3. TensorFlow利用A3C算法训练智能体玩CartPole游戏

    本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advan ...

  4. DRL 教程 | 如何保持运动小车上的旗杆屹立不倒?TensorFlow利用A3C算法训练智能体玩CartPole游戏

    本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advan ...

  5. Awesome TensorFlow

    Awesome TensorFlow  A curated list of awesome TensorFlow experiments, libraries, and projects. Inspi ...

  6. (转) Using the latest advancements in AI to predict stock market movements

    Using the latest advancements in AI to predict stock market movements 2019-01-13 21:31:18 This blog ...

  7. 学习笔记TF053:循环神经网络,TensorFlow Model Zoo,强化学习,深度森林,深度学习艺术

    循环神经网络.https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/re ...

  8. David Silver强化学习Lecture1:强化学习简介

    课件:Lecture 1: Introduction to Reinforcement Learning 视频:David Silver深度强化学习第1课 - 简介 (中文字幕) 强化学习的特征 作为 ...

  9. 强化学习--Actor-Critic---tensorflow实现

    完整代码:https://github.com/zle1992/Reinforcement_Learning_Game Policy Gradient  可以直接预测出动作,也可以预测连续动作,但是无 ...

  10. 论文笔记:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments

    Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments 2017-10-25  16:38:23   [Proj ...

随机推荐

  1. 【Code Tools】AB性能测试工具(一)

    一.工具下载 yum -y install httpd-tools 二.AB工具使用 格式: ab [options] [http://]hostname[:port]/path 例如:ab -n - ...

  2. 详解Linux系统中10个最危险的命令

    概述 大多数的朋友都是主要用的windows系统,基本用鼠标就可以完成所有的操作,但是在Linux系统中很多都是键盘+命令操作电脑的,Linux命令行使用很有趣,但有时候也很危险,尤其是在你不确定你自 ...

  3. Python入门篇-内建函数

    Python入门篇-内建函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常见的内建函数案例  1>.标识id 返回对象的唯一标识,CPython返回内存地址. #!/ ...

  4. Synchronized关键字和锁升级,详细分析偏向锁和轻量级锁的升级

    原文链接:https://blog.csdn.net/tongdanping/article/details/79647337 1.锁升级锁的4中状态:无锁状态.偏向锁状态.轻量级锁状态.重量级锁状态 ...

  5. myeclipse常用快捷(持续更新)

    最近开始转用myeclipse,总结一下快捷方式:(我喜欢用的) [Ctrl+O]    显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时非常有用. [Ctrl+M]    窗口最大 ...

  6. 浏览器报400-Bad Request异常

    今天在使用ie浏览器在测试程序的时候,报这个错误,后台日志打印出来显示的是:连接一个远程主机失败 解决Invalid character found in the request target. Th ...

  7. janusgraph批量导入数据-IBM( janusgraph-utils)的使用

    janusgraph-utils的简介 可与JanusGraph一起使用的实用工具,包括: JanusGraphSchemaImporter:一个groovy脚本,它将图形模式定义(JanusGrap ...

  8. 学习:c++指向指针的指针(多级间接寻址)

    指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.通常,一个指针包含一个变量的地址.当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置. 当一个 ...

  9. [51Nod 1220] - 约数之和 (杜教筛)

    题面 令d(n)d(n)d(n)表示nnn的约数之和求 ∑i=1n∑j=1nd(ij)\large\sum_{i=1}^n\sum_{j=1}^nd(ij)i=1∑n​j=1∑n​d(ij) 题目分析 ...

  10. vault 使用 中间ca 进行证书管理

    使用vault 进行pki 管理是很方便的,以前测试的都是由根证书进行证书签发,这次使用中间ca 进行签发 所以会有一个证书连 测试使用docker-compose 运行 环境准备 docker-co ...