Siamese系列文章

article/2025/9/30 22:32:49

说明

在学习目标追踪方面,慢慢读懂论文,记录论文的笔记,同时贴上一些别人写的非常优秀的帖子。

文章目录

    • 说明
    • 综述类型笔记
    • SiamFC
      • 笔记
    • SiamRPN
      • 笔记
    • DaSiamRPN
      • 笔记
    • SiamRPN++
      • 笔记
      • 复现
    • SiamDW
      • 笔记
    • SiamFC++
      • 笔记
    • UpdateNet++
      • 笔记
    • SiamBAN
      • 笔记
    • SiamMask
      • 笔记
    • SiamCAR
      • 笔记


综述类型笔记

目标跟踪之Siamese网络
单目标跟踪paper小综述

SiamFC

SiamFC:基于全卷积孪生网络的目标跟踪算法
【ECCV 2016】SiamFC 细节笔记
SiamFC完整的跟踪过程
Siam-FC代码,逐行超详细解读。

笔记

       SiamFC在初始脱机阶段,训练深度卷积网络来解决更一般的相似度学习问题,然后在跟踪过程中简单地在线评估此函数。
       主要是训练一个Siamese网络来在一个更大的搜索图像中定位一个样本图像。新提出的Siamese架构,它对于搜索图像是完全卷积的密集和高效的滑动窗口评估是通过一个双线性层来实现的,该层计算两个输入的相互关系。
在这里插入图片描述
       重要贡献是:脱离了用于跟踪的传统在线学习方法,展示了一种侧重于在离线阶段学习强嵌入的替代方法。提出Siamese网络开创性的一个框架。

  • 优点:提前离线训练好,只是在线检测,不更新。不更新目标模板图像使得计算速度更快,但对特征的要求也更高。特征必须对各种干扰和形变都非常鲁棒。SiamFC的特征来自AlexNet的conv5,属于高层语义特征,不会像HoG那样寻求纹理相似度。在线不更新带来的另一个好处表现在long-term跟踪。因为目标模板不会被污染,而且检测区域足够大,一般的干扰不会造成跟踪失败。
  • 在线更新与在线不更新对比:
    在线更新:优点->随时适应目标的变化和背景信息的变化。对特征的要求较低,低层特征计算速度快分辨率高;缺点->模型更新会累计误差,遮挡或失败时会学到背景,一旦丢失即造成跟踪失败。
    在线不更新:优点->不更新速度更快,目标模板不会被污染,long-term特性优秀;缺点->对特征的要求高,必须是表达能力足够强足够鲁棒的高层语义特征,通常计算速度慢、分辨率低。
  • 缺点:短时间追踪,不能应对目标丢失,或者在方块外,对目标没进行进一步处理

SiamRPN

1.SiamRPN阅读笔记:High Performance Visual Tracking with Siamese Region Proposal Network 写的很好,重点看!!!!
2.【论文笔记】CVPR2018_SiamRPN
3.SiamRPN 论文理解
4.关于RPN的理解一文读懂Faster RCNN
(RegionProposal Network)RPN网络结构及详解

笔记

SiamRPN将siam与检测领域的RPN进行结合,它由特征提取的Siamese子网络和区域建议子网络组成,包括分类分支和回归分支。
在这里插入图片描述
重要贡献是:
       1.提出基于大规模图像对的端到端离线训练的SiameseRPN网络(SiameseRPN)用于跟踪任务,
       2.在在线跟踪过程中,提出的框架被制定为一个局部一次性检测任务。

  • 跟踪过程:
  1. 输入模板帧和检测帧,分别使用Siamese网络提取特征,使用RPN生成k个proposal
  2. 对模板支路的proposal和检测支路的proposal做相似性度量,获得bounding box
  3. 使用NMS(Non-maximum-suppression)对最后预测输出的bounding box进行筛选
  4. 目标尺寸更新
  • 优点:在跟踪阶段,SiamRPN将跟踪视作单样本检测任务(one-shot detection task),就是把第一帧的目标视为检测的模板,在后续帧里面检测与它相似的目标。得益于这些改良,传统的多尺度测试和在线微调可以被舍弃,同时大大提高了速度。

  • 缺点:siamRPN缺陷分析:

  1. 在训练阶段,存在样本不均衡问题。即大部分样本都是没有语义的背景(注:背景不是非target的物体,而是指那些既不属于target,也不属于干扰物,没有语义的图像块,例如大片白色。)这就导致了网络学到的仅仅是对于背景与前景的区分,即在图像中提取出物体,但我们希望网络还能够识别target与非target物体。作者从数据增强的角度解决此问题。
  2. 模型判别性不足,缺乏模板的更新,即在heatmap中很多非target的物体得分也很高;甚至当图像中没有目标时,依然会有很高的得分存在。作者认为与target相似的物体对于增强模型的判别性有帮助,因此提出了distractor-aware module对干扰(得分很高的框)进行学习,更新模板,从而提高siam判别性。但是排名靠前的都是与target很相似的物体,也就是说该更新只利用到了target的信息,没有利用到背景信息。
  3. 由于第二个缺陷,原始的siam以及siamRPN使用了余弦窗,因此当目标丢失,然后从另一个位置出现,此时siam不能重新识别target, (siamRPN的搜索区域是上一阵的中心加上预设的搜索区域大小形成的搜索框),该缺陷导致siam无法适应长时间跟踪的问题。对此作者提出了local-to-global的搜索策略,其实就是随着目标消失帧数的增加,搜索区域逐渐扩大。

DaSiamRPN

DaSiamRPN(ECCV2018)论文详解: 朱政- 高性能单目标跟踪算法的探索
DaSiamRPN学习

笔记

DaSiamRPN结构图和SiamRPN类似,通道进行了改变。
在这里插入图片描述
重要贡献是:
       1.分析了SiamRPN存在的问题(在上面)
       2.能够长时间的追踪,并且对于有目标丢失(受到遮挡或者出了检测范围)在此出现后能继续追踪

  • 优点: 能够长时间的追踪,并且对于有目标丢失(受到遮挡或者出了检测范围)在此出现后能继续追踪

​作者通过数据增强解决训练时样本不均衡问题。

​1. 作者发现siamRPN对于未训练过的类别的目标,跟踪的效果会变差。因此增加训练类别对结果还有改善。其实就是增大训练集类别,除了直接增加训练集外,可以人为的增强,例如将target抠出来,换个背景,以此来增加正样本的数量。
2. 增加来自不同类别的负样本可以抑制网络随意匹配前景的问题,例如在目标被遮挡以及消失时预测点乱飘。
​3.增加来自同一类别的负样本,可以增强网络的对target的细粒度区分。
4.在常规的数据增强方法外,作者发现增加图像的运动模糊也有效

Distractor-aware
​ 作者对heatmap得到目标先NMS去除一些冗余框,然后将相似度靠前的框(干扰物)拿出来,让网络对其学习,拉大target_embedding与这些干扰物之间的相似度。
实质上是对exemplar的更新修正。注意此处可以看到exemplar采用的不是第一帧,而是上一帧的目标,这就会带来模板污染问题,但是DaSiam却可以胜任长时间跟踪问题,可见该跟新策略的抗污染性不错。可以分析,污染问题的结果就是target及其相似物体的得分随着迭代次数的增加,得分排名变化,但是该更新策略不是暴力的直接替换,而是综合了排名靠前的框,因此可以有效的抑制模板污染问题。
从后面的实验结果也可以看到加入了更新策略的DaSiam比不更新的SiamRPN无论是在A还是R上都要高。证明该更新策略有效。

DaSiamRPN for Long-term Tracking
​ siamRPN的搜索区域好像只是上一帧目标的附近,因此当目标跟踪失败后,当目标重新出现时无法再次有效识别目标,因为目标很可能已经离开了搜索区域。

​ 所以DaSiamRPN的loacl-to-global策略就是当目标跟踪失败后,搜索区域不断增大。

  • 缺点

SiamRPN++

SiamRPN++详解-比较详细
【SiamRPN++】论文阅读笔记
SiamRPN++算法详解
SiamRPN++论文阅读SiamRPN++论文和代码阅读–代码解读(重要)

笔记

SiamRPN++的贡献
1、对Siamese跟踪器进行了深入分析,证明了在使用深度网络时,由于平移不变性再到破坏,导致精度下降。
2、提出了一种简单而有效的采样侧策略,打破了空间不变性的限制,成功地训练了一种基于ResNet网络结构的Siamese跟踪器。
3、提出了一种逐层特征聚合结构,用于互相关操作,帮助跟踪器从多个层次的特征中预测相似度图。
4、提出了一种逐深度互相关结构,增强了互相关性,生成了多组语义相似度图。

复现

这里贴一下复现的结果,采用coco数据集15/1000的数据进行训练,采取10个epoch,第5个epoch开始对backbone进行更新,共用时间10min,并且和已经训练好的进行对比,如下:

--------------------------------------------------------
| Tracker name  | Success | Norm Precision | Precision |
--------------------------------------------------------
| checkpoint_e1 |  0.060  |     0.000      |   0.067   |
----------------------------------------------------------------------------------------------------------------
| Tracker name  | Success | Norm Precision | Precision |
--------------------------------------------------------
| checkpoint_e3 |  0.211  |     0.000      |   0.279   |
--------------------------------------------------------
--------------------------------------------------------
| Tracker name  | Success | Norm Precision | Precision |
--------------------------------------------------------
| checkpoint_e5 |  0.282  |     0.000      |   0.433   |
--------------------------------------------------------
--------------------------------------------------------
| Tracker name  | Success | Norm Precision | Precision |
--------------------------------------------------------
| checkpoint_e7 |  0.381  |     0.000      |   0.588   |
--------------------------------------------------------
---------------------------------------------------------
|  Tracker name  | Success | Norm Precision | Precision |
---------------------------------------------------------
| checkpoint_e10 |  0.319  |     0.000      |   0.527   |
-----------------------------------------------------------------------------------------------------------------
| Tracker name         | Success | Norm Precision | Precision |
--------------------------------------------------------
| Siamrpn-resnet-trainok|  0.661  |     0.000      |   0.872   |
--------------------------------------------------------

SiamDW

SiamDW阅读笔记
SiamDW论文作者张志鹏视频笔记
SiamDW阅读笔记:Deeper and Wider Siamese Networks for Real-Time Visual Tracking

笔记

作者工作分为两部分:

  • 作者通过系统的实验发现了主干网络影响孪生网络的三个重要因素,也就是最后一层感受野大小、网络总步长和特征的padding的有无,并且提出了一个孪生网络结构的设计指南。
  • 在这个指南的帮助下,作者提出了一个新的网络结构,它能深能宽,替换了SiamFC和SiamRPN的主干网络,使之性能较之原来的跟踪器得到提升,并取得了State-of-the-Art
    在之后的设计中,可以借鉴下这篇文章的思路。

SiamFC++

AAAI2020跟踪算法SiamFC++的配置(SiamFC++: Towards Robust and Accurate Visual Tracking)
SiamFC++: Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines 论文学习
单目标追踪论文阅读系列(二)——《SiamFC++(AAAI 2020)》

笔记

guide:
提出四个准则,通过ablation study (消融实验),验证了提出的可行性,类似SiamDW。

  • G1 : 分类和状态估计任务的分离:分类任务将目标从干扰物和背景中分类出来,目标状态的估计如bbox回归等有利于对目标尺度变化的适应性
  • G2 : 得分无歧义:分类分数应该直接表示目标存在的置信度分数,即在“视野”中对应像素的子窗口,而不是预设置的锚点框。如SiamRPN容易产生假阳性结果,从而导致跟踪失败。
  • G3 : 无先验:不应该有目标比例/比率这样的先验知识,基于数据分发的先验知识阻碍了模型的泛化能力。
  • G4 : 预测质量的评估:直接使用分类置信度进行边框选择会导致性能下降,所以应该使用与分类无关的估计质量评分。目标状态评估分支(例如ATOM和DiMP:基于IoU-Net)的准确性很大程度上取决于此准则。

UpdateNet++

【论文阅读】目标跟踪: UpdateNet - 精读笔记 (这篇文章写的非常详细)

笔记

  • 原文摘要部分:
    Siamese方法通过从当前帧中提取一个外观模板来解决视觉跟踪问题,该模板用于定位下一帧的目标。一般来说,这个模板与前一帧的累积模板是线性组合的,导致信息随着时间呈指数衰减。虽然这种更新方法带来了改进的结果,但它的简单性限制了学习更新可能获得的潜在收益。因此,我们建议用一种学习更新的方法来代替手工制作的更新函数。我们使用一个卷积神经网络,称为UpdateNet,它给出了初始模板,累积模板和当前帧的模板,目的是估计下一帧的最优模板。UpdateNet是紧凑的,可以很容易地集成到现有的Siamese跟踪器。
  • 简单来说,之前跟踪器都是样本模板是第一帧,现在加了一个(UpdateNet)更新网络,不断对初始模板进行更新,得到更好的模板,从而提高性能。
  • 如果对于网络追踪器,应该都可以加上这么一部分,提高性能。

SiamBAN

SiamBAN详细分析,一看就懂! 这篇文章写的很详细。
SiamFC++与SiamBAN这两个的对比。

笔记

  • 利用全卷积网络的表达能力,提出了一个简单而有效的视觉跟踪框架SiamBAN,该框架不需要多尺度搜索模式和预定义的候选框。SiamBAN直接对对象进行分类,并在统一的网络中回归边界框。因此,视觉跟踪问题就变成了分类回归问题
  • SIamBAN,按照意思分析是孪生自适应框。“孪生”,说明该跟踪使用了Siamese网络架构;而“自适应框”,则是该跟踪器采用了anchor-free的策略,不预先设定anchor框的尺寸,使得框拥有更大强大的自由度。

可以得出特征图对应搜索补丁上每点预测框的左上角和右下角(注意理想情况下每点的预测框应该相同,因为原理中的偏差是每点与真实框的距离,那么反推回来每点预测的应该都是真实框)。通过将左上角和右下角的转换,可以得到特征图对应搜索补丁上每点的预测框,进而也能得到预测框与真实框的IOU。利用回归损失函数:1 − I O U 1-IOU1−IOU可以进行训练

SiamMask

【阅读笔记】SiamMask
SiamMask算法详解

笔记

作者提出的模型,可以同时实现视频目标跟踪和视频目标分割这两个任务,并能达到实时的效果。作者称这个模型为SiamMsk。该模型通过在用于目标跟踪的全卷积Siamese神经网络上增加mask分支来实现目标的分割,同时增强网络的loss,优化网络。一旦网络训练好之后,SiamMask仅依赖于初始的一个bounding box就可以实现类别无关的目标实时跟踪及分割(at 35 frames per second)。这个模型简单,功能多样,速度快,其效果也超越了其他跟踪方法。同时,还在DAVIS-2016, DAVIS-2017视频分割数据集上取得了具有竞争力的表现和最快的速度。

SiamCAR

SiamCAR的详细解答,一看就会,不会请打我

笔记

SiamCAR 和SiamFC++ 大体差不多,采用了resnet50的框架,SiamFC++采用AlexNet , SiamBAN是对0 ,1 分类进行了创新,但是SiamBAN在特征提取网络论文中说实现了,三个互相关层的自适应融合,但是在代码中并没有实现,只是简单采用了 平均法1/3,而SiamCAR实现了自适应融合。这里上面的链接写的很详细。


http://chatgpt.dhexx.cn/article/Fj93X4AS.shtml

相关文章

SiamRPN阅读笔记:High Performance Visual Tracking with Siamese Region Proposal Network

这是来自商汤的一篇文章 发表在CVPR2018上 论文地址 目录: 文章目录 摘要1.引言2.相关工作2.2 RPN2.3 One-shot learning 3.Siamese-RPN framework3.1 孪生特征提取子网络3.2 候选区域提取子网络3.3 训练阶段:端到端训练孪生RPN 4. Tracking as one-sho…

【度量学习】Siamese Network

基于2-channel network的图片相似度判别 一、相关理论 本篇博文主要讲解2015年CVPR的一篇关于图像相似度计算的文章:《Learning to Compare Image Patches via Convolutional Neural Networks》,本篇文章对经典的算法Siamese Networks 做了改进。学习这…

【论文阅读】Learning to Rank Proposals for Siamese Visual Tracking

Learning to Rank Proposals for Siamese Visual Tracking:2021 TIP 引入 There are two main challenges for visual tracking: 首先,待跟踪目标具有类不可知性和任意性,关于目标的先验信息很少。 其次,仅仅向跟踪器…

深度学习笔记-----多输入网络 (Siamese网络,Triplet网络)

目录 1,什么时候需要多个输入 2,常见的多输入网络 2.1 Siamese网络(孪生网络) 2.1 Triplet网络 1,什么时候需要多个输入 深度学习网络一般是输入都是一个,或者是一段视频切片,因为大部分的内容是对一张图像或者一段…

Siamese networks

Siamese Network 是一种神经网络的架构,而不是具体的某种网络,就像Seq2Seq一样,具体实现上可以使用RNN也可以使用CNN。Siamese Network 就像“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的(共享权值即左…

Siamese Network理解(附代码)

author:DivinerShi 文章地址:http://blog.csdn.net/sxf1061926959/article/details/54836696 提起siamese network一般都会引用这两篇文章: 《Learning a similarity metric discriminatively, with application to face verification》和《 Hamming D…

详解Siamese网络

摘要 Siamese网络用途,原理,如何训练? 背景 在人脸识别中,存在所谓的one-shot问题。举例来说,就是对公司员工进行人脸识别,每个员工只给你一张照片(训练集样本少),并且…

Siamese网络(孪生网络)

1. Why Siamese 在人脸识别中,存在所谓的one-shot问题。举例来说,就是对公司员工进行人脸识别,每个员工只有一张照片(因为每个类别训练样本少),并且员工会离职、入职(每次变动都要重新训练模型…

Siamese网络(孪生神经网络)详解

SiameseFC Siamese网络(孪生神经网络)本文参考文章:Siamese背景 Siamese网络解决的问题要解决什么问题?用了什么方法解决?应用的场景: Siamese的创新Siamese的理论Siamese的损失函数——Contrastive Loss损…

8.HttpEntity,ResponseEntity

RequestBody请求体,获取一个请求的请求体内容就不用RequestParam RequestMapping("/testRequestBody")public String testRequestBody(RequestBody String body){System.out.println("请求体: "body);return "success";}只有表单才有…

使用restTemplate进行feign调用new HttpEntity<>报错解决方案

使用restTemplate进行feign调用new HttpEntity<>报错解决方案 问题背景HttpEntity<>标红解决方案心得Lyric&#xff1a; 沙漠之中怎么会有泥鳅 问题背景 今天才知道restTemplate可以直接调用feign&#xff0c;高级用法呀&#xff0c;但使用restTemplate进行feign调…

HttpClient 源码详解之HttpEntity

HttpClient 源码详解 之HttpEntity 1. 类释义 An entity that can be sent or received with an HTTP message. Entities can be found in some requests and in responses, where they are optional. There are three distinct types of entities in HttpCore, depending on …

System.Net.Http.HttpClient

本文主要是介绍如何用HttpClient请求带参数的服务&#xff0c;请求服务为某翻译API 直接上源码 1.添加using System.Net;的引用 using System.Net; 2.使用HttpClient发送请求 public static async void Fanyin_HttpClient(string fromString) {Console.WriteLine($"F…

ResponseEntity类和HttpEntity及跨平台路径问题

1. 简介 使用spring时&#xff0c;达到同一目的通常有很多方法&#xff0c;对处理http响应也是一样。本文我们学习如何通过ResponseEntity设置http相应内容、状态以及头信息。 ResponseEntity是HttpEntity的扩展&#xff0c;添加一个HttpStatus状态代码。在RestTemplate和Con…

RestTemplate发送HTTP、HTTPS请求

前面我们介绍了如何使用Apache的HttpClient发送HTTP请求,这里我们介绍Spring的Rest客户端(即:RestTemplate) 如何发送HTTP、HTTPS请求。注:HttpClient如何发送HTTPS请求,有机会的话也会再给出示例。 声明:本人一些内容摘录自其他朋友的博客&#xff0c;链接在本文末给出&#…

HttpEntity的用法

关于HttpEntity的用法 HttpEntity表示http的request和resposne实体&#xff0c;它由消息头和消息体组成。 从HttpEntity中可以获取http请求头和回应头&#xff0c;也可以获取http请求体和回应体信息。HttpEntity的使用&#xff0c;与RequestBody 、ResponseBody类似。 HttpEnti…

关于HttpEntity的用法

关于HttpEntity的用法 HttpEntity表示http的request和resposne实体&#xff0c;它由消息头和消息体组成。从HttpEntity中可以获取http请求头和回应头&#xff0c;也可以获取http请求体和回应体信息。 HttpEntity的使用&#xff0c;与RequestBody 、ResponseBody类似。HttpEntit…

查询MySQL数据库中表结构的几种方法

mySQL: 方法一、二、三&#xff1a;是在本数据库中查询。 /** 方法一 **/ show columns from activity_station; /** 方法二 **/ desc activity_station; describe activity_station;/** 方法三 **/ show create table activity_station;方法四是在统计数据库中查询。 informa…

mysql 表结构查询的SQL语句

1、查看表结构 desc student;2、查看表的DDL语句 show create table student;3、查看列的结构信息 select column_name,data_type,column_comment,column_key,extra,character_maximum_length,is_nullable,column_default from information_schema.columns where table_sch…

mysql查看表结构 desc 表名;

查看表结构 语法&#xff1a;desc 表名;