【图像分割】DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation

DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation

论文链接:http://arxiv.org/abs/2406.03702

代码链接:https://github.com/takaniwa/DSNet

一、摘要

  重新审视了现代卷积神经网络(CNNs)中的atrous卷积的设计,并证明了使用大内核应用atrous卷积的概念可能是一种更强大的范例。作者提出了三个指导原则来更有效地应用atrous卷积。根据这些指导原则,提出了DSNet,一种双分支CNN架构,它将atrous卷积结合到模型架构的浅层,并在ImageNet上对几乎整个编码器进行预训练以实现更好的性能。为了证明所提方法的有效性,DSNet模型在ADE20K、Cityscapes和BDD数据集上实现了准确性和速度之间的新的最佳平衡。具体而言,DSNet在ADE20K上以179.2 FPS的推理速度实现了40.0%的mIOU,在Cityscapes上以81.9 FPS的速度实现了80.4%的mIOU。

在这里插入图片描述

目录

  • DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation
    • 一、摘要
    • 二、创新点
    • 三、原理
      • Network design
      • DSNet: A novel Dual-Branch Network
      • MFACB: Learning of different scales
      • MSAF: Balancing the Details and Contexts
      • SPASPP: Further extracting context information
    • 四、实验
      • Dataset
      • Implementation Detail
      • Ablation Study
      • Comparison
    • 五、总结

二、创新点

  从网络的浅层开始堆叠空洞卷积会产生什么效果?

  三个空洞卷积的经验指导原则:

  • 不仅仅使用空洞卷积。将空洞卷积与稠密卷积结合使用可能是更好的选择。
  • 避免“Atrous灾难”。为了达到更高的准确性,选择合适的空洞率至关重要。
  • 适当的融合机制。使用适当的融合机制将不同层次的信息整合起来,可以提高模型的性能。

创新点

  1、重新审视了在CNNs中使用空洞卷积的设计,并探索了三个经验指导原则。基于上述指导原则,提出了一种新颖的双分支网络。

  2、DSNet 在 ADE20K、Cityscapes 和 BDD 数据集上实现了准确性和速度之间的新最佳平衡。DSNet 同时在不同数据集上优于实时 Transformer-based 和卷积神经网络-based 模型。

三、原理

Network design

  CNNs中空洞卷积设计的三个经验指南:

  • 不仅使用空洞卷积,提出使用空洞卷积和稠密卷积结合,以保持细节信息,消除“网格效应”和难以在上下文和细节信息之间保持平衡的缺点。从表1可以看出,仅使用空洞卷积时,网络在分类和分割任务上的准确性相对较低。然而,一旦采用这种方法,网络的准确性显著提高。
    在这里插入图片描述

  • 避免“空洞灾难”。

  • 适当的融合机制。适当的融合机制可以有效地引导两个分支的融合增强不同层级特征之间的信息传递,并提高模型的表征能力。

  对于具有较大空洞率(例如d = 15)的空洞卷积,尽管它们在没有在ImageNet上进行预训练的分割任务中略有优势,但它们的分割性能在在ImageNet上进行预训练后明显落后于使用较小空洞率的模型。将这种现象称为“空洞灾难”。

  如果希望通过在ImageNet上进行预训练来实现语义分割的更高准确性,则选择适当的空洞率至关重要。为了进一步扩大语义分割中的感受野,考虑将一个上下文模块集成到主干网络之外,这样可以在利用上提供更大的灵活性。

DSNet: A novel Dual-Branch Network

在这里插入图片描述

  • 将网络分为两个分支,空间分支和上下文分支。上下文分支主要由空洞卷积组成,实现为MFACB,而空间分支由 3 × 3 3 \times 3 3×3的稠密卷积组成。

  • 为了充分整合空间分支和上下文分支的信息,使用MSAF在两个分支之间建立了三个水平连接。

  • 网络主干主要使用小的空洞卷积率(如2、3和5)的空洞卷积来减轻“空洞灾难”。此外,主干网络在ImageNet上进行预训练,以增强特征表征能力。

  • 提出了一个名为SPASPP的上下文模块,用于在分割任务中插入主干网络以快速增加感受野

  由于两个分支具有相同的分辨率,将其称为具有相同分辨率的的双分支网络(DSNet)。设计了两个版本:DSNet轻量级版本,具有快速推理能力,而DSNet-Base具有更高的准确性。与DSNet相比,DSNet-Base是一个更深的版本,具有更多的通道

MFACB: Learning of different scales

在这里插入图片描述

  引入了一种新的编码器模块用于语义分割,称为多尺度融合空洞卷积块(MFACB)。如图3所示,MFACB由三个空洞卷积层组成,每个层使用不同的空洞率来扩展感受野。经过三次卷积操作后,中间特征图被连接并使用 1 × 1 1 \times 1 1×1卷积进行通道压缩。最后,压缩后的特征图与输入特征图进行残差连接。

  可以通过观察表2来深入了解该模块的作用。在具有[2, 2, 2]空洞率的第一个MFACB模块之后,三个中间特征图的感受野分别为 5 × 5 5 \times 5 5×5 9 × 9 9 \times 9 9×9 13 × 13 13 \times 13 13×13。随后,通过串联和 1 × 1 1 \times 1 1×1卷积,输出特征图同时聚合了这三个不同尺度的感受野。在第二个MFACB模块中的串联和融合操作之后,由于同样的原因,当前层的感受野尺度开始增加。在主干网络中使用MFACB使得模型能够有效地学习不同尺度的语义信息
在这里插入图片描述

MSAF: Balancing the Details and Contexts

  跳跃连接增强了不同层次或尺度上特征图之间的信息传输,从而提高了模型的表示能力。遵循第三个原则适当的融合机制,引入了一种新颖的多尺度注意力融合模块(MSAF),旨在实现两个不同层次分支之间的选择性学习。其主要思想是让网络根据损失学习特征权重,使模型能够有选择地融合不同尺度的信息。该模块主要分为两部分:多尺度注意力(MSA)多尺度注意力融合模块(MSAF)

多尺度注意力(MSA) 如图4所示,MSA的主要目的是
学习权重 α \alpha α,作为不同层级分支融合的基础。MSA模块主要分为两个部分:区域注意力像素注意力。为了更详细地解释MSA,将通道数、特征图宽度和高度分别表示为 C C C W W W H H H
在这里插入图片描述

  • (1): 区域注意力: 区域注意力衡量了特征图中不同
    区域的重要性
    。在使用注意力时考虑感受野是必要的。为了方便起见,将特征图分成相同大小的块,例如通道为 1 × 1 1 \times 1 1×1,4块 2 × 2 2 ×2 2×2,16块 4 × 4 4 \times 4 4×4。在DSNet中,将特征图分成大小相等的区域,分别为 1 × 1 1 \times 1 1×1 4 × 4 4 \times 4 4×4 8 × 8 8 \times 8 8×8 16 × 16 16 \times 16 16×16。以 4 × 4 4 \times 4 4×4为例,首先对特征图 F F u s e ∈ R C × H × W F_{Fuse} \in R^{C \times H \times W} FFuseRC×H×W进行平均池化,得到 f c 4 ∈ R C × 4 × 4 f_{c4} \in R^{C \times 4 \times 4} fc4RC×4×4,然后进行通道压缩和扩展,得到 f c 4 ˉ ∈ R C × 4 × 4 \bar{f_{c4}} \in R^{C \times 4 \times 4} fc4ˉRC×4×4。为了与像素注意力兼容,将其重新调整为 f c 4 ˉ ∈ R C × H × W \bar{f_{c4}} \in R^{C \times H \times W} fc4ˉRC×H×W。区域注意力的数学公式可以表示为方程2。与SE注意力[20]类似,通道压缩和扩展的目的是减少计算复杂度并增强非线性 G O N V GONV GONV表示通道扩展和压缩的操作。
    F F u s e = F C o n t e x t + F S p a t i a l ( 1 ) F_{Fuse} = F_{Context} + F_{Spatial} \ (1) FFuse=FContext+FSpatial (1)
    f r e g ˉ = ∑ i = 1 , 4 , 8 , 16 U n i P o o l ( G o n v ( A v g P o o l [ i ] ( F F u s e ) ) ) ( 2 ) \bar{f_{reg}} = \sum_{i=1,4,8,16}UniPool(Gonv(AvgPool[i](F_{Fuse}))) \ (2) fregˉ=i=1,4,8,16UniPool(Gonv(AvgPool[i](FFuse))) (2)

  • (2)像素注意力: 像素注意力模块用于衡量每个像素的重要性。该模块不需要池化和重塑操作。如公式3所示,直接对 F F u s e ∈ R C × H × W F_{Fuse} \in R^{C \times H \times W} FFuseRC×H×W进行通道压缩和扩展,得到 → f S ∈ R C × H × W 。出于同样的原因, \rightarrow{f_{S}} \in R^{C \times H \times W}。出于同样的原因, fSRC×H×W。出于同样的原因,\rightarrow{f_{S}}$ 可以衡量每个像素的重要性。
    → f S = G o n v ( F F u s e ) ( 3 ) \rightarrow{f_{S}} = Gonv(F_{Fuse}) \ (3) fS=Gonv(FFuse) (3)

多尺度注意力融合模块。通过叠加像素注意力和区域注意力来获得特征图中不同位置的权重,并且权重的计算公式可以用公式4表示。如图4所示,最终通过逐元素相乘来融合这两个分支。区域注意力的数学公式可以描述为公式5。
α = S i g m o i d ( A d d ( f s ˉ , f r e g ˉ ) ) ( 4 ) \alpha = Sigmoid(Add(\bar{f_{s}}, \bar{f_{reg}})) \ (4) α=Sigmoid(Add(fsˉ,fregˉ)) (4)

F o u t = F C o n t e x t × α + F S p a t i a l × ( 1 − a l p h a ) ( 5 ) F_{out} = F_{Context} \times \alpha + F_{Spatial} \times (1 - alpha) \ (5) Fout=FContext×α+FSpatial×(1alpha) (5)

SPASPP: Further extracting context information

在这里插入图片描述

  提出了一种新模块,用于从特征图中进一步提取上下文信息。图5展示了**串行-并行空洞空间金字塔池化(SPASPP)**的内部结构。与ASPP[6]的完全并行结构不同,堆叠了几个 3 × 3 3 \times 3 3×3的空洞卷积。随后,从堆叠的空洞卷积得到的中间特征图与全局池化后的上采样特征图进行拼接。堆叠空洞卷积和拼接的目的是在预训练的ImageNet骨干网络之外,通过这个上下文模块快速增加感受野,同时获取不同尺度的上下文信息。然后,使用 1 × 1 1 \times 1 1×1卷积对通道进行压缩,并与输入进行残差连接。图5不同空洞率的卷积核的融合形成了多尺度特性。使用加法模式而不是完全并行模式的目的是使模型获得更丰富的上下文信息并进一步扩大感受野,从而在需要较大感受野的任务中表现更好。表3表明,相比于没有额外卷积层的ASPP,SPASPP可以提供更丰富的上下文信息,同时保持与ASPP基本相当的速度
在这里插入图片描述

四、实验

Dataset

  在ADE20K、Cityscapes和BDD上进行了分割实验。ADE20K[50]数据集涵盖了150个类别,包含25,000张图像,其中20,000张用于训练,2,000张用于验证,3,000张用于测试。在测试过程中,所有图像都被调整为 512 × 512 512 \times 512 512×512的大小。Cityscapes[9]是一个公开可用的资源,专为语义分割任务设计。它包含了2975张精细注释的训练图像,500张验证图像和1525张测试图像。图像分辨率为 2048 × 1024 2048 \times 1024 2048×1024,对于实时模型来说是具有挑战性的。这里只使用了精细注释的数据集BDD[46]数据集是一个专为自动驾驶应用而定制的综合性资源,包含19个不同的类别。它包括一个由7,000张图像组成的训练集和一个由1,000张图像组成的验证集,每张图像的尺寸为 1280 × 720 1280 \times 720 1280×720像素。

Implementation Detail

Training 在ImageNet[32]上进行预训练后,在语义分割任务上的训练方式与之前的工作[17, 23, 24, 29, 41]几乎相同。使用动量为0.9的SGD优化器。作为常见做法,采用poly学习率策略来衰减初始学习率。数据增强包括随机水平翻转、随机尺度调整(范围为[0.4, 1.6])和随机裁剪。对于DSNet,Cityscapes、ADE20K和BDD迭代次数、初始学习率、权重衰减、裁剪尺寸和批量大小可以总结如下: [ 120 k , 0.01 , 0.0005 , 1024 × 1024 , 24 ] [120k, 0.01, 0.0005, 1024 × 1024, 24] [120k,0.01,0.0005,1024×1024,24] [ 150 k , 0.02 , 0.0001 , 512 × 512 , 32 ] [150k, 0.02, 0.0001, 512 ×512, 32] [150k,0.02,0.0001,512×512,32] [ 87 k , 0.01 , 0.0005 , 512 × 512 , 24 ] [87k, 0.01, 0.0005, 512 ×512, 24] [87k,0.01,0.0005,512×512,24]。对于DSNet-Base,Cityscapes、ADE20K和BDD的迭代次数、初始学习率、权重衰减、裁剪尺寸和批量大小可以总结如下: [ 120 k , 0.01 , 0.0005 , 1024 × 1024 , 32 ] [120k, 0.01, 0.0005, 1024 ×1024, 32] [120k,0.01,0.0005,1024×1024,32] [ 160 k , 0.02 , 0.0001 , 512 × 512 , 32 ] [160k, 0.02, 0.0001, 512 ×512, 32] [160k,0.02,0.0001,512×512,32] [ 108 k , 0.01 , 0.0005 , 512 × 512 , 16 ] [108k, 0.01, 0.0005, 512 ×512, 16] [108k,0.01,0.0005,512×512,16]

Inference 在一个由单个RTX 4090、PyTorch 1.10、CUDA 11.3、cuDNN 8.0和Ubuntu环境组成的平台上测量推断速度。根据[29, 41],将批量归一化集成到卷积层中,并将批量大小设置为1,以测量推断速度。特殊速度比较。特别地,为了方便与基于mmcv框架[8]开发的一些模型进行速度比较,还使用了RTX3090来推断速度,将模型移植到mmcv框架或将基于mmcv框架的模型移植到环境中都需要显著的时间开销。mmcv框架的速度可以在SCTNet[42]中找到。

Ablation Study

两分支网络的多尺度注意力融合(MSAF)方法
在这里插入图片描述

  将不同的融合方法应用于模型的三个侧连接。实验结果如表4所示。与逐元素相加(Add)相比,所有三种注意力融合方法在分割任务中都表现出优势,提高了准确性,同时速度损失最小。特别是提出的多尺度融合模块在分类和分割任务中表现出卓越的性能,在Imagenet1k分类任务上提高了0.9%,在Cityscapes上提高了0.7%。与AFF和iAFF[10]相比,它仍然在准确性上增加了近0.4%。本实验评估了第三个原则,使用适当的空洞卷积融合方法。

MFACB的效率
在这里插入图片描述

 为了展示MFACB的有效性,作者进行了一个简单的对比实验。采用了两种不同的策略,分别称为 E X P 1 EXP \ 1 EXP 1 E X P 2 EXP \ 2 EXP 2,如表5所示。为了保证实验的公平性,采用了相同的训练策略,使用两个RTX 4090 GPU,批量大小为12,对于两个实验都进行了50,000次迭代。从表中可以看出,使用相同的空洞率和相同数量的空洞卷积,MFACB相比于BasicBlock[19]取得了更好的性能。

SPASPP的效率
在这里插入图片描述

 将SPASPP与其他上下文提取模块进行了比较,包括Atrous Spatial Pyramid Pooling (ASPP)[6]和Deep Aggregation Pyramid Pooling Module (DAPPM)[29]。为了获得更高的基准线,没有减少DAPPM的中间通道。从表6可以看出,本文提出的SPASPP将准确率从77.3%提高到80.4%,仅增加了1-2ms的推理时间。此外,SPASPP在几乎没有速度损失。

Comparison

在这里插入图片描述

ADE20K. 最近,大多数实时的基于CNN的分割方法主要关注Cityscapes数据集,对ADE20K数据集的关注较少。最近的一项工作[42]指出,由于ADE20K收集了超过150个类别的大量图像,它对轻量级的基于CNN的模型构成了相当大的挑战。然而,从表7中可以看出,所提方法在ADE20K上取得了良好的结果,而其他基于CNN的模型则没有。实验结果表明,DSNet在推理速度和准确性之间取得了最佳的平衡。具体而言,DSNet的准确性高于SegFormerB0、TopFormer-B和RTFormer-S,分别超过它们2.6%、0.8%和3.3%。此外,DSNet的运行速度大约是这些模型的两倍。DSNet-Base在准确性上也优于SeaFormer-B和SegNext-T,同时保持更快的速度。与RTFormer-B相比,DSNet-Base仍然保持着1.3%的准确性优势。BDD. 对 于BDD[46]数据集,只有SFNet和SFNet-Lite可以 与所提方 法 进行 比 较。SFNet-Lite[24]和SFNet[23]目前是BDD实时语义分割的最新技术。可以从表8中观察到实验结果。
在这里插入图片描述

  在实时BDD语义分割方面取得了新的最先进成果。具体而言,DSNet的准确率比SFNet(ResNet18)和SFNet-Lite (ResNet18)高出2.2%,速度更快。与SFNet系列的更快版本相比,所提方法在准确率上比SFNet-Lite(STDC-2)高出3.4%mIoU,速度仅降低了0.3毫秒。此外,DSNet-Base在非实时领域实现了最高准确率

Cityscapes.
在这里插入图片描述

  之前基于CNN的实时工作将Cityscapes视为标准基准。从表9可以看出,所提方法在实时性和高准确性之间取得了新的最佳平衡。具体而言,DSNet在保持实时性能的同时实现了最高准确性。与SeaFormer-B-Seg100、AFFormer-B-Seg100和SegNext-T-Seg100相比,DSNet分别实现了2.7%、1.7%和0.6%的mIOU准确性提升,同时保持更快的推理速度。与SFNet、DDRNet23和PIDNet-M等最先进的CNN模型相比,DSNet仍然实现了最高准确性。此外,从表10还可以观察到,与HRNet和DeepLabV3等其他高准确性模型相比,DSNet-Base仍然具有很强的竞争力。
在这里插入图片描述

五、总结

  本文重新审视了空洞卷积的应用,并提出了一种基于几个简单准则的新型双分支网络,其分辨率相同。DSNet在三个大型数据集上取得了更好的结果。由于所提方法是实时的,在实际应用中应用它可以带来显著的好处。

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

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

相关文章

针对微电网中可时移,柔性,基础负荷的电价响应模型---代码解析

前言: 在上两篇帖子中,讲解了我对于粒子群算法的理解,站在巨人的肩膀上去回望:科研前辈们确实非常牛逼,所以它才成为了非常经典的算法。这篇帖子主要是想分享一下,对于微电网、电力系统的论文中&#xff0c…

“深入探讨Redis主从复制:原理、配置与优化“

目录 # 概念 1. 配置主从同步步骤 1.1 创建文件夹 1.2 复制配置文件 1.3 配置文件关闭 1.4 查看端口号,发现端口号存在 1.5 连接三个端口号 1.6 查看主机运行情况 1.7 让服务器变成(主机)或(从机) 1.8 实现效…

CSS选择符和可继承属性

属性选择符&#xff1a; 示例&#xff1a;a[target"_blank"] { text-decoration: none; }&#xff08;选择所有target"_blank"的<a>元素&#xff09; /* 选择所有具有class属性的h1元素 */ h1[class] { color: silver; } /* 选择所有具有hre…

志愿服务管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;广场论坛管理&#xff0c;志愿活动管理&#xff0c;活动报名管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;志愿活动&a…

单片机(STM32)与上位机传输浮点数

目录 单片机(STM32)与上位机传输数据的方法1. 传输整形数据2. 传输浮点数据3. 如何打包与解包 单片机(STM32)与上位机传输数据的方法 在进行单片机程序的开发时&#xff0c;常常需要与其他设备进行通信。一种情况是与其他电路板通信&#xff0c;比如STM32主机与STM32从机通信&…

YOLOv10项目-服务器上运行

1、前言 2、运行YOLOv10代码流程&#xff08;超详细&#xff09; &#xff08;3&#xff09;根据下面步骤安装&#xff1a; &#xff08;4&#xff09;数据集和其他配置 &#xff08;5&#xff09;测试训练&#xff08;很详细&#xff09; 1、前言 由于一些事情&#xff0…

2024中国应急(消防)品牌巡展成都站成功召开!

汇聚品牌力量&#xff0c;共同相聚成都。6月14日&#xff0c;由中国安全产业协会指导&#xff0c;中国安全产业协会应急创新分会、应急救援产业网联合主办&#xff0c;四川省消防协会协办的“一切为了安全”2024年中国应急(消防)品牌巡展-成都站成功举办。该巡展旨在展示中国应…

英特尔 “AI” 科通:英特尔AI大模型应用前瞻

亲爱的科技探险家、前沿探索者、对未来深具好奇心的您&#xff0c; 身处人工智能引领的时代&#xff0c;我们目睹着行业的革命性变革。技术的创新不仅改变着我们的日常&#xff0c;更重新定义着我们对未来的期许。今天&#xff0c;怀着无限激情和期待&#xff0c;我们邀请您参…

MySQL之优化服务器设置和复制(一)

优化服务器设置 操作系统状态 CPU密集型的机器 CPU密集型服务器的vmstat输出通常在us列会有一个很高的值&#xff0c;报告了花费在非内核代码上的CPU时钟;也可能在sy列有很高的值&#xff0c;表示系统CPU利用率&#xff0c;超过20%就足以令人不安了。在大部分情况下&#xff…

Web应用安全测试-防护功能缺失

Web应用安全测试-防护功能缺失 1、Cookie属性问题 漏洞描述&#xff1a; Cookie属性缺乏相关的安全属性&#xff0c;如Secure属性、HttpOnly属性、Domain属性、Path属性、Expires属性等。 测试方法&#xff1a; 通过用web扫描工具进行对网站的扫描&#xff0c;如果存在相关…

【自动驾驶】ROS小车系统介绍

文章目录 小车组成轮式运动底盘的组成轮式运动底盘的分类轮式机器人的控制方式感知传感器ROS决策主控ROS介绍ROS的坐标系ROS的单位机器人电气连接变压模块运动底盘的电气连接ROS主控与传感器的电气连接运动底盘基本组成电池电机控制器与驱动器控制器与运动底盘状态数据&#xf…

一行代码实现鼠标横向滚动

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 在项目中我们可能会遇到当鼠标在某个区域内&#xff0c;我们希望滚动鼠标里面的内容可以横向滚动&#xff1b; 比如我们一些常见的后台状态栏&#xff1a; 那这种该怎么写&…

找工作小项目:day16-重构核心库、使用智能指针(2)

day16-重构核心库、使用智能指针 太多了分一篇写。 5、EventLoop 这是一个事件轮询&#xff0c;在这个部分会通过Poller进行就绪事件的获取&#xff0c;并将事件进行处理。 头文件 这里使用了一个智能指针并使用的是unique_ptr指向Poller红黑树&#xff0c;防止所有权不止…

基于springboot的宠物商城网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的宠物商城网站,java项目…

湿法消解石墨消解仪 应用化学分析领域石墨炉

石墨消解仪在化学实验中具有重要的作用。它是一种高级实验设备&#xff0c;广泛应用于化学分析领域&#xff0c;特别是在样品的前处理和测试前的样品制备过程中。 石墨消解仪采用高温高压技术&#xff0c;能够将固体样品中的有机和无机物质转化为可溶性的气体或液体形式。这种…

Ubuntu的文件权限介绍

Linux系统是一个多用户系统&#xff0c;每个用户都会创建自己的文件。为了防止其他人擅自改动他人的文件&#xff0c;需要拥有一套完善的文件保护机制。在Linux系统中&#xff0c;这种保护机制就是文件的访问权限。文件的访问权限决定了谁可以访问和如何访问特定的文件。 为了…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串筛选排序(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

比特币的共识协议

目录 前言 一、铸币交易 1.铸币权 2.铸币交易&#xff08;coinbase tx&#xff09; 3.输入和输出 二、小型的区块链 1.见下图所示 2.哈希指针 3.双花攻击 三、块头块身&#xff0c;全节点轻节点 1.块头(block head) 2.块身 3.全节点full node(fully validating node…

小孟再接盲盒小程序,3天开发完!

大家好&#xff0c;我是程序员小孟。 前面开发了很多的商业的单子&#xff0c;私活联盟的小伙伴慢慢的逐渐搞自己的产品。 前面的话&#xff0c;开发了盲盒小程序&#xff0c;最近又接了一款盲盒小程序。因为前面有开发过&#xff0c;所以我们的成本也少了很多。 盲盒小程序…

【一】【QT开发应用】QT开发环境配置,安装QT应用

下载QT软件 点击网址链接&#xff0c;QT下载网址 下载vsaddin插件 点击网址链接&#xff0c;QT下载网址 根据自己的vs版本下载对应的文件. 安装QT 用命令行打开安装程序 找到直接路径, D:\Software\QT\qt-unified-windows-x86-4.3.0-1-online.exe 利用WindowsPowe…