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

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

3.2 SiamRPN(2017)


3.2.1 网络结构


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


5d68fc9c986b49308dfbf7854109d0b5.png


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


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


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


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


2afabf10c55f476595f20583ce9fa641.png


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


dda7998c57c7419bace96fa9fa8da139.png


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


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


26b135194e7245a193e8c90bce3306c1.png


在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}Aw×hcls,即模板帧和检测帧的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与真值的距离。


05146034b8d548a38d52cb69215c7143.png


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


3.2.2 one-shot跟踪


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


dde3c906314d42c7814fb3665bc35d0b.png


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


925e18e9b4394c6d83e8af3e3216252a.png



3.2.3 模型创新


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


2d741a575aad4497809e57cd50696a59.png


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


5439bb36ca844149839888d1871bcc6e.png


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


3.2.4 损失函数


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


1cf00a76d69643af8b5079c815d1f9ae.png


然后经过smooth L1损失:


c8e1a7023a604f24a0af0ee303796a13.png


3.2.5 模型训练


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


53abc54433af416c83e59a27e3732c72.png

目录
相关文章
|
5月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1168 1
|
11月前
|
自然语言处理 JavaScript 前端开发
从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值
Chroma 提供了一种新型的搜索方式,通过语义搜索替代传统的关键词匹配,大大提高了信息检索的精度和用户体验。在信息爆炸的时代,语义搜索的出现满足了人们对高效信息获取的需求。随着大模型的发展,Chroma 等技术将会进一步提升信息检索的智能化水平,为各类应用场景带来更多可能性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值
|
7月前
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装openjdk-6/7/8-jdk的步骤
在整个安装过程中,你可能需要管理员权限,因此你可能要使用 `sudo` 来获取必要的权限。记得做完每一个步骤后,都要检查输出,以确保没有发生错误,并且每项操作都成功完成。如果在安装过程中遇到问题,查看 `/var/log/` 下的日志文件对于问题的解决可能是有帮助的。
513 21
|
前端开发 计算机视觉
开源人体动作识别OpenPose的安装与测试
人体关键点检测对于描述人体姿态,预测人体行为至关重要。因此人体关键点检测是诸多计算机视觉任务的基础。其在动作分类,异常行为检测,以及人机交互等领域有着很广阔的应用前景,是计算机视觉领域中一个既具有研究价值、同时又极具挑战性的热门课题。
2984 0
|
机器学习/深度学习 人工智能 编解码
【AI系统】GhostNet 系列
本文介绍了GhostNet系列网络,重点讲解了GhostNet V1和V2的改进。V1提出了Ghost Module,通过廉价操作生成更多特征图,构建轻量级网络。V2在此基础上引入了解耦全连接注意力(DFC)机制,增强了模型捕捉长距离依赖的能力,同时保持了高效的计算性能,特别适合移动设备。文章详细对比了V2与V1的区别,包括结构改进和性能提升。
751 4
【AI系统】GhostNet 系列
|
运维 Kubernetes Serverless
阿里云Argo X K8s玩转工作流引擎,实现大规模并行计算
本文基于2024云栖大会田双坤的演讲,介绍了Kubernetes作为云原生操作系统的角色及其在各类任务中的应用,重点探讨了Argo Workflows在Kubernetes上编排并行任务的能力。面对自建Argo Workflows的挑战,如稳定性、成本和安全性等问题,阿里巴巴云推出了全托管的Serverless Argo工作流,提供全托管、免运维、可观测和易集成的特点,显著提升了任务编排的效率和稳定性。适用于数据处理、科学计算、自动驾驶仿真等多个领域。
|
关系型数据库 数据库 PostgreSQL
postgresql|【基于pg_basebackup命令的归档备份和恢复---热备冷恢复方式】
postgresql|【基于pg_basebackup命令的归档备份和恢复---热备冷恢复方式】
892 0
|
PyTorch 开发工具 算法框架/工具
yolo系列的ONNX部署(C++)【适用于v4\v5\v5-6.1\v7】
yolo系列的ONNX部署(C++)【适用于v4\v5\v5-6.1\v7】
1848 0
yolo系列的ONNX部署(C++)【适用于v4\v5\v5-6.1\v7】
|
Ubuntu Python
在Ubuntu下载Python3.6 并建立软连接
在Ubuntu下载Python3.6 并建立软连接
481 0
|
机器学习/深度学习 算法 PyTorch
基于Pytorch用GAN生成手写数字实例(附代码)
基于Pytorch用GAN生成手写数字实例(附代码)
461 0