目标检测跟踪中的Siamese孪生网络与普通卷积网络(VGG、ResNet)有什么区别?

1、什么是 Siamese 网络?

Siamese网络又叫孪生网络,是一种特殊的神经网络架构,由一对(或多对)共享参数的子网络组成,用于学习输入样本之间的相似性或关系。最早在 1994 年由 Bromley 等人提出,最初被用于签名验证任务。目前广泛应用于目标检测跟踪领域中,基本已经作为目标跟踪的backbone了,提出了很多基于Siamese网络的改进跟踪策略。如:

SiamRPN++:利用深度网络实现Siamese视觉跟踪的进化-CSDN博客

论文速读:SiamRPN++,利用深度网络实现Siamese视觉跟踪的进化-CSDN博客

1.1、核心特性

共享参数(Shared Weights):

  • Siamese 网络的两部分(或多个部分)是完全相同的,具有相同的网络结构和权重。也就是说,无论输入什么样本,Siamese 网络会提取相同的特征。

接受一对输入(Input Pair):

  • 网络接受两个输入样本对(如 x1 和 x2),分别通过共享权重的网络分支进行特征提取。

相似度度量(Similarity Metric):

  • 输出层会计算两个输入的特征向量之间的相似度(如欧氏距离、余弦相似度等),表示这两个输入是否属于同一个类别或存在某种关系。

2、常见任务

Siamese 网络被广泛应用于以下任务:

验证任务(Verification Tasks): 例如人脸验证(是否是同一个人)、签名验证。

匹配任务(Matching Tasks): 如图像检索、推荐系统。

目标跟踪(Tracking): 如 SiamRPN 和 SiamRPN++。

度量学习(Metric Learning): 学习样本之间的相似性度量。

3、Siamese 网络的结构与流程

以一个人脸验证任务为例:

  1. 输入:
    • 输入两个图片 x1 和 x2(例如两张人脸)。
  2. 共享特征提取:
    • 两张图片分别通过共享权重的网络提取特征向量 f(x1)和 f(x2)。
  3. 特征比较:
    • 在特征空间中比较 f(x1)和 f(x2)的相似性(例如计算欧氏距离 ||f(x1) - f(x2)||)。
  4. 输出:
    • 输出一个相似度分数(如 0 表示不相似,1 表示完全相似)。

4、什么是视觉跟踪任务?

在视觉跟踪任务中,模型的输出通常是一张响应图(response map),也就是一个二维矩阵,每个位置对应一个概率值,表示目标出现在该位置的可能性。

4.1、具体步骤

  1. 输入图像
    • 模型接收两部分输入:一个是目标模板图像(通常是初始帧中的目标区域),另一个是搜索区域图像(当前帧的大范围区域)。
  2. 特征提取
    • 模型通过卷积神经网络提取两部分输入的特征。
  3. 相似性计算
    • 利用特征之间的相似性(通常通过交叉相关或卷积操作)生成响应图,表示目标可能出现在搜索区域的每个位置的概率。
  4. 归一化
    • 将响应图中的值归一化为概率形式(如softmax处理),使得所有位置的概率和为1。

4.2、预测分布的形式

  • 响应图是一个二维矩阵。例如,如果搜索区域被划分为 25×25的网格,响应图的大小也是 25×25。
  • 矩阵中的每个值表示目标出现在对应网格位置的概率。

4.3、具体示例

假设我们有以下场景:

  • 搜索区域:目标可能位于一个 255×255 像素的图像中。
  • 响应图大小: 25×25(通过模型下采样或分块生成)。

响应图可能是这样的:

|----------|-----------|-----------|---------|------------|
| 网格位置 | (1,1) | (1,2) | ... | (1,25) |
| 第1行 | 0.01 | 0.02 | ... | 0.01 |
| 第2行 | 0.03 | 0.05 | ... | 0.02 |
| ... | ... | ... | ... | ... |
| 第25行 | 0.01 | 0.02 | ... | 0.60 |

  • 这个矩阵的总和为1,表示概率分布。
  • 如果目标出现在右下角(如 (25,25)),那么靠近这个位置的概率值会更高。

5、Siamese 网络与普通卷积网络(如 VGG、ResNet)的区别

  1. 任务目标不同:
    • 普通卷积网络:
      • 用于分类、回归等任务,输出通常是固定类别的概率分布。例如,ResNet 对图像分类任务的输出是一个包含类别概率的向量。
    • Siamese 网络:
      • 用于学习样本之间的关系,输出通常是一个相似性分数或距离。
  2. 输入结构不同:
    • 普通卷积网络:
      • 接受单一输入图像 x。
    • Siamese 网络:
      • 接受两个输入(或更多),例如输入样本对 (x1,x2)。
  3. 共享权重机制:
    • 普通卷积网络:
      • 没有共享权重,每个输入单独通过完整的网络。
    • Siamese 网络:
      • 两个分支的权重完全共享,确保提取的特征具有一致性。
  4. 输出和损失函数:
    • 普通卷积网络:
      • 输出是类别概率,使用交叉熵损失(Cross Entropy Loss)。
    • Siamese 网络:
      • 输出是相似性分数或距离,使用对比损失(Contrastive Loss)或三元组损失(Triplet Loss)。

6、举例说明:Siamese 网络与普通卷积网络的应用

场景 1:人脸分类(普通卷积网络)

假设你想识别人脸属于哪个特定的已知人物:

  1. 使用 ResNet 或 VGG 提取人脸特征。
  2. 分类层输出类别分布,例如:
    • 输入图片是"张三",输出结果:张三:0.9,李四:0.05,王五:0.05。
  3. 网络只需对固定类别的数据进行分类,不适合处理类别数量动态变化的场景。

场景 2:人脸验证(Siamese 网络)

假设你想验证两张人脸是否是同一个人:

  1. 两张图片 x1 和 x2 输入到 Siamese 网络的两个分支。
  2. 提取特征向量 f(x1) 和 f(x2)。
  3. 计算相似度,例如欧氏距离: d = ||f(x1) - f(x2)||
    • 如果 d<阈值,认为两张图片是同一个人。
    • 如果 d>阈值,认为两张图片不是同一个人。
  4. 这种方法无需明确类别信息,可以处理开放类别场景(如从未见过的新人的验证)。

例如,人脸识别场景中,如果你需要在一个大规模数据库中快速找到与给定人脸最相似的人,Siamese 网络会更高效和灵活。

相关推荐
云和数据.ChenGuang4 小时前
fastapi项目拆分实战数据模型
java·服务器·数据库·人工智能·深度学习·fastapi·强化学习
watersink4 小时前
机器学习HMM
人工智能·机器学习
东方小月4 小时前
从零开发一个 Coding Agent(九):实现 Agent 的工具调用闭环
人工智能·前端框架·node.js
Luhui Dev4 小时前
如何在 WorkBuddy 中使用大角几何:从 MCP 接入到 AI 几何作图
人工智能·数学·算法·agent·luhuidev
孙启超5 小时前
【AI应用开发】什么是混合检索(Hybrid Search)?向量检索 + BM25 关键词检索,适用场景与 RRF 融合原理
人工智能·缓存·llm·向量数据库·bm25·向量化·ai应用开发
The moon forgets5 小时前
Qwen团队提出Ego2Robot, 第一人称视频助力具身VLA训练新数据
人工智能·机器学习·音视频
szxinmai主板定制专家5 小时前
基于 RK3588 + Xilinx Kintex-7 FPGA 异构工业主控板设计方案
arm开发·人工智能·嵌入式硬件·fpga开发·zynq
青山科技分享5 小时前
跨境电商如何做GEO,让商品被AI搜索推荐?
大数据·人工智能·跨境电商
Cloud云卷云舒5 小时前
HaishanDB(海山)|磐维数据库|YashanDB(崖山)深度对比分析
数据库·人工智能·海山数据库·haishandb·移动云海山数据库