news 2026/4/3 4:52:49

对比学习:【SimCLR】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对比学习:【SimCLR】

🚩 对比学习最经典的框架:SimCLR笔记它来咯!
主要包括:数据增强+编码+投影头+对比损失


文章目录

  • 1. 一句话概括
  • 2. 简介
    • 2.1 模型定位
    • 2.2 历史意义
    • 2.3 核心思想
  • 3. 方法
    • 3.1 数据增强(Data Augmentation)
    • 3.2 编码网络(Encoder Network)
    • 3.3 投影头(Projection Head)
    • 3.4 对比损失(Contrastive Loss)

1. 一句话概括

SimCLR是一种基于对比学习的自监督框架:对每张图像生成两种强增强视图作为正样本对,使用ResNet编码并通过MLP投影头得到对比空间表示,在 batch 内把其他样本当作负样本,用带温度系数的NT-Xent损失拉近正对、拉远负对,从而学习可迁移的视觉表征。

2. 简介

2.1 模型定位

  • 图像分类、目标检测、语义分割的预训练模型

2.2 历史意义

SimCLR(Simple Contrastive Learning of visual Representations),它是自监督学习(Self-Supervised Learning, SSL)在计算机视觉领域的重要里程碑之一,由 Google Research 在 2020 年提出。

利用对比学习,实现自监督学习模型的性能超越了有监督学习模型的性能。

  • 论文《A Simple Framework for Contrastive Learning of Visual Representations》
  • 代码仓库:https://github.com/google-research/simclr

2.3 核心思想

让同一张图像的不同增强视图在特征空间中彼此靠近,同时让不同图像的增强视图彼此远离。(对比学习)

换句话说,模型要学会“识别”哪些特征属于同一图像的不同视角,从而学到对图像变换鲁棒的通用特征。

3. 方法

3.1 数据增强(Data Augmentation)

  • 对同一张原始图像 x随机采样两种不同的增强方式,得到两个视图x i x_ixix j x_jxj(正样本对)
  • 数据增强方式组合包括:
    • 随机裁剪缩放
    • 颜色扰动
    • 随机灰度
    • 高斯模糊
    • 水平翻转
  • 目的:制造视觉上不同但语义相同的样本,迫使模型关注语义而非表面特征。
  • 前两种数据增强方法对效果提升很重要。
importtorchvision.transformsasT# SimCLR 常用的数据增强组合(适用于 ImageNet 风格输入)simclr_train_transform=T.Compose([T.RandomResizedCrop(size=224,scale=(0.08,1.0)),# 随机裁剪缩放T.RandomApply([# 颜色扰动(按概率应用)T.ColorJitter(brightness=0.4,contrast=0.4,saturation=0.4,hue=0.1)],p=0.8),T.RandomGrayscale(p=0.2),# 随机灰度T.GaussianBlur(kernel_size=23,sigma=(0.1,2.0)),# 高斯模糊(kernel_size 建议为奇数,随分辨率调整)T.RandomHorizontalFlip(p=0.5),# 水平翻转T.ToTensor(),# 转成 PyTorch TensorT.Normalize(mean=(0.485,0.456,0.406),std=(0.229,0.224,0.225))# 对每个通道做标准化(这组数来自 ImageNet 的统计)])

3.2 编码网络(Encoder Network)

  • 使用一个卷积神经网络(ResNet)将增强图像x i x_ixix j x_jxj编码为特征向量。

3.3 投影头(Projection Head)

  • 小型非线性网络,通常是MLP

  • 投影头的输出z zz才是对比学习任务的直接输入,训练完成后可丢弃,只用编码器f ( . ) f(.)f(.)提取的特征做下游任务。

3.4 对比损失(Contrastive Loss)

使用 Normalized Temperature-scaled Cross Entropy Loss(NT-Xent)​ 计算损失:


其中,τ:温度参数(temperature),控制分布的平滑程度。


NT-Xent 损失本质是 InfoNCE 的一种写法

损失的演变过程

  • NCE:原本是一种用于估计概率模型中配分函数(partition function)的方法,通过将密度估计问题转化为二分类问题(区分真实数据与噪声数据)。
  • InfoNCE:在 NCE 的基础上,用于最大化输入与表征之间的互信息的下界,在对比学习中,它表现为“让正样本对的相似度高于负样本对”。
  • NT-Xent:一种写法上的转变
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 8:41:24

鹰速光电的Cameralink采集卡接入Labview办法

使用鹰速光电的Cameralink转USB采集卡,型号:ES-CV-CLF-U3或者ES-CV-CLB-U3,除了提供开放的SDK支持常用的VC、C#、QT等开发。还提供的便利的Labview开发支持。USB的Cameralink采集卡,可以做到宽温-40~75℃,工业级恶劣适…

作者头像 李华
网站建设 2026/3/28 10:56:13

刘诗诗元气高马尾造型美出圈!剪彩时细节动作尽显温柔底色

12月23日,深圳万象城可隆马年限定活动现场,刘诗诗以利落高马尾搭配冲锋衣的户外造型亮相,将“姐感”与“妹感”完美融合,清爽女大气息扑面而来,与品牌“城市林间”的主题相得益彰。从活动现场的青春活力到剪彩环节的细…

作者头像 李华
网站建设 2026/4/2 9:51:13

tinkphp代码访问返回404的处理方法,thinkphp的伪静态

1.直接创建一个新的demo都部署到服务器无法访问2.小皮面板直接访问初始代码也是无法访问返回404处理方法:1.没有添加伪静态,给伪静态添加如下代码即可location ~* (runtime|application)/{return 403; } location / {if (!-e $request_filename){rewrite…

作者头像 李华
网站建设 2026/3/30 19:44:15

手把手教你用MCGS撸一个立体车库控制系统

No4.00 基于MCGS 23升降横移式立体车库模拟仿真设计 程序有全部注释。 编程软件:MCGS 嵌入版7.7以上版本 把最好的技术分享给大家,欢迎光临本小店 实现功能: (1)有紧急停止功能。 (2)具有检测空车位并指示…

作者头像 李华