【自监督预训练 2023】MCL

【自监督预训练 2023】MCL

论文题目:Multi-Level Contrastive Learning for Dense Prediction Task

中文题目:稠密预测任务的多级对比学习

论文链接:https://arxiv.org/abs/2304.02010

论文代码:https://github.com/GuoQiushan/MCL

论文团队:

发表时间:

DOI:

引用:

引用数:

摘要

在这项工作中,我们提出了一种用于密集预测任务的多级对比学习(MCL),这是一种有效的用于密集预测任务的区域级特征表示的自监督学习方法。 我们的方法是由检测的三个关键因素驱动的:定位尺度一致性识别。 为了显式地编码绝对位置和尺度信息,我们提出了一种新的借口任务,该任务以蒙太奇方式组装多尺度图像来模拟多目标场景。

与现有的图像级自监督方法不同,我们的方法构造了一个多级对比损失,将蒙太奇图像的每个子区域视为一个单独的子区域。

我们的方法使神经网络能够学习区域语义表示,以实现翻译和尺度一致性,同时将预训练的时间缩短到与有监督预训练相同的时间。

大量的实验表明,MCL在不同的数据集上具有明显的边距,其性能始终优于当前最先进的方法。

特别是,当使用MASK R-CNN和R50-FPN主干预先训练100个Epoch时,MCL在COCO上获得42.5APBB和38.3APMK。 与MOCO相比,我们的方法的性能分别超过了4.0APBB和3.1APMK。 此外,我们还探讨了借口任务和下游任务之间的对齐。 我们将我们的借口任务扩展到有监督的预训练,它达到了与自监督学习相似的性能。 这一结果证明了在借口任务和下游任务之间的一致性的重要性,表明了我们的方法在自监督设置之外的更广泛的适用性。

1. 简介

通用的大规模监督预训练是计算机视觉社区进步的关键辅助任务,如ImageNet[16]预训练,这已被许多工作验证[18,25,26,33,41,42,46]。用预先训练的权重初始化模型的好处包括更快的收敛和更好的下游任务通用性。最近,基于实例判别任务的自监督学习(SSL)推动了许多进步,在k-NN和线性探测评估策略下,在具有挑战性的ImageNet数据集上取得了最先进的结果。尽管它们在分类任务上具有先进的性能,但最近的一些工作[39,53,54,60,62]指出了这些方法的一个共同弱点:图像级表示学习不能很好地转移到密集的预测任务中,如对象检测和实例分割。此外,现有技术方法[7,10,22,24,28]的成功需要比监督预训练多几倍的训练时期。

与ImageNet分类任务不同的是,对象在规模上有很小的变化,而对象检测数据集通常在对象实例之间有很大的变化,需要对对象进行精确的定位。因此,理想的检测器应该是跨对象的尺度一致的,并对位置信息进行精确编码。像素级SSL方法[35,53]考虑的空间结构信息如图2(a)所示。这些借口任务将图像中的每个像素视为单个实例,并鼓励模型将图像中的每个像素与其他像素区分开来。不幸的是,正像素对的匹配规则是基于特征距离的传输代价,不能保证特征目标分配的精确和稳定。对象级SSL方法[28,54]关注的是一些现成算法的提议,如选择性搜索[51]和多尺度组合分组[4],如图2(b)所示。然而,在非以对象为中心的数据集(如COCO)上,包围框和分割掩码建议不够精确。对于下游密集预测任务,低质量的方案由于局部化噪声的存在,结果较差

我们提出的方法,多级对比学习(MCL),是由检测的关键因素驱动的:定位、尺度一致性和识别。MCL是一种用于密集预测任务的新颖高效的自监督学习框架,它在下游任务上实现了最先进的迁移性能,同时显著减少了训练周期。为了实现定位、尺度一致性和识别,我们设计了一个蒙太奇组合,将多尺度图像组合成非重叠网格,模拟多对象场景。蒙太奇组合明确地对图像的位置和比例信息进行编码。此外,我们在特征金字塔上采用了尺度感知的正目标分配策略,该策略产生了具有强语义信息的多尺度特征表示。此外,MCL提出了一系列对比模式来提高尺度一致性。蒙太奇图像中的每个分量图像都被视为一个独立的实例,并基于图像坐标准确地提取特征。借口任务和下游任务之间的间隙的这种桥接确保了准确的特征目标分配。为了进一步研究借口任务和下游任务之间的一致性,我们将借口任务扩展到监督预训练。我们的监督预训练实现了与自我监督预训练类似的性能,证明了任务协调的重要性。

为了评估MCL,我们对各种密集预测任务的基准进行了广泛的实验。如图6所示,1,MCL实现了在ImageNet数据集上预训练的最先进的传输性能,同时在ImageNet上将训练成本显著降低到100个时期。在ImageNet上预训练了100个时期的MCL在标准1x调度[56]的COCO数据集上获得42.5 APbb和38.3 APmk,并使用带有R50-FPN主干的Mask R-CNN超过MoCo 4.0 APbb和3.1 APmk。在未标记的COCO数据集上预训练的MCL也获得了最先进的结果,分别为41.8 APbb和37.7 APmk。这一结果表明,MCL受益于精心设计的多级借口任务,而不是数据集偏差[40]。

主要工作如下:

(1)设计了一种高效的自监督方法–多级对比学习方法,将借口任务与密集预测任务进行对齐,提高了规模不变性和定位精度。

(2)首次将蒙太奇组装技术引入自监督学习领域,构造蒙太奇图像,模拟多尺度多目标场景。

(3)我们的方法在检测、分割和姿态估计等密集预测下游任务上获得了最先进的传输性能,同时将预训练代价降低到100个ImageNet历元。

2. 相关工作

2.1 实例对比学习

实例级对比学习将每个图像看作一个单独的个体,在一个类中只有一个样本[6],它认为同一图像的两个放大视图被拉得更近,而所有其他图像被推得更远。 MemoryBank[57]将先前计算的表示存储在存储体中,以基于噪声对比估计来比较实例。 MOCO[24]使用动量编码器以时间方式存储表示,允许字典很大。 SIMCLR[10,11]表明,当小批量大小足够大时,存储体是不必要的。 SWAV[7]对数据进行群集,同时加强群集分配之间的一致性。 此外,SWAV还采用了多裁剪数据增强技术,即使用不同分辨率的视图来代替两个全分辨率视图。 Byol[22]和Simsiam[10]直接探索在没有负对的情况下最大化一幅图像的两个视图之间的相似性。 尽管实例级对比学习在ImageNet线性探测上取得了成功,但基于实例的对比学习并没有明确地编码位置信息,而是平等地对待所有区域。 MCL将蒙太奇图像中的每个子图像看作一个单独的子图像,显式地对图像进行高保真的定位编码

2.2 密集表示学习

与实例对比学习相比,密集表示学习在像素级进行预测。近年来,人们提出了一些基于像素级表示的自监督学习方法。ULDVR[39]通过强迫局部特征在不同的视图条件下保持恒定来学习像素级的表示。DCL[53]通过匈牙利匹配策略优化了输入图像的两个视图在像素级上的两两对比相似度损失。Self-EMD[35]也有类似的基本思想,只是将匹配策略更新为Earth Mover的距离[44]。PixPro[60]通过手工制定的决策规则匹配特征像素。这些匹配策略只是将特征映射中的定位隐式映射到输入图像中的欧氏坐标上,而不能保证精确的特征目标分配。与像素级标签分配不同,MCL通过在多级特征映射上匹配蒙太奇图像中不同大小的图像区域来分配正样本。我们的尺度感知赋值策略保证了每个特征点的精确定位。

2.3 对象级表示学习

单级检测器和两级检测器都关注可管理数量的候选目标区域,并在每个区域上评估卷积网络。 感兴趣的区域具有矩形形状,并且有不同的大小。 Roialign[26]提出在卷积特征映射上提取特定区域的特征。 在FAST-RCNN[21]的基础上,SOCO[54]选择从选择性搜索[51]中产生的建议包围盒,并应用ROIALIGN通过构造多个增强视图来提取目标特征,该增强视图用于对比丢失。 Detcon[28]用现成的近似分割算法[4,19]来识别基于对象的区域,以产生语义掩码。 然后,对比检测目标将来自同一掩模的集合特征向量拉到一起,并将来自不同掩模和不同图像的特征分开。 然而,现有方法预测的分割掩码和包围盒不够准确,会产生伪标签噪声,导致对非以对象为中心的数据集的分割效果较差。 相比之下,MCL构建蒙太奇图像,并精确标注每个分量图像的定位。 结果,MCL在COCO数据集上预训练时保持了高传输性能。

3. 方法

我们的目标是在保持训练时间合理的情况下,在无监督的情况下学习区域语义表示和尺度一致性。 虽然实例级SSL方法[24,37]在学习遮挡不变表示方面取得了成功[40],但我们提出了一种新的方法,该方法在区域级应用实例区分来学习可视表示,该方法可以很好地推广到密集预测任务中。 如图所示 3.我们的方法MCL构造了多个不同大小的增强视图,并产生了一个多尺度特征金字塔,在该金字塔上应用了不同层次的对比损失。 蒙太奇程序集保证了伪包围盒标签的精度,它对绝对位置信息进行显式编码。 为了使借口任务和下游任务对齐,下游模型中的所有网络模块都被预先训练成一个良好的初始化表示。 我们还将我们的借口任务扩展到有监督的预培训,并在附录中提供更多细节。

image-20230719111003626

图3:我们方法的概述。 该图用一个模型说明了MCL,其FPN包含3个级别。 图像批X通过相同的增强流水线和不同的随机种子进行处理。 图像被降采样2倍,并洗牌以构建蒙太奇输入。 子图是多尺度和精确定位的。 根据子图位置进一步对特征金字塔进行ROI池化。 通过尺度一致性正则化,对多层特征进行对比学习,学习语义区域表示。 UI和VI从第I级特征金字塔中提取。 箭头表示将相应的目标特征设置为正样本,将其他目标特征设置为负样本。 目标网络没有梯度优化和在线网络以EMA方式更新。

3.1 蒙太奇组合

照相是通过将两张或多张照片剪切、粘合、重新排列和重叠成一张新的图像来制作一张复合照片的过程和结果。 一个有趣的观察是蒙太奇过程在特定的位置以不同的尺度集合图像,它显式地编码位置和尺度信息。

在我们的方法中,图像批X是通过相同的增强管道和不同的随机种子处理的。 为了处理大尺度变化,增强图像被降采样到原始尺寸的 1 2 s \frac1{2^s} 2s1,其中s的范围为 { 0 , 1 , 2 , . . . , S − 1 } \{0,1,2,...,S-1\} {0,1,2,...,S1},并与FPN中的特征映射级别匹配。 为了对位置和尺度信息进行编码,将所有下采样率相同的下采样图像随机组合,构造蒙太奇图像。 得到的蒙太奇图像具有与原始增强图像对齐的形状。 该过程的伪代码在ALG中提供。 1为清晰起见。

image-20230719111231632

3.2 多层次对比学习

使用FPN的探测器将一定范围内的标度锚盒分配到特定的金字塔水平。 遵循这一基本思想,我们提出根据下采样比从FPN中提取特征。

具体来说,我们为3级FPN体系结构分配2s到 P 5 − s P_{5-s} P5s的下采样率图像,其中我们将FPN的最终特征集合表示为从最细分辨率映射到最粗分辨率映射的 { P 3 , P 4 , P 5 } \{P_{3},P_{4},P_{5}\} {P3,P4,P5}

类似于ROI池算子,我们将分量图像的矩形窗口映射到FPN特征上,并使用全局平均池层聚合特征。 随后,密集预测头对特征进行处理。 对于非FPN框架,我们通过将最终的特征映射插值到特定的尺寸来构造特征金字塔。


为了对扩展视图进行编码,我们使用两个编码器:在线网络 f θ f_{\theta} fθ和目标网络 f θ ′ f_{\theta^{\prime}} fθ。 目标网络被实现为在线网络的指数移动平均(EMA)。 在线网络附加一个投影仪 g θ g_{\theta} gθ和一个预测器 h θ h_{\theta} hθ,而目标网络只有一个投影仪 g θ g_{\theta} gθ。 我们将每个视图对表示为归一化的潜在特征 u s i \mathbf{u}_{s_{i}} usi v s i \mathbf{v}_{s_{i}} vsi,其中 I s i \mathbf{I}_{s_{i}} Isi是由下采样比为 s i s_i si的子图像组合而成的图像,
u s i = h θ ∘ g θ ∘ f θ ( I s i ) , v s i = g θ ′ ∘ f θ ′ ( I s i ′ ) . \mathbf{u}_{s_i}=h_\theta\circ g_\theta\circ f_\theta(\mathbf{I}_{s_i}),\quad\mathbf{v}_{s_i}=g_{\theta^{'}}\circ f_{\theta^{'}}(\mathbf{I}_{s_i}^{'}). usi=hθgθfθ(Isi),vsi=gθfθ(Isi).
我们采用Infonce形式的对比损失函数[52]对模型进行优化:
L u = − log ⁡ exp ⁡ ( u ⋅ v + / τ ) ) exp ⁡ ( u ⋅ v + / τ ) + ∑ v − exp ⁡ ( u ⋅ v − / τ ) , \mathcal{L}_\mathbf{u}=-\log\frac{\exp(\mathbf{u}\cdot\mathbf{v}^+/\tau))}{\exp(\mathbf{u}\cdot\mathbf{v}^+/\tau)+\sum_{\mathbf{v}^-}\exp(\mathbf{u}\cdot\mathbf{v}^-/\tau)}, Lu=logexp(uv+/τ)+vexp(uv/τ)exp(uv+/τ)),
为了简单起见,省略了潜在的下标。 这里, v + \mathbf{v}^{+} v+是目标网络在与 u \mathbf{u} u相同的子图像上的输出,而集合 { v − } \{\mathbf{v}^{-}\} {v}由目标网络来自其他子图像的输出组成。 τ \tau τ是L2归一化潜特征的温度超参数[50]。 注意,特征映射 u s i \mathbf{u}_{s_i} usi v s i \mathbf{v}_{s_{i}} vsi根据子图像的坐标被拆分为向量。 由于潜在特征的数量足够大,我们使用了在同一批中共存的负样本,遵循[5,10,29,63]。 此外,我们采用对称损耗[7,13,22]: L = L u + L v . \mathcal{L}=\mathcal{L}_{\mathbf{u}}+\mathcal{L}_{\mathbf{v}}. L=Lu+Lv.

3.3 多级对比损失

为了提高规模的一致性,我们提出了一系列模式来构造最终损失。 具体来说,我们设计了四种匹配策略来分配正样本和负样本给在线特征。 如图右部所示 3.(a)所有不同尺寸的图像以最大形状瞄准视图;(b)每个图像级别旨在从对应级别中提取接近特征;©潜在特征与相邻级别的特征相匹配;(d)在所有级别上应用密集连接,平等对待所有图像分辨率。 第4.3节进行了实证研究和比较。

4. 实验

5. 总结

在这项工作中,我们提出了一个新的基于多层次对比学习的自监督框架。 我们的方法学习精确定位的区域表示,多尺度作物之间的尺度一致性,以及对密集预测任务具有良好泛化能力的语义表示。 蒙太奇程序集显式编码绝对位置和比例信息。 多级对比学习将特征映射与图像区域对齐,并规整尺度一致性。 此外,我们还通过研究在监督学习情境中应用所提出的托词任务的迁移性能,实证地探讨了预训练与优化之间的一致性。 我们的实验结果证明了在各种密集预测任务上的最先进的迁移性能,同时显著地减少了预训练的时间。 在我们的框架下进一步的细粒度表示学习可能会导致一个有希望的结果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

i.MX6Q应用处理器:MCIMX6Q5EYM12AD/MCIMX6Q5EYM10AE/MCIMX6Q5EYM10ADR 4核、32位,624-LFBGA

i.MX6Q 处理器代表了集成多媒体应用处理器的最新成就。这些处理器是不断增长的多媒体产品系列的一部分,这些产品提供高性能处理,并针对最低功耗进行了优化。 i.MX6Quad处理器采用先进的四核ArmCortex-A9内核,运行速度高达1.2 GHz。它们包括2…

浏览器打开PDF标题乱码

问题 使用 itext5 用pdf模板生成预览pdf乱码问题 解决办法 使用pdf编辑器打开之后,选择 文件>> 属性, 修改乱码的标题。

ENSP实验一:防火墙基础配置

1、搭建拓扑图 配置client&#xff08;内网&#xff09;、FTP Server&#xff08;外网&#xff09;的IP地址 客户端设置&#xff1a; 服务端设置&#xff1a; 2、配置防火墙命名 进入防火墙&#xff0c;输入密码&#xff1a;默认为admin123 <USG6000V1>system-view /…

linux 安装pytorch3d的坑

事实上&#xff0c;只要按照官方文档的说明就可以完美安装。其中坑的地方在于conda的管理可能会导致下载的版本不符合你的要求&#xff08;例如下载成了cpu版本、下载的cuda版本&#xff09;而同样尝试使用源码编译以及其他方式下载库都会导致同样的问题&#xff0c;这里主要的…

Centos 7 使用国内镜像源更新内核

内核选择参考 此博文 &#xff1a;https://blog.csdn.net/alwaysbefine/article/details/108931626 elrepo官网介绍的内核升级方式为&#xff1a; 一、按文档执行引入 elrepo库&#xff1b; # 1、引入公钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org# 2、安…

回归预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于SVM-Adaboost支持向…

left join 和except方法区别和联系

目录 相同点&#xff1a; left join except 不同点 假设有两个表&#xff1a;A客户表 和 B客户表&#xff0c;客户uid是唯一主键 相同点&#xff1a; 查询在A中的客户 但不在B中&#xff0c;也就是图中的阴影部分&#xff0c;left join 和except方法都可以实现 left join …

torch分布式通信基础

torch分布式通信基础 1. 点到点通信2. 集群通信 官网文档&#xff1a;WRITING DISTRIBUTED APPLICATIONS WITH PYTORCH 1. 点到点通信 # 同步&#xff0c;peer-2-peer数据传递 import os import torch import torch.distributed as dist import torch.multiprocessing as mpdef…

CSS:给子元素设置了浮动,页面缩放的时候,子元素往下掉

前言 给子元素设置了浮动&#xff0c;页面缩放的时候&#xff0c;子元素往下掉 html代码&#xff1a; <div class"father"><div class"child1"></div><div class"child2"></div> </div>css代码 .child1…

动态内存管理(C语言)

动态内存管理 1. 为什么存在动态内存管理2. 动态内存函数的介绍2.1 malloc函数和free函数2.2 calloc函数2.3 realloc函数 3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free函数3.4 使用free释放动态开辟内存的一部分…

旅游卡小程序软件招商加盟代理

旅游卡小程序软件招商加盟代理 我国人民生活水平的提高&#xff0c;旅游业成为了人们生活中必不可少的一部分。旅游卡小程序软件作为旅游行业的重要组成部分&#xff0c;也日益受到人们的关注。如今&#xff0c;旅游卡小程序软件招商加盟代理已经成为了一个热门的投资创业项…

详解c++---特殊类设计

目录标题 设计一个不能被拷贝的类设计一个只能从堆上创建对象的类设计一个只能在栈上创建对象的类设计一个无法被继承的类什么是单例模式饿汉模式饿汉模式的缺点懒汉模式懒汉模式的优点懒汉模式的缺点特殊的懒汉 设计一个不能被拷贝的类 拷贝只会放生在两个场景中&#xff1a;…

Jmeter+Maven+jenkins+eclipse搭建自动化测试平台

背景&#xff1a; 首先用jmeter录制或者书写性能测试的脚本&#xff0c;用maven添加相关依赖&#xff0c;把性能测试的代码提交到github&#xff0c;在jenkins配置git下载性能测试的代码&#xff0c;配置运行脚本和测试报告&#xff0c;配置运行失败自动发邮件通知&#xff0c…

Go-新手速成-流程语句

1if Go的if不建议写&#xff08;&#xff09;&#xff0c;over //if条件判断age : 16if age < 18 {fmt.Println("未成年")} 2for循环 Go摈弃了while和do while 循环&#xff0c;因为他做到了极简(也不要括号) 这么写可以 total : 0for i : 0; i < 100; i {…

Goby 漏洞发布|天擎终端安全管理系统 YII_CSRF_TOKEN 远程代码执行漏洞

漏洞名称&#xff1a;天擎终端安全管理系统 YII_CSRF_TOKEN 远程代码执行漏洞 English Name&#xff1a;Tianqing terminal security management system YII_CSRF_TOKEN remote code execution vulnerability CVSS core: 9.8 影响资产数&#xff1a;875 漏洞描述&#xff1…

2023婴幼儿奶粉市场数据分析(天猫数据中心)

我国婴幼儿奶粉市场一直保持着相当大的规模&#xff0c;虽然近几年新生人口数量不断下降&#xff0c;但伴随消费者的消费升级不断加速、大龄孩童吃奶粉的时间延长等&#xff0c;整体来看&#xff0c;婴幼儿奶粉行业市场规模保持平稳。 根据鲸参谋电商数据分析平台的相关数据显示…

centos升级龙蜥

centos升级龙蜥 龙蜥简介龙蜥官方社区centos升级龙蜥首先确认自己的centos版本下载迁移镜像源安装epel源迁移工具安装i686包查看执行迁移脚本结果查看重启机器查看系统信息 龙蜥简介 2021年10月19日的大会上&#xff0c;阿里云发布全新操作系统“龙蜥”并宣布开源。龙蜥操作系…

【实战篇】docker-compose部署go项目

一、场景&#xff1a; 二、需求 三、实操 Stage 1&#xff1a;GoLand 中 build 生成二进制文件 Stage 2&#xff1a;编写 Dockerfile Stage 3&#xff1a;编写 docker-compose.yaml Stage 4&#xff1a;文件上传到 ubuntu 服务器上&#xff0c;并设置文件读写权限 Stage…

写给后端开发的『vue3』请求后端接口

本文分享一下在vue3前端项目中请求后端接口获取数据。比较简单&#xff0c;内容如下&#xff1a; 1、使用axios请求后端接口 首先npm install axios&#xff0c;添加axios依赖&#xff0c;就靠它来请求后端接口了&#xff0c;基本等同于使用jquery发ajax。 # src/main.js i…

ElasticSearch文档(document)在index上的增删改查

文章目录 一、document定义&#xff1a;二、单条增删改查1、创建索引&#xff1a;2、添加文档&#xff1a;3、获取文档&#xff1a;4、更新文档&#xff1a;5、删除文档&#xff1a; 三、批量增删改查&#xff1a;1、批量添加文档&#xff1a;2、批量更新文档&#xff1a;3、批…