深度学习tracking学习笔记(1):Visual Tracking with Fully Convolutional Networks

2024-06-11 04:32

本文主要是介绍深度学习tracking学习笔记(1):Visual Tracking with Fully Convolutional Networks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

reference:http://blog.csdn.net/carrierlxksuper/article/details/48918297

两个属性

1)不同层上的CNN特征可以针对不同的tracking问题。越top层的特征越抽象,并且具有语义信息这些特征的优势在于区分不同类别,同时对于形变和遮挡robust(下图a)。但是他们的缺点是无法区别类内的物体,比如不同人(下图b)。而底层的特征更多的是局部特征,可以帮助将目标从背景中分离出来(下图b)。但是无法处理目标外表剧烈变化(下图a)。于是在tracking中作者将两个特征根据干扰的情况,实时切换两种特征。

三个观察以及三个方面的贡献:

作者提到CNN网络在tracking的三个observations是非常重要的,因为这个启发了作者如何将imageNet pretrained CNN应用到visual tracking上去。同时作者cvpr2016的文章仍然是这个思路的延续[1].

下面说一下三个observations:

1.Although the receptive field 1 of CNN feature maps is large, the activated feature maps are sparse and localized. The activated regions are highly correlated to the regions of semantic objects . 意思就是说CNN的feature map来定位目标位置是可行的,这个是基础

2.Many CNN feature maps are noisy or unrelated for the task of discriminating a particular target from its background. 意思是feature map虽然有用,但是不是所有的都有用,有的是噪声或者冗余的,因此需要有个选择机制

3.Different layers encode different types of features. Higher layers capture semantic concepts on object categories, whereas lower layers encode more discriminative features to capture intra class variations. 意思是不同层feature map(conv4和conv5)具有不同的特性,要针对tracking出现的不同情况,利用不同的feature maps.

对应的三个贡献如下:

1) 分析了从大规模图像分类中学到的CNN特征,找出适合于visual tracking的一些属性。也就是不同的computer vision tasks需要 不同的特征。

2)作者提出了一种新的tracking的方法,同时考虑两个不同卷积层的特征输出,使他们相互补充来处理剧烈的外观变化和区分目标本身

3)设计了一种方法来自动选择区分性的feature maps,同时忽略掉另外一个以及噪声。

整体框架:



解释如下:

第一步,对于给定的target,对VGG网络的conv4-3和conv5-3层执行feature map selection,目的是选出最相关的feature maps,具体原因就是构建一个L1范数的正则化目标函数。

第二步,在conv5-3的feature maps基础上,构造一个通用网络GNet,用来捕捉目标的类别信息

第三步,在conv4-3的feature maps基础上,构造一个特定网络SNet,用来将目标从背景中区分出来。

第四步,利用第一帧图像来初始化GNet和SNet,但是两个网络采用不用的更新方法

第五步, 对于新的一帧图像,感兴趣区域(ROI)集中在上一帧的目标位置,包含目标和背景上下文信息,通过全卷积网络传递。

第六步,GNet和SNet网络各自产生一个前景heat map。于是对下一帧目标位置的预测就基于这两个热图。

第七步,干扰项检测用来决定采用上一步产生的哪一个热图,从而决定最后目标的位置。

reference:
http://blog.csdn.net/cv_family_z/article/details/50748236(可参考多篇文章)
简而言之就是:

1.对conv5-3和conv4-3进行特组图筛选; 
2.广义网络GNet根据conv5-3筛选建立; 
3.针对性网络SNet根据conv4-3筛选建立; 
4.SNet,GNet使用第一帧初始化并进行目标热度图回归。 
5.对于新的一帧,上次位置的ROI抠取并送到全卷积网。 
6.SNet,GNet 生成两个热度图,distractor选择策略决定哪个图使用。

特征图筛选 
sel-CNN筛选conv4-3,conv5-3。最小化目标热度图与预测热度图的损失使用BP学习模型参数,根据特征图对损失函数的影响选择特征图: 
Lsel=||M̂ M||2

特征图变化带来的损失变化为: 
这里写图片描述

特征图中某个特征的显著性为: 
这里写图片描述

特征图的显著性为所有元素显著性的和: 
Sk=x,ys(x,y,k)

位置预测 
目标定位首先在GNet上进行,当前帧的位置由上一帧位置,使用高斯模型预测: 
这里写图片描述

为了避免相似物体干扰,当目标外与目标内置信度比值超过一定阈值时,选择SNet预测最终位置: 
这里写图片描述

实验结果对比:

这里写图片描述

一些细节

值得一提的是作者采用了很多细节的技术,这些对于提升效果很有帮助。

比如对于模型的更新,作者将目标漂移以及热图匹配同时考虑在内。

参考文献

[1] Lijun Wang, Wanli Ouyang, Wanli Ouyang, Xiaogang Wang, and Huchuan Lu. "STCT: Sequentially Training Convolutional Networks for Visual Tracking", In Proc. CVPR 2016.

这篇关于深度学习tracking学习笔记(1):Visual Tracking with Fully Convolutional Networks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050198

相关文章

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

Java枚举类型深度详解

《Java枚举类型深度详解》Java的枚举类型(enum)是一种强大的工具,它不仅可以让你的代码更简洁、可读,而且通过类型安全、常量集合、方法重写和接口实现等特性,使得枚举在很多场景下都非常有用,本文... 目录前言1. enum关键字的使用:定义枚举类型什么是枚举类型?如何定义枚举类型?使用枚举类型:2.

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置