SPCL:Siamese Prototypical Contrastive Learning

article/2025/9/30 21:27:36

论文链接:https://arxiv.org/abs/2208.08819 BMVC 2021

abstract
CSL(Contrastive Self-supervised Learning)的一个缺点是,对比损失函数需要大量的负样本,以提供更好的理想互信息边界。

通过变大batch size来增加负样本数理,同时也会增强假负例的影响(某张同类图被错误认为原图的负例),即语义相似的样本(其他同类图片)被远离了原图,从而降低了模型效果。

通过引入一个简单的对比学习模型Siamese Prototypical Contrastive Learning(SPCL)来解决上述问题。关键是使用siamese-style的度量损失(metric loss)来匹配原型内特征,同时增加原型间特征之间的距离。

introduction

CSL核心思想是利用样本的增强图去构建对应的pretext任务。此任务学习深度神经网络提取特征表示的能力,可进一步用于大量下游任务,如图像分类,目标检测,语义分割。

之前说过CSL的缺点即假负例,其有如下解决方法:

1)一种直接的方法就是使用样本的标签信息,即监督对比学习。

2)另一种方法是使用原型(prototype),以task-agnostic(任务无关)的方式解决问题。

  • 聚类可以预先定义,也可以在训练小批量期间计算
  • 来自同一原型的样本包含非常相似的语义信息
  • 学习到的嵌入特征对于下游分类任务提供更好的辨别能力

注:"prototype"指嵌入空间中的样本聚类

实验发现直接添加原型的交叉熵损失会降低性能。此外,通过最小化聚类中心的相似性来分离聚类中心是没有帮助的。实验推测在原始嵌入空间中区分语义假负例是不可行的。为了解决这个问题,提出了一种Siamese-style metric loss,以最大化原型间距离,同时保持原型内相似性。实验揭露在对比投影空间(contrastive projection space)中,假负例与其原图的相似性降低。

Related Works

1.Self-supervised Learning

自监督学习在视觉特征上的高效性可以认为是两方面带来的:pretext tasks,contrastive learning

其中辅助任务有colorization, context autoencoders, spatial jigsaw puzzles and discriminate orientation

2.contrastive learning

SimCLR使用大的batch size来提高性能;

PIRL applies a memory bank来存储和更新在特定阶段所学习到的特征(但是计算量较大);

MoCo and MoCo v2依旧使用memory bank,但是使用动量的方式更新encoder参数,解决了队列中新旧候选样本编码不一致的问题;

Siamese network最大化two views of the anchor的相似性;

DenseCL和SCRL将对比学习应用于像素级和空间级特征,以提高与图像相关的任务的性能。

3.Prototypical Contrastive Learning

与实例对比方法相比,目前使用原型对比方法的模型相对较少。

SwAV专注于使用基于“交换”聚类的机制对相似表示进行分组。

PCL使用原型作为潜在变量,并使用提出的原型损失在基于期望最大化(EM)的框架中执行迭代聚类。

论文使用聚类作为一种无监督学习方法来生成原型作为“伪标签”。此外,提出了siamese-style metric loss来匹配类内特征,并增加类间特征之间的距离。“度量”损失( metric loss)类似于SupCon中的监督约束损失。

Method

1.Overview

Our goal is to learn meaningful visual representations in an unsupervised and task-agnostic style

为了完成上述目标,提出了SCPL,其主要思想为:

  • 将嵌入空间中的样本分组以生成原型
  • 通过最大化/最小化样本之间的簇间/簇内距离来重新定义原型
  • 使用具有交叉熵的原型信息对样本的扩增数据进行正则化。

SCPL主要由四种部分组成:

  • the start-epoch clustering
  • the ordinary contrastive loss
  • the Siamese-style metric loss
  • the prototypical cross-entropy loss

2.Clustering and Feature Extracting

Clustering:以无监督方式将将嵌入特征分组到单独的簇中,这步通过K-means算法来完成,其中k为超参数。

具体过程:在每轮的开始,将数据集X划分若干mini-batches。对于每一个batch,生成对应的增强数据并提取增强样本的特征。然后合并(concatenate)所有嵌入特征,并执行聚类算法以获得原型集C = c1,…ck,其中ck是第k个簇的索引,记录样本的向量。

Feature Extracting:

在这里插入图片描述

3.Contrastive loss

就是常规对比损失,InfoNCE损失:

在这里插入图片描述

4.Siamese-style metric loss

实验证明典型的交叉熵损失使用不会提高下游任务的性能,一个原因是原型集群没有很好地分开,远离聚类中心的样本可能是假正例,并被拉向原图样本,话句话说,原型的语义信息变得更加模糊。

为了解决上述问题,引入Siamese-style metric loss,其匹配类内特征并增加类间特征之间的距离。对于ahcnor原型p的每个特征表示,从p和q中提取两个特征嵌入作为正负对,记为{hp,hp},{hp,hq}

最终利用head projection来预测正负对之间的距离。

在这里插入图片描述

5.Prototypical cross-entropy loss

在SPCL中引入了原型交叉熵损失,以将一个样本的增强数据引导到其对应的原型。当样本对应的增强数据之间的相似性很小时,此损失项很有用,且该对比损失项仅产生极小幅度的梯度。

在这里插入图片描述

注:gp(h)是一个linear projection head,其将特征映射到标签上。

6.SPCL总损失公式

Ltotal = αLcontra + βLmetric + γLproto

Experimental Results

分别使用了3种数据集CIFAR10/100,ImageNet-1K进行实验
注:消融实验内容请看原论文。

1.对于CIFAR10/100

encoder使用的是ResNet-50,optimizer使用的是LARS,学习率是1.0,weight decay为10-6
同时对于起初的10epochs使用linear warmup,学习率器使用的是cosine decay schedule
超参数K为512,代表512个原型用于聚类。

2.对于 ImageNet-1K

超参数K为2048,其他参数大致相同。

Comparison with State-of-the-arts
在这里插入图片描述


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

相关文章

Exploring Simple Siamese Representation Learning论文笔记

写在前面 大三狗随手记录,不喜勿喷。 主要思想 Siamese network常常被用来计算图像的两个增强之间的相似性,但可能会造成模型坍塌(即输出恒定)。作者在本文提出了一个非常简单的Simple Siamese network,简称Simsiam…

SiamCAR:Siamese Fully Convolutional Classification and Regression for Visual Tracking

文章目录 AbstractIntroductionProposed MethodFeature ExtractionBounding Box PredictionThe Tracking Phase 值得关注的几个问题Q1:输入的图片大小不一?Q2:在两者做相关性之前,如何得到特征图?Q3:两者的相关性计算是如何实现的&#xff1f…

TensorFlow搭建VGG-Siamese网络

TensorFlow搭建VGG-Siamese网络 Siamese原理 Siamese网络,中文称为孪生网络。大致结构如下图所示: Siamese网络有两个输入,一个输出。其中,两个输入经过相同的网络层知道成为一个n维向量,再对这个n维向量进行求距离&…

mesa 概述

技术关键词:mesa、OpenGL、dri、gpu、kmd、xsever 目录 一、mesa概述 二、mesa架构 1. 架构设计 2. 模块划分 三、mesa与linux图形系统中的其他模块的关系 四、mesa的编译 五、链接资源 总结 一、mesa概述 mesa是OpenGL、OpenGL ES、Vulkan、OpenCL的一个开…

Siamese 网络(Siamese network)

来源:Coursera吴恩达深度学习课程 上个文章One-Shot学习/一次学习(One-shot learning)中函数d的作用就是输入两张人脸图片,然后输出相似度。实现这个功能的一个方式就是用Siamese网络。 上图是常见的卷积网络,输入图片…

MISF:Multi-level Interactive Siamese Filtering for High-Fidelity Image Inpainting 论文解读与感想

深度学习模型被广泛应用于各种视觉任务的同时,似乎传统的图像处理方式已经被人们渐渐遗忘,然而很多时候传统图像处理方式的稳定性和可解释性依然是深度学习模型所不能达到的。本文是CVPR2022的一篇将传统与深度相结合进行inpainting的文章。 在图像inpa…

Siamese系列文章

说明 在学习目标追踪方面,慢慢读懂论文,记录论文的笔记,同时贴上一些别人写的非常优秀的帖子。 文章目录 说明综述类型笔记SiamFC笔记 SiamRPN笔记 DaSiamRPN笔记 SiamRPN笔记复现 SiamDW笔记 SiamFC笔记 UpdateNet笔记 SiamBAN笔记 SiamMa…

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…