[ 对比学习篇 ] 经典网络模型 —— Contrastive Learning

news2024/11/15 19:50:04

🤵 Author :Horizon Max

编程技巧篇:各种操作小结

🏆 神经网络篇:经典网络模型

💻 算法篇:再忙也别忘了 LeetCode


[ 对比学习篇 ] 经典网络模型 —— Contrastive Learning

  • 🚀 01. InstDisc
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 02. InvaSpread
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 03. CPC
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 04. CMC
    • 🎨 结构框图
      • 🚩 详解
  • 🚀 05. MoCov1
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 06. SimCLRv1
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 07. Mocov2
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 08. SimCLRv2
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 09. SWaV
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 10. BYOL
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 11. SimSiam
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 12. Mocov3
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果
  • 🚀 13. DINO
    • 🎨 结构框图
      • 🚩 详解
      • 🚩 效果



🚀 01. InstDisc


在这里插入图片描述

📜 Paper: Unsupervised Feature Learning via Non-Parametric Instance Discrimination [CVPR 2018]

🖥️ GitHub: lemniscate.pytorch


🎨 结构框图

在这里插入图片描述

Figure 1. The pipeline

🚩 详解

  • 每个图片看成一个类别;
  • 利用 memory bank 来存储图像经神经网络编码后的特征(128维);
  • 正样本:该图像本身 + 经过数据增强后的图像;
  • 负样本:数据集中其他的图像(从 memory bank 中随机抽取4096个样本);

超参数设定:

  • temperatureτ = 0.07;
  • NCE with m = 4, 096 to balance performance and computing cost;
  • trained for 200 epochs using SGD with momentum;
  • batch size = 256;
  • learning rate is initialized to 0.03, scaled down with coefficient 0.1 every 40 epochs after the first 120 epochs;

🚩 效果

在这里插入图片描述




🚀 02. InvaSpread


在这里插入图片描述

📜 Paper: Unsupervised Embedding Learning via Invariant and Spreading Instance Feature [CVPR 2019]

🖥️ GitHub: Unsupervised_Embedding_Learning


🎨 结构框图

在这里插入图片描述

Figure 1. The framework

🚩 详解

  • 没有使用额外的数据结构去存储大量的样本信息;
  • 正负样本都来自于同一个 minibatch
  • 使用同一个编码器进行端到端的学习;
  • 正样本:该图像本身 + 经过数据增强后的图像(2);
  • 负样本:其他图像 + 经过数据增强后的图像((batch size-1) × 2);
  • 未能取得很好结果原因:batch size 太小导致负样本数量较小;

🚩 效果

在这里插入图片描述




🚀 03. CPC


在这里插入图片描述

📜 Paper: Representation Learning with Contrastive Predictive Coding [None 2018]

🖥️ GitHub: None


🎨 结构框图

在这里插入图片描述

Figure 1. Model overview

🚩 详解

  • 可以应用于音频、图片、强化学习;
  • 将输入当成序列,利用前面的输入通过 RNN 或 LSTM 等网络输出来进行预测;
  • 正样本:预测结果;
  • 负样本:随机样本通过 genc 得到的结果;

🚩 效果

在这里插入图片描述




🚀 04. CMC


在这里插入图片描述

📜 Paper: Contrastive Multiview Coding [ECCV 2020]

🖥️ GitHub: CMC


🎨 结构框图

在这里插入图片描述

Figure 1. Model overview

🚩 详解

  • 增大不同视角之间的互信息(视觉、听觉、触觉);
  • 数据集:NYU RGBD,包含原始图像、深度信息、SwAV ace normal、分割图像;
  • 正样本:同一图像的不同视角;
  • 负样本:其他图像;
  • 缺点:不同视角下使用的编码器不一样,计算成本过高;

  • 作者后来又提出了 不同网络 得到的特征也应该尽可能相似;
  • 利用蒸馏网络(teacher net & student net);



🚀 05. MoCov1


在这里插入图片描述

📜 Paper: Momentum Contrast for Unsupervised Visual Representation Learning [CVPR 2020]

🖥️ GitHub: moco


🎨 结构框图

在这里插入图片描述

Figure 1. Model overview

在这里插入图片描述

Figure 2. Conceptual comparison of three contrastive loss mechanisms

🚩 详解

  • InstDisc 的改进;
  • 提出了 队列(queue) 来解决 memory bank 中的大字典的问题;
  • 提出了 动量编码器 来解决 字典中特征不一致的问题;
  • 利用 动态字典 对 队列中的特征进行存储,每一次更新得到的 k 都会取代最开始的 k 值;
  • 动量编码器:yt = m·yt-1 + (1-m)·xt 使输出不完全依赖于当前的输入,还会收到上一个输出的影响,0 ≤ m ≤ 1 ,实现缓慢的更新每一次新的到的 k 值,使字典中的特征尽可能的保持一致;
  • 正负样本都位于 队列当中,确保正负样本都是由同一个编码器提取得到的;

🚩 效果

在这里插入图片描述




🚀 06. SimCLRv1


在这里插入图片描述

📜 Paper: A Simple Framework for Contrastive Learning of Visual Representations [ICML 2020]

🖥️ GitHub: simclr


🎨 结构框图

在这里插入图片描述

Figure 1. The framework

🚩 详解

  • 增大数据增强的数量;
  • 编码后的特征再经过一个 g(·) 函数(MLP层) 再求 loss 值,实现更好的训练 特征编码器;
  • 设置了更大的 batchsize;
  • 训练时间更久;

🚩 效果

在这里插入图片描述

在这里插入图片描述

数据增强策略及效果

在这里插入图片描述




🚀 07. Mocov2


在这里插入图片描述

📜 Paper: Improved Baselines with Momentum Contrastive Learning [None 2020]

🖥️ GitHub: None


🎨 结构框图

在这里插入图片描述

Figure 1. A batching perspective of two optimization mechanisms for contrastive learning

🚩 详解

  • 借鉴 SimCLRv1 的策略,添加了MLP层,使用了数据增强,训练时使用 cos learning rate schedule,训练更多epochs;

🚩 效果

在这里插入图片描述




🚀 08. SimCLRv2


在这里插入图片描述

📜 Paper: Big Self-Supervised Models are Strong Semi-Supervised Learners [NeurIPS 2020]

🖥️ GitHub: simclr


🎨 结构框图

在这里插入图片描述

Figure 1. The framework

🚩 详解

  • 使用更大的骨干网络模型;
  • 增加 MLP层,实验测试两层最佳;
  • 使用动量编码器,参考 MoCo;

🚩 效果

在这里插入图片描述




🚀 09. SWaV


在这里插入图片描述

📜 Paper: Unsupervised Learning of Visual Features by Contrasting Cluster Assignments [NeurIPS 2020]

🖥️ GitHub: swav


🎨 结构框图

在这里插入图片描述

Figure 1. Model overview

🚩 详解

  • 生成多个视角,利用一个视角得到的特征去预测另一个视角的特征;
  • 与聚类工作相结合,利用 聚类中心(3000个) 进行预测;
  • cz1 预测 Q2, cz2 预测 Q1,c 为聚类中心,z1 和 z2 为提取的特征编码;
  • 采用聚类中心:可以降低采样的负样本数量从而减少计算成本,解决正样本也纳入到负样本中导致的样本不均衡的问题;
  • 提出 Muti-crop 的数据增强策略,多尺度的剪裁原始图像作为数据增强;

🚩 效果

在这里插入图片描述




🚀 10. BYOL


在这里插入图片描述

📜 Paper: Bootstrap Your Own Latent A New Approach to Self-Supervised Learning [NeurIPS 2020]

📜 Blog: Understanding Self-Supervised and Contrastive Learning with “Bootstrap Your Own Latent” (BYOL)

🖥️ GitHub: byol


🎨 结构框图

在这里插入图片描述

Figure 1. BYOL’s architecture

🚩 详解

  • fθ 和 fξ 的网络结构一样,模型参数更新不同,fξ 采用动量编码器更新;
  • gθ 和 gξ 是类似 SimCLR 的 MLP层,与 fθ 和 fξ 的更新策略一样;
  • 在模型最后输出部分 zθ 再经过一个 MLP层 得到 qθ(zθ),利用 qθ(zθ) 预测 z’ξ 计算 loss ;
  • 模型测试阶段使用 yθ 作为输出;

🚩 效果

在这里插入图片描述




🚀 11. SimSiam


在这里插入图片描述

📜 Paper: Exploring Simple Siamese Representation Learning [CVPR 2021]

🖥️ GitHub: simsiam


🎨 结构框图

在这里插入图片描述

Figure 1. SimSiam architecture

在这里插入图片描述

Figure 2. Comparison on Siamese architectures

🚩 详解

  • 较 BYOL 没有使用动量编码器进行参数更新;
  • 总结性工作;

🚩 效果

在这里插入图片描述

Comparisons on ImageNet linear classification

在这里插入图片描述

Transfer Learning



🚀 12. Mocov3


在这里插入图片描述

📜 Paper: An Empirical Study of Training Self-Supervised Vision Transformers [ICCV 2021, Oral]

🖥️ GitHub: moco-v3


🎨 结构框图

Figure 1. Algorithm

🚩 详解

  • 结合 MoCov2 和 SimSiam ;
  • 骨干网络替换成了 ViT ;

🚩 效果

在这里插入图片描述




🚀 13. DINO


在这里插入图片描述

📜 Paper: Emerging Properties in Self-Supervised Vision Transformers [ICCV 2021]

🖥️ GitHub: dino


🎨 结构框图

在这里插入图片描述

Figure 1. Model overview

Figure 1. Algorithm

🚩 详解

  • 融合 ViT 模型;
  • 使用 student gθs 得到的结果 P1 去预测 teacher gθt 得到的结果 P2

🚩 效果

在这里插入图片描述

Self-attention from a Vision Transformer with 8 × 8 patches trained with no supervision




参考:

对比学习论文综述【论文精读】


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB介绍及使用教程

文章目录一、MongoDB介绍1. 什么是MongoDB2. 为什么要用MongoDB3. MongoDB的应用场景4. MongoDB基本概念二、MongoDB使用教程1.下载安装(Windows)2.MongoDB Conpass简单使用(选学)3.使用navicat连接MongoDB4.JAVA项目中使用MongoD…

JVM11 垃圾回收

1.1GC分类与性能指标 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 Java不同版本新特性 语法层面:Lambda表达式、switch、自动拆箱装箱、enumAPI层面…

AI稳定生成图工业链路打造

前沿这篇文章会以比较轻松的方式,跟大家交流下如何控制文本生成图片的质量。要知道如何控制文本生成质量,那么我们首先需要知道我们有哪些可以控制的参数和模块。要知道我们有哪些控制的参数和模块,我们就得知道我们文本生成图片的这架机器或…

新手福利——x64逆向基础

一、x64程序的内存和通用寄存器 随着游戏行业的发展,x32位的程序已经很难满足一些新兴游戏的需求了,因为32位内存的最大值为0xFFFFFFFF,这个值看似足够,但是当游戏对资源需求非常大,那么真正可以分配的内存就显得捉襟…

测试人员如何运用好OKR

在软件测试工作中是不是还不知道OKR是什么?又或者每次都很害怕写OKR?或者总觉得很迷茫,不知道目标是什么? OKR 与 KPI 的区别 去年公司从KPI换OKR之后,我也有一段抓瞎的过程,然后自己找了两本书看,一本是《OKR工作法》&#xf…

WPF_ObservableCollection基本使用及其注意项

文章目录一、引言二、ObservableCollection三、结语一、引言 在GUI编程中经常会用到条目控件,常见的如ComboBox(下拉列表框),它内部往往有多个项。 在使用一些图形框架(Qt、WinForm)上进行原始开发时&…

安卓mvvm

AndroidX的意思是android extension libraries, 也就是安卓扩展包 AndroidX其实是Jetpack类库的命名空间 (190条消息) AndroidX初识_Neda Wang的博客-CSDN博客https://blog.csdn.net/weixin_38261570/article/details/111500044 viewmodel ViewModel类旨在以注重生命周期的方…

【机器学习】决策树-C4.5算法

1.C4.5算法 C4.5算法与ID3相似,在ID3的基础上进行了改进,采用信息增益比来选择属性。ID3选择属性用的是子树的信息增益,ID3使用的是熵(entropy, 熵是一种不纯度度量准则),也就是熵的变化值&…

回溯算法理论基础及组合问题

文章目录回溯算法理论基础什么是回溯法回溯法的效率回溯法解决的问题如何理解回溯法回溯法模板组合问题回溯算法理论基础 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 所以以下讲解中&…

LPWAN及高效弹性工业物联网核心技术方案

20多年前的一辆拖拉机就是一个纯机械的产品,里面可能并没有电子或者软件的构成;而随后随着软件的发展,拖拉机中嵌入了软件,它能控制发动机的功率及拖拉机防抱死系统;接下来,通过融入各种软件,拖…

js逆向基础篇-某房地产网站-登录

提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除! 网站链接:aHR0cHM6Ly9tLmZhbmcuY29tL215Lz9jPW15Y2VudGVyJmE9aW5kZXgmY2l0eT1iag== 案例分析: 本篇文章分析的是登录逻辑。话不多说,先看看登录中有哪些加密参数,在登录页面随便输入…

K8S DNS解析过程和延迟问题

一、Linux DNS查询解析原理(对于调用glibc库函数gethostbyname的程序)我们在浏览器访问www.baidu.com这个域名,dns怎么查询到这台主机呢?  1、在浏览器中输入www.baidu.com域名,操作系统会先查找本地DNS解析器缓存&a…

实例2:树莓派GPIO控制外部LED灯闪烁

实例2:树莓派GPIO控制外部LED灯闪烁 实验目的 通过背景知识学习,了解四足机器人mini pupper搭载的微型控制计算机:树莓派。通过树莓派GPIO操作的学习,熟悉GPIO的读写控制。通过外部LED灯的亮灭控制,熟悉树莓派对外界…

vue3 + vite 使用 svg 可改变颜色

文章目录vue3 vite 使用 svg安装插件2、配置插件 vite.config.js3、根据vite配置的svg图标文件夹,建好文件夹,把svg图标放入4、在 src/main.js内引入注册脚本5、创建一个公共SvgIcon.vue组件6.1 全局注册SvgIcon.vue组件6.2、在想要引入svg的vue组件中引…

Boom 3D最新版本下载电脑音频增强应用工具

为了更好地感受音乐的魅力,Boom 3D 可以让你对音效进行个性化增强,并集成 3D 环绕立体声效果,可以让你在使用任何耳机时,都拥有纯正、优质的音乐体验。Boom 3D是一款充满神奇魅力的3D环绕音效升级版,BOOM 3D是一个全新…

MyBatis 之四(动态SQL之 if、trim、where、set、foreach 标签)

文章目录动态 SQL1. if 标签2. trim 标签3. where 标签4. set 标签5. foreach 标签回顾一下,在上一篇 MyBatis 之三(查询操作 占位符#{} 与 ${}、like查询、resultMap、association、collection)中,学习了针对查询操作的相关知识点…

【C++】map和set的封装

文章目录一、前情回顾二、简化源码三、仿函数四、迭代器五、set的实现六、map的实现七、红黑树代码一、前情回顾 set 参数只有 key&#xff0c;但是map除了key还有value。我们还是需要KV模型的红黑树的&#xff1a; #pragma once #include <iostream> #include <ass…

游戏服务器算法-AOI基本介绍

一、直接比较所有对象 最直观也是最效率最低的一种方法。当一个事件发生&#xff0c;我们需要获得AOI范围以内的物体时&#xff0c;直接遍历游戏中所有的对象&#xff0c;并且进行坐标判断&#xff0c;如果小于或者等于AOI的范围&#xff0c;则为需要的游戏对象。 这种方法实…

零基础小白如何学会云计算?

云计算作为新兴互联网技术&#xff0c;也是IT服务的集大成者&#xff0c;包括了基础硬件服务、平台服务、应用程序开发、系统架构等服务内容。云计算的出现承接了众多IT技术和其他行业的发展&#xff0c;比如大数据、人工智能以及工业、金融、医疗、物流等&#xff0c;是经济社…

VBA提高篇_26 Textbox多行_ListBox_ComboBox

文章目录1. 文本框多行换行2. ListBox: 列表框2.1 列表框中添加条目的三种方法:3. ComboBox 组合框: 属性方法等同于以上ListBox1. 文本框多行换行 MultiLine: 控制文本框多行自动换行() Enterkeybehevior: True 代表允许在文本框中使用回车键换行 WordWrap: True 代表自动换…