《Pyramid Vision Transformer》论文笔记

原文笔记

What

为了解决VIT在视觉任务上的局限性并且探究Transformer模型在视觉任务上的应用,这项工作提出了一种纯 Transformer 主干,称为 Pyramid Vision Transformer (PVT),它可以作为 CNN 主干在许多下游任务中的替代方案,包括图像级预测和像素级密集预测。具体来说,如图 1 (c) 所示,我们的 PVT 通过 (1) 将细粒度图像块(即每个补丁 4×4 像素)作为输入来学习高分辨率表示来克服传统 Transformer 的困难,这对于密集预测任务至关重要; (2) 随着网络的加深,引入渐进式收缩金字塔来减少 Transformer 的序列长度,显着降低计算成本,以及 (3) 采用空间缩减注意力 (SRA) 层在学习高分辨率特征时进一步减少资源消耗。

我们的方法比 ViT 具有以下优点:1)更灵活——可以在不同的阶段生成不同尺度的/通道的特征图; 2)更通用——可以很容易地插入和播放在大多数下游任务模型中; 3)对计算/内存更友好——可以处理更高分辨率的特征图或更长的序列。

Why

  • 卷积神经网络 (CNN) 在计算机视觉领域取得了显着的成功,使其成为几乎所有任务的通用和主导方法 [54, 22, 73, 49, 21, 39, 9, 32]。然而,这项工作旨在探索 CNN 之外的替代骨干网络,可用于密集预测任务,例如除了图像分类[12]外,目标检测,语义[83]和实例分割[40]。(替代卷积)
  • 以往的基于Transformer的视觉研究也很少研究探索干净且无卷积的 Transformer 主干来解决计算机视觉中的密集预测任务。(探索)
  • VIT(1)其输出特征映射是单尺度和低分辨率的,(2)它的计算和内存成本相对较高,即使对于常见的输入图像大小(例如,COCO基准[40]中800像素的较短边)。所以直接使其适应像素级密集预测(如目标检测和分割)是具有挑战性的因此,很难直接将 ViT 应用于需要高分辨率或多尺度特征图的密集预测任务。(区别于传统VIT的解决方法)

Challenge

Idea

Model

原文翻译

Abstract

尽管卷积神经网络 (CNN) 在计算机视觉中取得了巨大成功,但这项工作研究了一种更简单、无卷积的骨干网络,可用于许多密集预测任务。与最近提出的专门为图像分类设计的Vision Transformer (ViT) 不同,我们引入了金字塔视觉转换器 (PVT),它克服了将 Transformer 移植到各种密集预测任务的困难。与现有技术相比,PVT有几个优点。(1) 与通常产生低分辨率输出并产生高计算和内存成本的 ViT 不同,PVT 不仅可以在图像的密集分区上进行训练以实现高输出分辨率,这对于密集预测很重要,而且还使用渐进式收缩金字塔来减少大特征图的计算。(2) PVT继承了CNN和Transformer的优点,使其成为一个不需要卷积的针对不用视觉任务的统一的骨干,它可以作为CNN网络的一个直接的替代。(3) 我们通过广泛的实验验证 PVT,表明它提高了许多下游任务的性能,包括对象检测、实例和语义分割。例如,在参数数量相当的情况下,PVT+RetinaNet 在 COCO 数据集上达到了 40.4 AP,比 ResNet50+RetinaNet (36.3 AP) 高出 4.1 个绝对 AP(见图 2)。我们希望PVT可以作为像素级预测的替代和有用的主干,并促进未来的研究。

1. Introduction

卷积神经网络 (CNN) 在计算机视觉领域取得了显着的成功,使其成为几乎所有任务的通用和主导方法 [54, 22, 73, 49, 21, 39, 9, 32]。然而,这项工作旨在探索 CNN 之外的替代骨干网络,可用于密集预测任务,例如除了图像分类[12]外,目标检测,语义[83]和实例分割[40]。

受 Transformer [64] 在自然语言处理领域成功的启发,许多研究人员已经探索了它在计算机视觉中的应用。例如,一些工作[6,85,72,56,24,42]将视觉任务建模为具有可学习查询的字典查找问题,并在CNN主干之上使用Transformer解码器作为特定于任务的头部。尽管据我们所知,一些现有技术还将注意力模块 [70, 48, 80] 合并到 CNN 中,但很少研究探索干净且无卷积的 Transformer 主干来解决计算机视觉中的密集预测任务。

最近,Dosovitskiy等人[13]引入了视觉转换器(ViT)进行图像分类。这是用无卷积模型替换 CNN 主干的一个有趣且有意义的尝试。如图1 (b)所示,ViT有一个柱状结构,粗糙的图像补丁作为输入虽然ViT适用于图像分类,但直接使其适应像素级密集预测(如目标检测和分割)是具有挑战性的,因为(1)其输出特征映射是单尺度和低分辨率的,(2)它的计算和内存成本相对较高,即使对于常见的输入图像大小(例如,COCO基准[40]中800像素的较短边)。

为了解决上述限制,这项工作提出了一种纯 Transformer 主干,称为 Pyramid Vision Transformer (PVT),它可以作为 CNN 主干在许多下游任务中的替代方案,包括图像级预测和像素级密集预测。具体来说,如图 1 (c) 所示,我们的 PVT 通过 (1) 将细粒度图像块(即每个补丁 4×4 像素)作为输入来学习高分辨率表示来克服传统 Transformer 的困难,这对于密集预测任务至关重要; (2) 随着网络的加深,引入渐进式收缩金字塔来减少 Transformer 的序列长度,显着降低计算成本,以及 (3) 采用空间缩减注意力 (SRA) 层在学习高分辨率特征时进一步减少资源消耗。

总体而言,所提出的PVT具有以下优点。首先,与传统的CNN主干(见图1 (a)))相比,我们的PVT总是产生一个全局接受域,更适合检测和分割。其次,与ViT相比(见图1 (b)),由于其先进的金字塔结构,我们的方法可以更容易地插入到许多具有代表性的密集预测管道中,如RetinaNet[39]和Mask R-CNN[21]。第三,我们可以通过将我们的PVT与其他特定于任务的Transformer解码器(如PVT+DETR[6])相结合来构建无卷积管道,用于目标检测。据我们所知,这是第一个完全无卷积的目标检测管道

我们的主要贡献如下:(1)我们提出了金字塔视觉转换器(PVT),这是第一个为各种像素级密集预测任务设计的纯 Transformer 主干。结合我们的PVT和DETR,我们可以构建一个端到端的目标检测系统,没有卷积和手工制作的组件,如密集锚点和非极大值抑制(NMS)。(2) 通过设计渐进式收缩金字塔和空间缩减注意力 (SRA),我们在将 Transformer 移植到密集预测时克服了许多困难。这些能够减少 Transformer 的资源消耗,使 PVT 可以灵活地学习多尺度和高分辨率特征。(3)我们在几个不同的任务上评估了所提出的PVT,包括图像分类、目标检测、实例和语义分割,并将其与流行的ResNets[22]和ResNeXts[73]进行了比较。如图 2 所示,与现有技术相比,我们具有不同参数尺度的 PVT 可以始终存档提高性能。例如,相比于在相当数量的参数下,使用RetinaNet[39]进行目标检测,PVT-Small在COCO val2017实现了40.4 AP,超过了ResNet504.1分(40.4vs36.3)除此之外PVT-large取得了42.6AP,必ResNeXt101-64x4d多1.6AP同时少使用了30%的参数量

2. Related Work

2.1. CNN Backbones

CNN 是深度神经网络在视觉识别中的工作马。在[34]中首次引入了标准CNN来区分手写数字。该模型包含具有特定感受野的卷积核,可以捕获有利的视觉上下文。为了提供平移相等方差,卷积核的权重在整个图像空间之间共享。最近,随着计算资源(例如 GPU)的快速发展,在大规模图像分类数据集(例如 ImageNet [51])上成功训练堆叠卷积块 [33, 54]。例如,GoogLeNet[59]证明了包含多个内核路径的卷积算子可以获得非常有竞争力的性能。在 Inception 系列 [60, 58]、ResNeXt [73]、DPN [10]、MixNet [65] 和 SKNet [36] 中进一步验证了多路径卷积块的有效性。此外,ResNet[22]在卷积块中引入了跳跃连接,使得创建/训练非常深的网络成为可能,并在计算机视觉领域取得了令人印象深刻的结果。DenseNet[25]引入了一种密集连接的拓扑,它将每个卷积块连接到所有先前的块。最近的进展可以在最近的调查/评论论文中找到 [31, 53]。与成熟的 CNN 不同,vision Transformer backbone仍处于开发的早期阶段。在这项工作中,我们试图通过设计一种新的适用于大多数视觉任务的通用 Transformer 主干来扩展 Vision Transformer 的范围。

2.2. Dense Prediction Tasks

Preliminary.密集预测任务旨在对特征图执行像素级分类或回归。目标检测和语义分割是两个具有代表性的密集预测任务。

目标检测。在深度学习时代,cnn[34]已经成为目标检测的主要框架,包括单级检测器(如SSD[43]、RetinaNet[39]、FCOS[62]、GFL[37,35]、PolarMask[71]和OneNet[55])和多级检测器(Faster R-CNN[49]、Mask R-CNN[21]、Cascade R-CNN[4]和Sparse R-CNN[57])。这些流行的对象检测器大多建立在高分辨率或多尺度特征图上,以获得良好的检测性能。最近,DETR [6] 和可变形 DETR [85] 结合 CNN 主干和 Transformer 解码器来构建端到端的对象检测器。同样,它们为了获得目标检测准确性也需要高分辨率或多尺度特征图。

语义分割。CNN 在语义分割中也起着重要作用。在早期阶段,FCN [44] 引入了全卷积架构来为任意大小的给定图像生成空间分割图。之后,Noh 等人介绍了反卷积操作。 [47],并在 PASCAL VOC 2012 数据集 [52] 上取得了令人印象深刻的性能。受FCN的启发,UNet[50]是专门为医学图像分割领域提出的,弥合了相同空间大小对应的低层特征图和高层特征图之间的信息流。为了探索更丰富的全局上下文表示,Zhao 等人。 [81] 在各种池化尺度上设计了一个金字塔池化模块,Kirillov 等人。 [32] 基于 FPN [38],开发了一种称为语义 FPN 的轻量级分割头。最后,DeepLab家族[8,41]应用扩展卷积来扩大接受域,同时保持特征图的分辨率。与目标检测方法类似,语义分割模型也依赖于高分辨率或多尺度特征图。

2.3. Self-Attention and Transformer in Vision

由于卷积滤波器权重通常在训练期间是固定的,因此它们无法动态适应不同的输入。已经提出了许多方法来缓解这个问题使用动态过滤器[30]或自我注意操作[64]。非本地块[70]试图在空间和时间上对远程依赖关系进行建模,这已被证明有利于准确的视频分类。然而,尽管它取得了成功,但非局部算子的计算成本很高和内存开销很高。Criss-cross [26] 通过交叉路径生成稀疏注意力图进一步降低了复杂性。Ramachandran等人[48]提出了独立的自我注意,用局部自注意单元替换卷积层。ANet [3] 在结合自注意力和卷积操作时取得了有竞争力的结果。LambdaNetworks [2] 使用 lambda 层,这是一种有效的自注意力来替换 CNN 中的卷积。DETR [6] 利用 Transformer 解码器将对象检测建模为具有可学习查询的端到端字典查找问题,成功地消除了对 NMS 等手工过程的需求。基于 DETR,可变形 DETR [85] 进一步采用可变形注意力层关注一组稀疏的上下文元素,获得更快的收敛和更好的性能。最近,Vision Transformer (ViT)[13]采用纯Transformer[64]模型进行图像分类,将图像视为一系列补丁。DeiT[63]使用一种新的蒸馏方法进一步扩展了ViT。与以前的模型不同,这项工作将金字塔结构引入 Transformer 以呈现纯 Transformer骨干网络以应对密集预测任务,而不是一个根据任务特定的头或一个图像分类模型。

3. Pyramid Vision Transformer(PVT)

3.1 Overall Architecture

我们的目标是将金字塔结构引入 Transformer 框架中,以便它可以为密集预测任务(例如对象检测和语义分割)生成多尺度特征图。PVT的概述如图3所示。与CNN主干[22]类似,我们的方法有四个阶段来生成不同尺度的特征图。所有阶段共享相似的架构,它由一个补丁嵌入层(Patch Embedding layer)和 Li个 Transformer 编码器层组成。

在第一步,输入的是一张大小为H*W*3的图片,我们将它划分为HW/4^2个patches每一个patch的尺寸是4*4*3,之后将flatten之后的向量输入线性投射层获得patch embedding,尺寸为HW/4^2*C1,之后嵌入的补丁和位置嵌入通过具有 L1 层的 Transformer 编码器传递,输出被重新整形为大小为 H4 ×W4 ×C1 的特征图 F1。同样,使用前一阶段的特征图作为输入,我们得到以下特征图:F2、F3 和 F4,其步幅相对于输入图像为 8、16 和 32 像素。使用特征金字塔{F1, F2, F3, F4},我们的方法可以很容易地应用于大多数下游任务,包括图像分类,目标检测,和语义分割。

3.2. Feature Pyramid for Transformer

与使用不同卷积步长获得多尺度特征图的CNN骨干网[54,22]不同,我们的PVT使用渐进收缩策略通过补丁嵌入层来控制特征映射的规模。

在这里,我们将第 i 阶段的补丁大小表示为 Pi。在阶段i的开始,我们首先将输入特征映射Fi−1∈R^Hi−1×Wi−1×Ci−1平均划分为Hi−1Wi−1/Pi^2patches,然后将每个补丁压平并投影到Ci维嵌入中。在线性投影之后,嵌入补丁的形状可以看作是Hi−1/Pi × Wi−1/Pi × Ci,其中高度和宽度比输入小Pi倍。

这样,我们可以在每个阶段灵活调整特征图的规模,从而使为 Transformer 构建一个特征金字塔成为可能。

3.3 Transformer Encoder

第 i 阶段的 Transformer 编码器有 Li 个编码器层,每个编码器层由注意力层和前馈层组成 [64]。由于PVT需要处理高分辨率(如4步)特征图,我们提出了一种空间缩减注意(SRA)层来代替编码器中传统的多头注意(MHA)层[64]。

与 MHA 类似,我们的 SRA 接收查询 Q、键 K 和值 V 作为输入,并输出细化的特征。不同的是,我们的SRA降低了K和V的空间尺度再进行注意力操作这大大减少了计算/内存开销。SRA 在阶段 i 的详细信息可以表示如下:

3.4. Model Details

总之,我们方法的超参数如下:

• Pi:阶段 i 的补丁大小;

• Ci:阶段i输出的通道数;

• Li:阶段i中的编码器层数;

• Ri:阶段i中SRA的缩减率;

• Ni:阶段i中SRA的头部数;

• Ei:阶段i中前馈层[64]的扩展比;

遵循 ResNet [22] 的设计规则,我们 (1) 在浅层使用小输出通道号; (2) 在中间阶段集中主要计算资源。为了为讨论提供实例,我们在表 1 中描述了一系列不同尺度的 PVT 模型,即 PVT-Tiny、-Small、-Medium 和 -Large,其参数编号分别与 ResNet18、50、101 和 152 相当。第 4 节介绍了在特定下游任务中使用这些模型的更多详细信息。

3.5. Discussion

我们模型最相关的工作是 ViT [13]。在这里,我们讨论了它们之间的关系和差异。首先,PVT 和 ViT 都是纯 Transformer 模型,没有卷积。它们之间的主要区别是金字塔结构。与传统的Transformer[64]类似,ViT输出序列的长度与输入相同,这意味着ViT的输出是单尺度的(见图1 (b))。此外,由于资源有限,ViT 的输入是粗粒度的(例如,补丁大小为 16 或 32 像素),因此其输出分辨率相对较低(例如 16 步幅或 32 步幅)。因此,很难直接将 ViT 应用于需要高分辨率或多尺度特征图的密集预测任务。我们的PVT通过引入渐进式收缩金字塔打破了Transformer的例行。它可以像传统的CNN主干那样生成多尺度特征图。此外,我们还设计了一个简单但有效的注意力层——SRA,用于处理高分辨率特征图并降低计算/内存成本。得益于上述设计,我们的方法比 ViT 具有以下优点:1)更灵活——可以在不同的阶段生成不同尺度的/通道的特征图; 2)更通用——可以很容易地插入和播放在大多数下游任务模型中; 3)对计算/内存更友好——可以处理更高分辨率的特征图或更长的序列。

4. Application to Downstream Tasks

4.1. Image-Level Prediction

图像分类是图像级预测最经典的任务。为了提供讨论的实例,我们设计了一系列不同尺度的PVT模型,分别是PVT-Tiny、-Small、-Medium和-Large,其参数数分别类似于ResNet18、50、101和152PVT系列的详细超参数设置在补充材料中(SM)中提供。

PVT系列的详细超参数设置在补充材料中(SM)中提供。

对于图像分类,我们遵循 ViT [13] 和 DeiT [63] 将可学习的分类标记附加到最后阶段的输入,然后使用全连接 (FC) 层在令牌之上进行分类。

4.2. Pixel-Level Dense Prediction

除了图像级预测之外,还需要对特征图执行像素级分类或回归的密集预测也经常出现在下游任务中。在这里,我们讨论了两个典型的任务,即对象检测和语义分割。

我们将PVT模型应用于三种具有代表性的密集预测方法,即RetinaNet[39]、Mask RCNN[21]和语义FPN[32]。RetinaNet 是一种广泛使用的单级检测器,Mask R-CNN 是最流行的两阶段实例分割框架,Semantic FPN 是一种没有特殊操作(例如扩张卷积)的普通语义分割方法。使用这些方法作为基线使我们能够充分检查不同主干的有效性。

实现细节如下:(1)与ResNet一样,我们使用在ImageNet上预训练的权值初始化PVT主干;(2)我们使用输出特征金字塔{F1, F2, F3, F4}作为FPN[38]的输入,然后将细化的特征映射输入到后续的检测/分割头;(3)在训练检测/分割模型时,PVT中没有一层被冻结;(4)由于检测/分割的输入可以是一个任意形状,在 ImageNet 上预训练的位置嵌入可能不再有意义。因此,我们根据输入分辨率对预训练的位置嵌入进行双线性插值。

5. Experiments

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类

全网最适合入门的面向对象编程教程:50 Python 函数方法与接口-接口和抽象基类 摘要: 在 Python 中,接口和抽象基类(Abstract Base Classes, ABCs)都用于定义类的结构和强制子类实现特定的方法,Python 没有…

基于ExtendSim的 电子制造 仿真模型

说明: 此模型表示电路板制造设施。该过程有4个步骤: *焊料制备 *组件放置 *烤箱 *检查 详情: *烤箱的容量为10张卡,但如果烤箱循环开始时仅能处理5张卡,则最多只能处理5张。 *如果检查员发现问题,他们将修理…

【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载

基于STM32设计的SD卡数据读取与上位机显示系统 演示视频: 基于STM32设计的SD卡数据读取与上位机显示系统 简介:本研究的主要目的是基于STM32F103微控制器,设计一个能够读取SD卡数据并显示到上位机的系统。SD卡的数据扇区读取不仅是为了验证存…

考研数据结构——C语言实现无向图邻接矩阵

首先,定义了一些基本的数据结构和常量: VertexType 和 EdgeType 分别用于表示图中的顶点和边的权重。MAXVEX 定义了图中最大顶点数为100。INFINITY 用于表示顶点之间没有直接的边相连,这里用65535作为无穷大的表示。 定义了一个图的结构体 MG…

react + antDesign封装图片预览组件(支持多张图片)

需求场景:最近在开发后台系统时经常遇到图片预览问题,如果一个一个的引用antDesign的图片预览组件就有点繁琐了,于是在antDesign图片预览组件的基础上二次封装了一下,避免重复无用代码的出现 效果 公共预览组件代码 import React…

网站建设的服务器该如何选择?

服务器的选择对于网站的稳定运行、性能表现以及成本控制至关重要。以下是一些关键的考虑因素,帮助你选择适合的服务器: 明确需求:你需要先明确网站的需求和目标。这包括确定服务器将用于托管什么样的应用(如Web前端、应用服务器、…

基于vue框架的宠物寻回小程序8g7el(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:发布人,宠物分类,宠物信息,接取人,接取信息,完成信息 开题报告内容 基于Vue框架的宠物寻回小程序开题报告 一、研究背景与意义 随着城市化进程的加快和人们生活水平的提高,宠物已成为许多家庭不可或缺的一员。它们不仅为生…

RK3568平台(网络篇)MAC地址烧录

一.max地址简介 MAC地址(Media Access Control Address)也称为硬件地址或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都…

[数据集][目标检测]俯拍航拍森林火灾检测数据集VOC+YOLO格式6116张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):6116 标注数量(xml文件个数):6116 标注数量(txt文件个数):6116 标注…

Mamba YOLO World

论文地址:https://arxiv.org/pdf/2409.08513v1 代码地址: GitHub - Xuan-World/Mamba-YOLO-World: Mamba-YOLO-World: Marrying YOLO-World with Mamba for Open-Vocabulary Detection 开集检测(OVD)旨在检测预定义类别之外的物体…

gma 2.0.13 (2024.09.16) 更新日志

安装 gma 2.0.13 pip install gma2.0.13网盘下载: 链接:https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码:1pc8 注意:此版本没有Linux版! 编译gma的Linux虚拟机没有时间修复,本期Linux版…

基于SpringBoot+Vue的企业会议室预定管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

【iOS】——JSONModel源码

JSONModel用法 基本用法 将传入的字典转换成模型: 首先定义模型类: interface Person : JSONModel property (nonatomic, copy) NSString *name; property (nonatomic, copy) NSString *sex; property (nonatomic, assign) NSInteger age; end接…

相亲交易系统源码详解与开发指南

随着互联网技术的发展,越来越多的传统行业开始寻求线上转型,其中就包括婚恋服务。传统的相亲方式已经不能满足现代人快节奏的生活需求,因此,开发一款基于Web的相亲交易系统显得尤为重要开发者h17711347205。本文将详细介绍如何使用…

FinGPT金融大模型

FinGPT仓库https://github.com/AI4Finance-Foundation/FinGPT 功能: Adviser。根据新闻判断市场情绪(积极、消极、中性),给出投资建议。Quantitative Trading。定制属于自己的金融助手。叫它关注某几个股票、监测消息等。可以直…

Comsol 多孔弹性波应用三:吸声器(超宽频带)

超宽频带吸声材料(Ultra-wideband absorbing materials)是指能够在非常宽的频率范围内吸收声波的材料。传统的吸声材料通常只能在较窄的频率范围内有效吸收声波,而超宽频带吸声材料可以在更广泛的频率范围内实现高效的吸声效果。这使得超宽频…

光伏业务管理系统:全流程管理成重点

一、光伏业务管理的挑战 光伏业务管理涉及项目规划、设计选型、施工建设、运营维护、数据分析等多个环节,每一个环节都直接关系到项目的经济性、安全性和可持续性。传统的管理方式往往存在信息不对称、流程不透明、响应速度慢等问题,难以适应光伏产业快…

有毒有害气体检测仪的应用和性能_鼎跃安全

随着现代工业的不断发展和扩张,越来越多的企业涉及到有毒有害气体的生产、使用和处理。工业规模的扩大导致有毒有害气体的排放量增加,同时也增加了气体泄漏的风险。在发生火灾、爆炸或危险化学品泄漏等紧急事件时,救援人员需要迅速了解现场的…

面试官:什么是CAS?存在什么问题?

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 回答 CAS,Compare And Swap,即比较并交换,它一种无锁编程技术的核心机制。其工作方式分为两步: 比较:它首先会比较内存中的某…

JVM 运行时数据区域

目录 前言 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 前言 首先, java程序在被加载在内存中运行的时候, 会把他自己管理的内存划分为若干个不同的数据区域, 就比如你是一个你是一个快递员, 一堆快递过来需要你分拣, 这个时候, 你就需要根据投放的目…