Contrastive Representation Learning 对比表征学习(三)视觉:图像嵌入(1)

news/2024/11/9 9:33:20/

原文翻译自这里

视觉:图像嵌入(Image Embedding)

图像增强

在视觉领域,大多数面向对比表征学习的方案均依赖于通过应用数据增强技术的序列组合来创建样本的噪声形式。而这种增强需要满足保持语义不变的同时极大的改变其视觉外观。

基本图像增强技术

以下列举了一些修改图像但保持其语义的方法。我们可以使用以下任一增强或几种的组合。

  • 随即裁剪,然后调整尺寸与原图一致
  • 随机色彩失真
  • 随机高斯模糊
  • 随机色彩抖动(color jittering)
  • 随机水平翻转
  • 随机灰度转换
  • Multi-crop 增强:使用两个标准分辨率的裁剪块,并采样一组额外的低分辨率的裁剪块,将其覆盖在原图的部分区域,以降低计算消耗。
  • 。。。

增强策略

许多框架的设计初衷是学习优秀的数据增强策略(可能是多种变换的一个组合)。这有一些例子。

  • AutoAugment:受 NAS 启发,AutoAugment将最优数据增强搜寻视为强化学习问题,通过验证集上的最优精确度来确定增强组合。
  • RandAugment:RandAugme通过使用幅度参数控制不同变换操作的幅度,极大的减小了AutoAugment的搜索空间。
  • PBA(Population based augmentation):PBA将AutoAugment与PBT结合在一起,使用进化算法训练子模型群体同时进化出最优策略。
  • UDA(Unsupervised Data Augmentation):给出一系列可能的增强策略,UDA选择能够最小化无标签示例的预测分布和其无标签增强版本之间KL距离的策略。

图像混合

图像混合方法能够从现有数据点中构建出新的训练样本。

  • Mixup:该方法通过对两幅图像使用一种加权逐像素结合的方法实现全局混合: I m i x u p ← α I 1 + ( 1 − α ) I 2 I_{mixup}\leftarrow \alpha I_1+(1-\alpha)I_2 ImixupαI1+(1α)I2 and α ∈ [ 0 , 1 ] \alpha \in[0,1] α[0,1].
  • Cutmix: Cutmix通过生成一个新样本来实行区域混合。该样本由一张图片的局部区域与任一张其他图片混合组成。 I c u t m i x ← M b ⨀ I 1 + ( 1 − M b ) ⨀ I 2 I_{cutmix}\leftarrow M_b\bigodot I_1+(1-M_b)\bigodot I_2 IcutmixMbI1+(1Mb)I2,其中 M b ∈ { 0 , 1 } I M_b\in \{0,1\}^I Mb{0,1}I为二进制mask, ⨀ \bigodot 是逐像素乘法。当区域内不放图时,与Cutout等效。
  • MoCHi(Mixing of Contrastive Hard Negatives)给一query q q q,MoCHi维持 K K K个负样本特征 Q = { n 1 , . . . , n K } Q=\{n_1,...,n_K\} Q={n1,...,nK}的队列,并通过比较与 q q q的相似程度 q T n q^Tn qTn进行降序排序。队列中的前 N N N个项目 Q N Q^N QN被视为最复杂负样本。 然后通过以下形式生成复杂示例: h = h ~ / ∣ h ~ ∣ h=\tilde{h}/|\tilde{h}| h=h~/∣h~。其中, h ~ = α n i + ( 1 − α ) n j \tilde{h}=\alpha n_i+(1-\alpha)n_j h~=αni+(1α)nj, α ∈ ( 0 , 1 ) \alpha\in(0,1) α(0,1)。更复杂的样本甚至可以通过与query q q q混合而得到: h ′ = h ′ / ∣ h ′ ∣ 2 ~ h^{'}=\tilde{h^{'}/|h^{'}|_2} h=h/∣h2~。其中 h ′ ~ = β q + ( 1 − β ) n j \tilde{h^{'}}=\beta q+(1-\beta)n_j h~=βq+(1β)nj, β ∈ ( 0 , 0.5 ) \beta\in (0,0.5) β(0,0.5)

并行增强

该类别方法生成一张锚图(anchor image)的两个带噪声版本,其目标为学习某种表征以使这两种增强的样本具有同样的嵌入形式

SimCLR

SimCLR 提出了一种用于视觉表征对比学习的简单的框架。其通过在潜在空间中最大化同一样本不同增强版本的对比损失的一致性来学习视觉输入的表征。

一口气说完不累吗,真是无语啊
It learns representations for visual inputs by maximizing agreement between differently augmented views of the same sample via a contrastive loss in the latent space.

在这里插入图片描述

  1. 样本集中随机采样 N N N个样本,对每个样本执行两种不同的数据增强操作,得到 2 N 2N 2N个增强后的样本。
    x ~ i = t ( x ) , x ~ j = t ′ ( x ) , t , t ′ ∼ T \tilde{x}_i = t(x), \tilde{x}_j = t^{'}(x), t, t^{'}\sim T x~i=t(x),x~j=t(x),t,tT
    其中上述两种不同的数据增强操作子 t t t t ′ t^{'} t,采样于增强集合 T T T中的同一系列。数据增强操作包括随机裁剪,带有随机翻转的尺寸缩放,颜色失真,以及高斯模糊。
  2. 给一正样本对,其他 2 ( N − 1 ) 2(N-1) 2(N1)个数据点被认为是负样本。表达式可通过一基础编码器 f ( ⋅ ) f(\cdot) f()给出:
    h i = f ( x ~ i ) , h j = f ( x ~ j ) h_i = f(\tilde{x}_i), h_j = f(\tilde{x}_j) hi=f(x~i),hj=f(x~j)
  3. 对比学习损失函数使用余弦相似度 s i m ( . , . ) sim(.,.) sim(.,.)定义。这里注意,损失函数并不直接针对表征空间 g ( . ) g(.) g(.),而是作用于该表征的额外一映射层。但最终只有表征 h h h被用于下游任务中。
    z i = g ( h i ) , z j = g ( h j ) \mathbf{z}_i = g(h_i), \mathbf{z}_j = g(h_j) zi=g(hi),zj=g(hj)
    L S i m C L R ( i , j ) = − l o g e x p ( s i m ( z i , z j ) / τ ) ∑ k = 1 2 N I k ≠ i e x p ( s i m ( z i , z k ) / τ ) L_{SimCLR}^{(i,j)}=-log\frac{exp(sim(\mathbf{z}_i,\mathbf{z}_j)/\tau)}{\sum_{k=1}^{2N}\mathbb{I}_{k\neq i}exp(sim(\mathbf{z}_i,\mathbf{z}_k)/\tau)} LSimCLR(i,j)=logk=12NIk=iexp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)
    其中 I k ≠ i \mathbb{I}_{k\neq i} Ik=i是指示函数: 1 1 1 if k ≠ i k\neq i k=i 0 0 0 otherwise。

SimCLR需要很大的batch size来引入足够的负样本,以实现最终优秀的性能。

在这里插入图片描述

BYOL

与上述方法(SimCLR)不同,BYOL (Bootstrap Your Own Latent; Grill, et al 2020)在不使用负样本地情况下实现了SOTA性能。其依赖于两个神经网络,名为在线目标网络,它们彼此交互并互相学习。目标网络(参数化为 ξ \xi ξ)与在线网络(参数化为 θ \theta θ)具有相同的结构,但使用了 polyak 均值权重, ξ ← τ ξ + ( 1 − τ ) θ \xi \leftarrow \tau \xi + (1-\tau)\theta ξτξ+(1τ)θ

该方法旨在学习某一可被用于下游任务中的表征 y y y。由 θ \theta θ参数化的在线网络包含:

  • 编码器 f θ f_\theta fθ
  • 映射器 g θ g_\theta gθ
  • 预测器 q θ q_\theta qθ

在这里插入图片描述

sg表示停止梯度。

给一图像 x \mathbf{x} x,BYOL损失由以下方式构建:

  • 利用采样于 t ∼ T , t ′ ∼ T t\sim\mathcal{T}, t^{'}\sim\mathcal{T} tT,tT的增强技术得到 x \mathbf{x} x的增强版本 v = t ( x ) ; v ′ = t ′ ( x ) \mathbf{v}=t(\mathbf{x});\mathbf{v}^{'}=t^{'}(\mathbf{x}) v=t(x);v=t(x);
  • 将其编码为表征, y θ = f θ ( v ) , y ′ = f ξ ( v ′ ) \mathbf{y}_\theta=f_\theta(\mathbf{v}),\mathbf{y}^{'}=f_{\xi}(\mathbf{v}^{'}) yθ=fθ(v),y=fξ(v);
  • 将其映射为潜变量, z θ = g θ ( y θ ) , z ′ = g ξ ( y ′ ) \mathbf{z}_\theta=g_\theta(\mathbf{y}_\theta), \mathbf{z}^{'}=g_\xi (\mathbf{y}^{'}) zθ=gθ(yθ),z=gξ(y)
  • 在线网络输出预测 q θ ( z θ ) q_\theta(\mathbf{z}_\theta) qθ(zθ);
  • q θ ( z θ ) q_\theta(\mathbf{z}_\theta) qθ(zθ) z ′ \mathbf{z}^{'} z做L2规范化,得到 q ˉ θ ( z θ ) = q θ ( z θ ) / ∣ ∣ q θ ( z θ ) ∣ ∣ 2 \bar{q}_\theta(\mathbf{z}_\theta)=q_\theta(\mathbf{z}_\theta)/||q_\theta(\mathbf{z}_\theta)||_2 qˉθ(zθ)=qθ(zθ)/∣∣qθ(zθ)2
  • 计算规范化项 q ˉ θ ( z θ ) \bar{q}_\theta(\mathbf{z}_\theta) qˉθ(zθ) z ′ \mathbf{z}^{'} z之间的MSE损失函数 L θ B Y O L \mathcal{L}_\theta^{\mathbf{BYOL}} LθBYOL
  • 其对称损失 L ~ θ B Y O L \tilde{\mathcal{L}}_\theta^{\mathbf{BYOL}} L~θBYOL可以通过交换 v ′ \mathbf{v}^{'} v v \mathbf{v} v得到;即,将 v ′ \mathbf{v}^{'} v送入在线网络, v \mathbf{v} v送入目标网络。
  • 最终损失项为 L θ B Y O L + L ~ θ B Y O L \mathcal{L}_\theta^{\mathbf{BYOL}}+\tilde{\mathcal{L}}_\theta^{\mathbf{BYOL}} LθBYOL+L~θBYOL,且只有 θ \theta θ被优化。

与现有多数基于对比学习的方法不同,BYOL不使用负样本。大多数自举法(Bootstrap approaches) 都依赖于伪标签或聚类索引,但是BYOL直接对潜在表征进行bootstrap。

没有负样本,BYOL依然表现很好。Abe Fetterman & Josh Albrecht 的博客列出了两个关于复现BYOL的意外发现:

  1. 移除 batch normalization 后,BYOL 的性能与随机输出无异。
  2. Batch normalization操作隐式带入了对比学习。他们相信使用负样本对避免模型崩塌具有重要作用(比如,如果你使用全零向量表示每个数据点该怎么办?)。Batch normalization 隐式地带入了对负样本地依赖,因为不论一组输入有多相似,输出值总会被重分布(re-distributed, 服从 ∼ N ( 0 , 1 ) \sim\mathcal{N}(0,1) N(0,1))。因此 batch normalization避免了模型崩塌。

Barlow Twins

Barlow Twins (Zbontar et al.2021) 将某一样本的两个失真版本输入同一网络来提取特征,同时试着令两组输出特征之间的互相关矩阵趋于单位阵。其目标在于使属于同一样本的不同失真版本的表征向量保持相似,同时最小化向量之间的冗余。
在这里插入图片描述

我们令 C C C为计算得的由同一网络预测的不同输出间的互相关矩阵。其为方阵,尺寸等于特征网络输出的维度。矩阵 C i j C_{ij} Cij中的每个条目为网络输出的,位于索引 i , j i, j i,j和batch索引 b b b的向量 z b , i A \mathbf{z}_{b,i}^{A} zb,iA z b , j B \mathbf{z}_{b,j}^{B} zb,jB维度之间的余弦相似度。其值域为 − 1 -1 1(完全负相关)与 1 1 1(完全相关)之间。
L B T = ∑ i ( 1 − C i i ) 2 ⏟ 不变项 + λ ∑ i ∑ i ≠ j C i j 2 ⏟ 减少冗余项 L_{BT}=\underbrace{\sum_{i}(1-C_{ii})^2}_{不变项}+\lambda\underbrace{\sum_{i}\sum_{i\neq j}C_{ij}^2}_{减少冗余项} LBT=不变项 i(1Cii)2+λ减少冗余项 ii=jCij2

其中 C i j = ∑ b z b , i A z b , j B ∑ b ( z b , i A ) 2 ∑ b ( z b , j B ) 2 C_{ij}=\frac{\sum_{b}\mathbf{z}_{b,i}^A\mathbf{z}_{b,j}^B}{\sqrt{\sum_{b}(\mathbf{z}_{b,i}^A)^2}\sqrt{\sum_{b}(\mathbf{z}_{b,j}^B)^2}} Cij=b(zb,iA)2 b(zb,jB)2 bzb,iAzb,jB

Barlow Twins 在自监督学习方面的表现丝毫不弱于SOTA。它很自然地避免了琐碎的常数(比如,塌陷表征),并且对不同训练batch都很鲁棒 ∗ ^*

原文:It naturally avoids trivial constants (i.e. collapsed representations), and is robust to different training batch sizes.

在这里插入图片描述


http://www.ppmy.cn/news/489756.html

相关文章

RTX服务器端和客户端的主要通信端口

注:为您的网络安装一个可靠的防火墙,在任何时候,都是必要的,我们提供以下端口,就是为了让客户在防火墙下,可以安全、放心的使用RTX。请仅开通您所需要用到的端口,其他暂时闲置的端口&#xff0c…

更新RTX组织架构

无法更新Mac RTX的组织架构,如在RTX“研发部”下一直看不到“曹宪辉”。 可以尝试这样解决问题: a. 先删除老的数据,不然会出现无法拉取组织架构的问题 —— 这一步很重要 打开终端,输入 sudo rm -rf /Users/chencheng/Library/Ap…

web前端常见面试题归纳

行内元素和块元素的区别 概念 块元素&#xff1a;默认独占一行&#xff0c;页面中垂直排列&#xff0c;宽高和内外边距可控行内元素&#xff1a;默认同行排列&#xff0c;宽高由内容决定行内元素和块元素举例 块元素&#xff1a;<div>、<p>、<table>、<u…

轻松解决CENTOS装完独立显卡也无法显示1920x1080问题

** 轻松解决CENTOS装完独立显卡也无法显示1920x1080问题 ** 首先介绍一下我的系统和显卡&#xff0c;系统为CENTOS 7.6 &#xff0c;独立显卡为GTX960 按照网上的步骤装完显卡了&#xff0c;但是分辨率最高为1600x900&#xff0c;没法设置成1920X1080&#xff0c;解决办法如下…

Linux系统安装Nvidia显卡驱动

方法1&#xff1a;使用标准Ubuntu库进行自动安装 方法2&#xff1a;手动下载安装&#xff0c;参考(https://zhuanlan.zhihu.com/p/366882419) 1&#xff09;查看显卡型号lspci | grep -i vga&#xff0c;到[官网](https://www.nvidia.cn/)下载显卡驱动&#xff0c;[历史版本](…

centos7.9安装nvidia驱动

查看系统&#xff1a;cat /etc/redhat-release查看详情&#xff1a;cat /etc/os-release查看内核&#xff1a;uname -r查看可以安装的依赖是否和内核一致&#xff1a;yum list | grep kernel-devel安装其他依赖&#xff1a; yum -y install gcc dkms yum install kernel-devel…

安装rtx时报错因计算机中丢失lo,rtx客户端安装配置教程教程

rtx客户端安装配置教程教程 (7页) 本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01; 9.9 积分 RTX客户端安装配置教程教程点击rtxclien lOformal客户端安装程序进行安装点击客户端安装程序后出现下图点…

腾讯通rtx中心服务器,腾讯通(RTX)详细使用教程

《腾讯通(RTX)详细使用教程》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《腾讯通(RTX)详细使用教程(24页珍藏版)》请在人人文库网上搜索。 1、即时通信平台(腾讯通)使用说明一、安装&#xff1a;1、双击安装2、点下一步3、点同意&#xff0c;6、点下一步(如要改变安…