智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamRPN(2017)

3.2 SiamRPN(2017)

3.2.1 网络结构

Siam-RPN提出了一种基于RPN的孪生网络结构,由孪生子网络和RPN网络组成,前者用来提取特征,后者用来产生候选区域。其中,RPN子网络由两个分支组成,一个是用来区分目标和背景的分类分支,另外一个是微调候选区域的回归分支,使整个网络实现了端到端的训练。

SiamRPN中的Siamese network模块与siamFC相同,使用预训练的AlexNet网络,可将其作为一种变换𝜑,将这种变换分别应用到模板支和检测支上,产生模板和搜索区域的特征𝜑(𝑧),𝜑(𝑥)。

RPN网络由两部分组成,一部分是分类分支,用于区分目标和背景,另一部分是回归分支,它将候选区域进行微调。

在介绍这两个分支之前,我们先回顾下相关的内容:

grid:指的对一张图像或者是featuremap进行平均地分割,但是并不一定是一个像素对应一个grid,也可能是多个像素对应一个grid。所有grid组成一个Proposal。

anchor:锚点,指的是在boundingbox生成之前会先在每个grid上生成一些候选框,然后将这些anchors候选框进行操作,生成boundingbox

一般候选框会有一些固定的参数,首先是长宽比,例如上图左边的三个anchors对应一个grid生成的三种不同长宽比的anchors,一般长宽比的数目都是固定的而且长宽比互为倒数,比如{0.5,1,2};其次,是尺度大小,也就是anchors的面积,一般同一个featuremap下的grid都是看作生成相同尺度的anchors,经过不同层的featuremap对应不同的尺度,也就生成不同尺度的anchors,例如左边和右边尺度不同的anchors。

NMS: 非极大值抑制。NMS可以理解为不是极大值就抑制它。如下图所示,有两个anchors都分类为狗,这时会计算两个框之间的IoU,如果大于某个阈值,则认为两个框检测的是同一个物体,将得分高的框保留,得分低的框去除。图中红色框得分0.9,绿色得分0.7,两个框的IoU大于某个阈值,则只保留红色来检测狗的位置。

在RPN网络中,对于分类分支,它将给出每个样本被预测为目标和背景的打分。网络将用Siam网络提取到的模板和检测帧的特征用一个新的卷积核进行卷积,在缩小了特征图的同时,产生了如图大小为4×4×(2𝑘×256)的模板帧特征[\psi(z)]_{cls}[ψ(z)]​cls​​和大小为20×20×256的检测帧特征$[\psi(x)]_{cls}$,他们分别表示的含义是:模板帧特征大小是4×4,而且它在k种不同的anchors,对每一个anchor都产生一个特征;检测帧特征大小是20×20×256。然后,以模板帧的特征作为卷积核(2k个4×4×256)去卷积检测帧的特征从而产生响应图 A^{cls}_{w\times h}A​w×h​cls​​,即模板帧和检测帧的256个通道相互卷积,加权求和生成一个通道,所以生成17×17×2k的featuremap,这里相当于将搜索图像划分为17×17 个grid,每个grid生成k个anchors,每两个通道是一组,一共k组对应k个anchors。第一个通道中,目标的anchors是1,背景是0;第二个通道中,背景是1,目标是0。

在回归分支中,与分类分支类似,两个featuremap经过卷积层分别生成4×4×(4k×256)的模板帧特征[\psi(z)]_{reg}[ψ(z)]​reg​​和20×20×256的检测帧特征$[\psi(x)]_{reg}$,这里k对应着k个anchors,‘⭐’是卷积的操作,与分类分支的操作相同,生成17×17×4k的featuremap,每四个是一组,一共k组对应k个anchors。四组分别对应boundingbox的四个值dx、dy、dw、dh,是anchor与真值的距离。

siamRPN的输入与siamFC中的相同,在训练过程中,用cross-entropy loss作为分类分支的损失函数,用smooth L1loss作为回归分支的损失函数。

3.2.2 one-shot跟踪

SiamRPN是第一次将one-shot策略用在跟踪任务中:

检测帧在对每一帧目标进行检测时就是对proposals进行分类,即相当于一个分类器。该分类器进行分类时需要一个响应得分图,该响应图是由检测帧特征图用模板帧特征图作为卷积核进行卷积得到的。标识有weight for regression和weight for classification即为模板帧特征图,它用第一帧图像信息进行训练(也就是的one-shot策略,只用第一帧图像信息训练出一层网络的参数),然后将训练好的参数作为卷积核用到检测支中,对检测帧特征进行卷积得到响应图featuremap。(分类的是:17×17×2k,回归的是:17×17×4k)

3.2.3 模型创新

  • 区域选择策略是丢弃部分anchors产生的边界框,选择在目标周围𝑔×𝑔×𝑘的anchors而不是在整个特征图上的𝑚×𝑛×𝑘的anchors,如图g=7。

  • 用cosine窗口和尺度变化penalty对剩下的proposals得分进行重新排序。在上一个策略中执行并删除了离目标较远的proposals后,cosine窗口用于抑制最大位移,然后增加penalty以抑制尺寸和比例的大幅变化。最后选出得分最高的前K个proposals,并用NMS选出最终的跟踪目标位置。另外,在跟踪目标得到后,通过线性插值更新目标尺寸,保持形状平稳变化。

其中r和r′是长宽比,s和s′代表尺度,k是超参数。

3.2.4 损失函数

损失函数与faster-RCNN 中的损失函数类似,分类损失为交叉熵损失,回归损失采用归一化坐标的smooth L1 损失进行回归。Ax,Ay ,Aw,Ah表示anchors的中心点和宽高,Tx ,Ty,Tw,Th表示groundtruth的中心点和形状,标准化距离为:
 

然后经过smooth L1损失:

3.2.5 模型训练

SIamRPN是端到端的训练模型,用SGD方法对网络进行训练,同时也运用了一些数据增强处理。在细节方面,因为相同目标在相邻帧变化不会很大,采用同一尺度5种不同比例的anchors[0.33,0.5,1,2,3],同时将IoU>0.6的定为正样本,IoU<0.3的定为负样本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 18 Cannot find installed version of python-django or python3-django.

ubuntu系统下安装了django&#xff0c;但是启动django项目时报错 Cannot find installed version of python-django or python3-django. 原因&#xff1a; ubuntu大于14版本的应该安装python3-django 解决办法&#xff1a; apt-get install python3-django 如果提示你有几个…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-DaSiamRPN(2018)

DaSiamRPN网络的全称为Distractor-aware SiamRPN&#xff0c;是基于SiamRPN网络结构&#xff0c;提出更好的使用数据&#xff0c;针对跟踪过程的干扰物&#xff0c;利用更好的训练方式是跟踪更加的鲁棒。 DaSiamRPN认识到了现有的目标追踪数据集中存在的不平衡问题&#xff0c…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamRPN++(2019)

3.4.1 模型结构 SiamRPN网络结构如下图所示&#xff0c;虚线的两边都是网络结构图&#xff0c;虚线左侧是特征提取网络结构&#xff0c;右侧是RPN结构图。其实SiamRPN的网络结构与SiamRPN网络结构十分相似&#xff0c;而SiamRPN就是在SiamRPN的基础上加入许多的创新点。 SiamR…

lanmp之二 (奇葩问题)

ps&#xff1a;该篇是接 lanmp —— 动静分离 lanmp —— 奇葩问题 话说&#xff0c;在 搭建 bbs.abc.com &#xff08;discuz论坛&#xff09;的 时候。。。。 1、说明&#xff1a;web机器上以前已经有一个 discuz 旧论坛 要做数据迁移&#xff08;改域名/拷贝数据/迁移网站&a…

[已解决]user is not in the sudoers file. This incident will be reported.(简单不容易出错的方式)

linux Ubuntu中报错&#xff0c;XXX is not in the sudoers file. This incident will be reported. 今天在学习的时候&#xff0c;不小心把自己的用户sudo玩坏了&#xff08;Broken sudo&#xff09;&#xff0c;于是上谷歌搜索XXX is not in the sudoers file. This inciden…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamMask(2019)

与普通的视频跟踪网络不同的是&#xff0c;SiamMask可以同时完成视频跟踪和实例级分割的任务。如下图所示&#xff0c;与传统的对象跟踪器一样&#xff0c;依赖于一个简单的边界框初始化&#xff08;蓝色&#xff09;并在线操作。与ECO&#xff08;红色&#xff09;等最先进的跟…

编译器的大小端模式

大端模式&#xff08;Big_endian&#xff09;&#xff1a;字数据的高字节存储在低地址中&#xff0c;而字数据的低字节则存放 在高地址中。 小端模式&#xff08;Little_endian&#xff09;&#xff1a;字数据的高字节存储在高地址中&#xff0c;而字数据的低字节则存放 在低地…

【原】jQuery编写插件

分享一下编写设置和获取颜色的插件&#xff0c;首先我将插件的名字命名为jquery.color.js。该插件用来实现以下两个功能1.设置元素的颜色。2.获取元素的颜色。 先在搭建好如下编写插件的框架&#xff1a; ;(function($){//这里编写插件代码 })(jQuery); 我这里采用jQuery.fn.ex…

数据结构链表之单向链表:Python3 实现单向链表——1

Python3 实现单向链表 链表定义与简介 定义&#xff1a;链表与顺序表(Python中列表)性质相反&#xff0c;链表是物理单元上非顺序的、非连续的&#xff0c;在逻辑顺序上其数据元素是通过指针实现的&#xff0c;组成链表的每一个元素也可以叫做链表的节点&#xff0c;节点可以…

C语言(贪心法)

C语言有这样一个规则&#xff0c;每一个符号应该包含尽可能多的字符。也就是说&#xff0c;编译器将程序分解成符号的方法是&#xff0c;从左到右一个一个字符地读入&#xff0c;如果字条可能组成一个符号&#xff0c;那么再读入下一个字符&#xff0c;判断已经读入的两个字符组…

数据结构链表之双向链表:Python3 实现双向链表——2

Python3 实现双向链表 双向链表 定义&#xff1a;双向链表是链表中的一种&#xff0c;双向链表也叫双链表&#xff0c;它由多个节点组成&#xff0c;每个节点由一个数据域和两个指针域组成&#xff0c;一个指针指向前驱元素&#xff0c;一个指向后继元素 双向链表一般用来构…

linux驱动之ioctl

大部分驱动除了需要具备读写设备的能力之外&#xff0c;还需要具备对硬件控制的能力。 一、在用户空间&#xff0c;使用ioctl系统调用来控制设备&#xff0c;原型如下&#xff1a; int ioctl(int fd,unsigned long cmd,...); /* fd:文件描述符 cmd:控制命令 ...:可选参数:插入*…

数据结构链表之单链表的快慢指针——3

单链表之快慢指针 单链表的快慢指针简介 快慢指针指链表中定义两个指针&#xff0c;两个指针的移动速度一快一慢&#xff0c;一般快指针移动步长为慢指针的两倍 快慢指针适合解决的几个典型问题 中间值问题单向链表是否有环问题有环链表的入口问题 先定义一个简单的节点 …

【Pytorch神经网络基础理论篇】 04 线性代数

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…

Bootstrap实现弹出框和提示框效果代码

一、Bootstrap弹出框使用过JQuery UI应该知道&#xff0c;它里面有一个dialog的弹出框组件&#xff0c;功能也很丰富。与jQuery UI的dialog类似&#xff0c;Bootstrap里面也内置了弹出框组件。打开bootstrap 文档可以看到它的dialog是直接嵌入到bootstrap.js和bootstrap.css里面…

数据结构链表之循环链表——4

循环链表与约瑟夫问题 循环链表定义 定义&#xff1a;循环链表的定义十分简单&#xff0c;只需使一条单链表的尾部结点指向头结点&#xff0c;即可完成循环链表 循环链表的构建 class Node:def __init__(self, item):self.item itemself.next Nonefirst Node(aa) secon…

【Pytorch神经网络基础理论篇】 05 矩阵计算

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…

统计iOS项目的总代码行数的方法

1、打开终端&#xff0c; 2、用cd命令 定位到工程所在的目录&#xff0c;然后调用以下命名即可把每个源代码文件行数及总数统计出来&#xff1a; find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h&quo…

【Pytorch神经网络基础理论篇】 06 自动求导+导数与微分

同学你好&#xff01;本文章于2021年末编写&#xff0c;已与实际存在较大的偏差&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)…

数据结构链表之栈,Python3简单实现——5

数据结构链表之栈 栈的概述 定义&#xff1a;栈是一种基于先进后出(FILO)的数据结构&#xff0c;是一种只能在一段进行插入和删除操作的特殊线性表。引入名词&#xff1a;将数据存入栈的动作称为压栈&#xff0c;将数据取出栈的动作称为弹栈栈的特点&#xff1a;先进入栈的元…