[论文笔记] CSFCN
摘要
上下文建模或多级特征融合方法已被证明可以有效提高语义分割性能。 然而,它们并不是专门处理像素上下文不匹配和空间特征不对齐的问题,并且高计算复杂度阻碍了它们在实时场景中的广泛应用。
在这项工作中,我们提出了一种轻量级的上下文和空间特征校准网络(CSFCN),以通过基于池化和基于采样的注意力机制来解决上述问题。
CSFCN包含两个核心模块:上下文特征校准(CFC)模块和空间特征校准(SFC)模块。
CFC采用级联金字塔池化模块来有效捕获嵌套上下文,然后根据像素上下文相似度聚合每个像素的私有上下文,以实现上下文特征校准。
SFC将特征沿通道维度分割为多组子特征,并通过可学习的采样传播其中的子特征,以实现空间特征校准。
对 Cityscapes 和 CamVid 数据集的大量实验表明,我们的方法在速度和准确性之间实现了最先进的权衡。
介绍
我们观察到,上下文不匹配主要来自于上下文建模中的不加区别的处理。 具体来说,用于聚合上下文的常用方法[4]、[5]、[6]为每个像素引入了非自适应上下文,忽略了它们在上下文需求方面的固有差异。 如图 2(a) 所示,对于像素 A 和 B,先前的方法在预定义区域内为它们建模与空间相关的上下文。 然而,激活的上下文区域可能太大或太小,这些不匹配的上下文将带来意想不到的不相关信息或无法提供足够的语义线索。 另一方面,特征错位主要是由重复下采样引起的,这会导致输出(例如特征或预测)和输入图像之间的空间错位。 这个问题在无参数上采样中会加剧,并引入更多的预测误差(特别是在边界处),如图2(b)所示。 考虑到空间注意力(尤其是自注意力)[16],[17]可以捕获每个像素的有益特征并抑制不相关的信息,而其昂贵的计算开销是实时方法无法承受的。 为了解决上述问题,我们提出了一种轻量级的上下文和空间特征校准网络(CSFCN),它具有两种简化的空间注意方式来匹配像素和上下文并将特征与输入对齐。 如图1所示,我们的CSFCN在满足实时性要求的同时,比其他方法实现了更高的精度。
具体来说,为了缓解上下文不匹配问题,我们提出了上下文特征校准(CFC)模块。 与以前以固定方式聚合每个像素的上下文的方法不同,CFC 对每个像素的不同上下文进行建模,即上下文特征是输入的函数,并且也因像素而异。
在这里,我们首先设计了一个级联金字塔池化模块,通过重用池化结果来有效捕获多尺度上下文。 然后,与 selfattention [16]、[18] 类似,但我们不是计算像素到像素的相似度,而是计算像素到上下文的相似度来聚合每个像素的语义相关上下文,从而实现上下文特征校准。 然而,由于池化上下文很容易偏向于具有大模式的特征,因此将它们均匀分布到每个位置将压倒小模式的表示并导致过度平滑的结果。 因此,我们进一步提出了上下文重新校准块(CRB),通过锐化大对象并保留空间细节来有条件地学习局部上下文,如图2(a)所示。
此外,我们引入了空间特征校准(SFC)模块来解决特征错位问题。 源于自注意力 [16]、[18],但 SFC 不是聚合来自所有位置的信息,而是仅从学习的采样位置收集信息,这取决于输入。 直观上,我们只需采样对当前位置预测最有利的特征并将其放置在当前位置,这在实现特征校准的同时大大减轻了计算负担。 此外,我们观察到特征图雕刻了各种语义信息(例如,物体或东西,如图2(b)所示),并且对于不同的特征图通常没有单一的最佳校准方法。 换句话说,统一校准所有特征图会削弱整体特征的区分度。 因此,为了更精细的特征校准,我们首先将通道维度分为多个子特征,然后分别进行校准,这进一步提高了性能。
创新点
1)我们引入了两种简化的自注意力模型 在实现实时分割的同时解决上下文不匹配和特征错位问题的方法。
2)我们设计了一个基于池化的上下文特征校准模块,该模块通过将像素与基于池化的上下文进行匹配来定制每个像素的上下文。
)我们设计了一个基于采样的空间特征校准模块,它对每个位置最具代表性和信息量的特征进行采样
相关工作
A. Generic Semantic Segmentation
1) Context Modeling: 2) Feature Fusion: 3) Efficient Transformer:
B. Real-Time Semantic Segmentation
感兴趣可看
方法框架
A. Network Architecture
所提出的CSFCN的整体架构如图3所示,它采用非对称编码器-解码器架构。 具体来说,CSFCN 采用轻量级骨干网络来提取多级特征。 之后,我们设计了上下文特征校准模块来为每个像素构建私有上下文以增强其辨别力。 此外,我们使用空间特征校准模块进行空间特征校准,以产生具有精确边界的强语义特征。 不失一般性,我们采用 ImageNet [38] 中预训练的 ResNet-18 [37] 作为主干网络,其他 CNN 也可以用作我们方法中的主干网络。
B. Context Feature Calibration Module
上下文信息可以提供丰富的场景类别先验,以纠正意外的错误分类。 然而,以前的方法[4]、[5]、[6]聚合了预定义区域内的上下文,并忽略了并非所有上下文对给定像素的分类贡献相同,这不可避免地导致上下文不匹配的问题。
此外,捕获的上下文严重偏向于大对象,因为它们包含更多像素,并导致小对象的过度平滑结果。 基于上述见解,我们提出了一个上下文特征校准模块(CFC)来定制和细化每个像素的语义上下文。
通常,大型物体或物体在图像中占主导地位,全局上下文通常与它们相似,但与空间细节不同。 受这种直觉的启发,我们将上下文与每个像素进行匹配,以捕获对其分类最具指导意义的上下文。 也就是说,我们聚合来自语义更接近的区域而不是空间更接近的区域的上下文。
具体来说,给定特征 X ∈ RC×H×W,我们首先处理 X 以捕获高度抽象的多尺度上下文 Z ∈ RC×M。 然后,我们计算像素上下文相似度 ɵ∈ RN×M,又名空间注意力图,其中 N = H × W 和 M 分别表示像素和上下文的总数。 我们采用 ɵ 作为指导来聚合每个 像素 的上下文,以实现上下文特征校准。 最后,我们进一步调整每个语义上下文的响应值以生成细粒度的上下文,从而实现上下文重新校准。 从数学上讲,我们的 CFC 可以定义为:
其中 xi , yi , αi , z j ∈ RC×1 分别表示输入、输出、重新校准因子和上下文。 i的范围为[1,···,H×W],f(·)表示计算特征之间亲和度的成对函数。
模块详细信息
我们在图4中说明了我们的CFC模块。为了追求效率,我们设计了级联金字塔池化(CPP)块来重用前几层的池化结果,从而减少不必要的冗余计算。 如图 4 所示,给定特征 X ∈ RC×H×W,我们首先采用 1 × 1 卷积层生成降维特征 Q ∈ RC′×H×W,其中 C′ 远小于 C
(默认情况下,C′ = 32,C = 256)。 然后,我们使用 CPP 块来收获多尺度上下文 Z ∈ RC×M。
特别地,当池化层的输出高度n ∈ [1, 2, 3](一般情况下,输出宽度等于高度)时。默认情况下, 我们设置 n = [1, 2, 3, 6]。 由于池化层在同质空间网格(例如3×3)上进行池化,因此当输入的纵横比不为1时,这可能会导致池化特征的信息冗余。为此,我们保持纵横比为 池化输出大小等于输入。 例如,在方形裁剪上训练时,我们的最小输出大小为 1 × 1,而对于 1024 × 2048 输入,其大小将为 1 × 2。 最后,我们将 Z 输入两个卷积层(使用 BN 和 ReLU)以产生两种形式的上下文表示,即 K ∈ RC′×M 和 V ∈ RC×M。
然后,我们将 Q 重塑并转置为 RN×C′,并在 Q 和 K 之间进行矩阵乘法,并添加一个 softmax 层以产生像素上下文相似性 ɵ∈ RN×M:
其中 ɵi, j 表示第 i 个像素 Qi 和第 j 个上下文 Kj 之间的亲和度。
最后,我们在 V 和 ɵT 之间执行矩阵乘法以获得校准的语义上下文 E ∈ RC×N 并将 E 重塑为 RC×H×W。 获得校准上下文E后,我们将其发送到上下文重新校准块(CRB)以生成精炼上下文E'。 CRB采用类残差设计[37],可以表示为:
其中 α ∈ RC×H×W 表示重新校准因子,W1 ∈ R C 4 ×C×1×1 和 W2 ∈ RC×C 4 ×3×3 表示卷积层。贴一下原文 ()
在这里,我们选择 tanh 函数来删除冗余信息并突出显示上下文中的有益信息(例如边界和小对象)。 最后,我们对 X 和 E′ 进行逐元素求和以生成最终的。这里我们采用求和而不是串联操作来减少计算成本。
C. Spatial Feature Calibration Module
为了弥补逐步下采样造成的空间细节损失,之前的方法 采用跨级特征融合来增强具有低级细节的高级语义特征。 给定低分辨率特征 Fℓ ∈ RCℓ×Hℓ×Wℓ 和高分辨率特征 Fℏ ∈ RCℏ×Hℏ×Wℏ ,他们首先通过标准双线性插值对 Fℓ 进行上采样,然后将 Fℏ 和上采样的 Fℓ 添加或连接以获得输出。 然而,由于空间错位和巨大的表示差距,直接融合它们仍然无法达到令人满意的性能。
此外,由于特征图编码各种语义信息[39],沿通道维度[17]、[22]执行统一特征对齐也会损害性能。 为了缓解这些问题,我们将通道的维度分组为多个子特征以分别执行校准操作,并无缝集成门控机制以自适应地融合跨级特征。
关于特征校准,我们建议采用特征重采样来重建特征。
ps特征重采样
具体来说,假设特征图上每个位置的空间坐标为 {(1, 1) , (1, 2) , 。 。 。 , (H, W)} 学习到的 2D 偏移图为 1 ∈ R2×H×W。 我们的校准函数 T(·) 可以表示为:
在 p = (h+11 h,w, w+12 h,w) 处采样特征来导出输出 Uh,w。 由于 p 表示任意(分数)位置,因此等式: 等式5 枚举所有积分位置并使用双线性插值核获得采样位置的特征。 直观上,如图3中SFC中的采样过程所示,我们只是采样对当前位置(蓝点)最有利的特征来替换当前位置(绿点)特征进行校准。 此外,为了更精细的校准,我们沿着通道维度将特征 F 分成 G 组,然后分别对齐每组内的特征,如图 5 所示。
由于F′ℏ通常包含丰富的空间细节,而F′ℓ包含更多语义,仅仅校准然后融合它们并不能产生令人满意的性能。 这是因为单独的特征校准无法处理特征之间巨大的代表性差异。 因此,我们进一步建议通过门控策略自适应地融合校准语义特征 F′ ℓ 和细粒度特征 F′ ℏ,弥合它们之间的表示差距:
其中 βℓ 和 βℏ 表示门掩模。
1)模块详细信息:为了提高效率,我们将校准和融合过程集成在单个空间特征校准模块中。 如图 5 所示,给定特征 Fℓ ∈ RCℓ×Hℓ×Wℓ 和 Fℏ ∈ RCℏ×Hℏ×Wℏ ,我们首先通过两个卷积层将它们的通道统一为相同的数字 C(默认= 128)。 其次,我们采用双线性插值对 Fℓ 进行上采样。 然后,将上采样的 Fℓ 和 Fℏ 连接起来。
之后,我们将它们输入到卷积块中以预测两组偏移图 1ℓ ∈ R(2×G)×H×W 和 1ℏ ∈ R(2×G)×H×W,用于对齐两个级别的特征和两个 门掩码 βℓ, βℏ ∈ R1×H×W 用于控制两个级别的特征信息流。 最后,校准后的跨级特征进行逐元素求和以获得输出。 综上所述,我们的SFC模块可以正式写为:
其中 U (·) 表示双线性上采样函数,Wℓ ∈ RCℓ×C′×3×3 和 Wℏ ∈ RCℏ×C×3×3 表示具有 BN 和 ReLU 的卷积层。
注意,我们采用残差思想来减轻初始阶段大偏移和掩模预测误差的负面影响,这使得我们可以将SFC插入到网络中,而不会影响其原始性能(如果卷积块被构造为零映射)。 也就是说,我们将卷积块的最后一个卷积层的权重初始化为零,以逐渐学习更准确的偏移量和掩模。 此外,我们选择对门掩模采用 1 + tanh 激活。 因此,最初,T(F, 0) 成为恒等映射,且 β = 1 + tanh(0) = 1。现在,SFC 可以表示为:
此时,我们的SFC模块相当于[3]、[8]和[9]中的简单特征融合策略。
实验
上下文特征校准:在我们的方法中,上下文的粒度会显着影响性能,很大程度上取决于 M 的值,而 M 的值由池化层输出大小决定。 为此,我们通过改变输出大小进行了一组对比实验。
如表二所示,保持池化层输入和输出的宽高比(KAR)一致可以明显提高性能(76.96% vs. 77.59%),而无需增加来自更细粒度上下文的过多计算。 此外,我们发现性能随着上下文数量(M)的增加而增加,而当输出大小超过(1,2,3,6)时性能趋于稳定。 请注意,过于详细的划分(例如,(1,3,6,8))将导致性能下降(77.27% vs. 77.59%),可能是因为输出包含的上下文信息太少,无法提供高质量的语义线索。 最终,考虑到效率和准确性之间的折衷,我们采用(1,2,3,6)作为默认设置。
表 III 显示了各种上下文建模方法的结果。 为了公平比较,我们在相同的设置下重现所有比较的模块,并将它们统一附加到降维层(DRL,图 3 中的绿色箭头)。 如表三所示,在类似或更低的计算成本下,我们的 CFC 优于其他同行。 例如,当 FLOP 较低时,CFC 达到 78.09% mIoU,比 AlignCM [22] (77.26%) 高 0.83 个百分点。 特别是,CFC 以更快的速度实现了最佳性能,超越了 PAM [16](77.56% vs. 78.09%),而我们的 FLOP 减少了 81.4%。
空间特征校准:我们将 SFC 模块附加到没有 DRL 的主干网的 Stage4 来研究其能力。 请注意,如果我们将 SFC 放在 DRL 之后(如 CFC),其计算量和性能将会下降。 表IV列出了不同设置的实验结果。 我们可以看到,进行分组校准可以明显提高性能。 例如,当使用 1 + tanh 激活时,设置 G = 2 的性能比 G = 1(即,无分组)高出 0.97%(77.15% vs. 78.12%),并且仅产生很小的额外计算负担(6.73G vs. 6.80) G)。 同时,1+tanh 也取得了比 sigmoid 更好的性能(77.37% vs. 78.12%),这可能是因为其优越的初始性能。 此外,不同的分组数也会带来不同的性能提升。 最后,考虑到性能和效率之间的权衡,我们选择 G = 2 和 1 + tanh 激活作为默认设置。
此外,我们还将SFC与其类似方法进行了比较。 表V给出了结果,其中“校准”和“融合”表示SFC仅执行特征校准或门控融合。 为了公平比较,我们还在相同的设置下重现了所有比较的模块。 据观察,直接校正预测输出的iGUM[42]很难获得高精度。 此外,FAM [17]和AlignFA [22]对齐不同级别的特征并直接混合多级别特征,忽略了不同级别特征和子特征之间的差异,导致性能较差(76.21%和75.25%mIoU) 。 同时,采用注意力特征融合的iAFF[43]取得了相对优越的性能(77.22%)。 相比之下,我们的SFC不仅校准了每组多级特征中的子特征,而且采用加权融合策略来弥合它们之间的表示差距,从而获得更领先的性能(78.12% mIoU和70.02 FPS)。
与最先进的比较:我们首先在 Cityscapes 测试数据集上展示各种方法的详细每类结果,以研究 CSFCN 的优越性。 如表七所示,我们的 CSFCN 在大多数类别(例如“道路”、“卡车”和“自行车”)上都达到了最佳 mIoU,这明显优于现有的实时方法(例如 ENet [27]、CGNet [44] ]和PCNet [11])。 尽管如此,与通常采用大扩张主干网(例如,DUC [23])的面向精度的方法(例如,DUC [23])相比,CSFCN 仍然难以处理空间细节相关的类别(例如,“交通灯”和“交通标志”)。 ,ResNet-101 [37])来提取高分辨率特征。 然而,我们的方法也可以实现可比的性能,并且在整体准确率方面优于它(78.7% vs. 77.6%)。 此外,采用MobileNetV3-L作为Backbone的CSFCN也以更少的计算量(21.7G FLOPs)实现了更好的精度(75.1%)。
我们进一步在 Cityscapes 测试集上将 CSFCN 与 SOTA 实时网络进行比较。 特别是,我们在网络名称后面附加 50、75 和 100,分别表示输入大小 512 × 1024、768 × 1536 和 1024 × 2048。 如表八所示,我们的 CSFCN 实现了最佳的速度与准确度权衡,并且以相对较大的优势优于其他竞争对手。 具体而言,CSFCN-100 以更快的速度实现了 78.7% mIoU 的最佳准确率,比 SFANet [12]、MGSeg [1]、HyperSeg [48] 和 BiSeNetV2-L† [33] 分别提高了 0.6%、0.9%、2.9 分别为 % 和 3.4%。 与此同时,我们的 CSFCN-50 在类似的推理速度下比 STDC1-Seg50† [36] 提高了 1.9% mIoU。 特别是,我们的 CSFCN-75 在相同主干网 (ResNet-18) 和相似的 FLOPs (55.3G vs. 56.2G) 下也大幅优于 BiSeNet2 [32] (2.5%)。 特别是,虽然深度卷积可以显着减少计算量(意味着更少的FLOP),但由于内存访问成本或其他原因,其实际推理速度往往低于标准卷积[50]。 因此,与 FBSNet [31] 或 SFANet [12] 等方法不同,我们仅使用标准卷积来获得更快的速度(70.0 FPS)。
相关文章:

[论文笔记] CSFCN
摘要 上下文建模或多级特征融合方法已被证明可以有效提高语义分割性能。 然而,它们并不是专门处理像素上下文不匹配和空间特征不对齐的问题,并且高计算复杂度阻碍了它们在实时场景中的广泛应用。 在这项工作中,我们提出了一种轻量级的上下文…...

mac电脑命令行获取电量
在 macOS 上,有几个命令行工具可以用来获取电量信息,最常用的是 pmset 命令。你可以通过以下方式来查看电池状态和电量信息: 查看电池状态: pmset -g batt这个命令会返回类似下面的输出: Now drawing from Battery Pow…...

2024桥梁科技两江论坛——第二届桥梁工程安全与韧性学术会议
文章目录 一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询 一、会议详情 二、重要信息 大会官网:https://ais.cn/u/vEbMBz提交检索:EI Compendex、IEEE Xplore、Scopus 三、大会介绍 2024年桥梁科技两江论坛——第二届桥梁工程…...

性能测试-jmeter的控制器(十六)
一、if控制器 需求:使用“用户自定义变量”定义name变量,值可以是“baidu”或“itcast”,使用变量值,控制是否访问对应网站。 1、步骤: 在测试计划中添加用户定义的变量name,取值可为baidu或itcast添加两个http请求:…...

直播开播极速流,如何有效接入?
如何有效接入开播极速流?为什么你的直播流速会逐渐下降?开播极速流实际上是我们流速的巅峰阶段,这一阶段的流量构成通常是70%的老粉丝和30%的新粉丝。你是否意识到这一点呢? 在直播开始时,欢迎新老粉丝的互动很重要。比…...

stm32 W25Q数据存储
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、cubemx配置二、keil中文件修改与配置三、几个重要函数的说明四、DMA方式传输(待写)总结 前言 W25Q128 容量为128位 128/8 16 也就…...

深度学习的笔记
1. 从huggingface上仅下载pytorch模型权重和配置文件到服务器 import os import shutil from huggingface_hub import snapshot_download# 直接指定模型和下载路径 model_name openai/clip-vit-base-patch32 download_path /home/xxx/.cache/huggingface/hub/models--anas-a…...

音视频入门基础:AAC专题(8)——FFmpeg源码中计算AAC裸流AVStream的time_base的实现
一、引言 本文讲解FFmpeg源码对AAC裸流行解复用(解封装)时,其AVStream的time_base是怎样被计算出来的。 二、FFmpeg源码中计算AAC裸流AVStream的time_base的实现 FFmpeg对AAC裸流进行解复用(解封装)时,其…...

React 组件的基本使用,useState 状态变量的使用
React 组件 组件是什么 ##### 概念:一个组件就是用户界面的一部分,它可以有自己的逻辑和外观,组件之间可以相互嵌套,也可以多次复用。 在 React,一个组件就是首字母大写的函数,内部存放了组件的逻辑和视…...

空洞骑士 Hollow Knight 攻略
文章目录 Part.I IntroductionPart.II 攻略Chap.I 地图Chap.II 护符Chap.III BOSSChap.IV 魔法 Reference Part.I Introduction 《空洞骑士》是独立团队 Team Cherry 开发的一款 2D 类银河恶魔城动作冒险游戏。本文记录笔者玩此游戏所积累的一些经验。 「在《空洞骑士》中打造…...

CSP-J 算法基础 广度优先搜索BFS
文章目录 前言广度优先搜索是什么广度优先搜索的实现BFS 的具体编程实现举例:广度优先搜索的具体步骤初始状态:步骤 1:加入起点节点 1步骤 2:访问队列中的节点 1,加入其邻居节点 2 和 4步骤 3:访问队列中的…...

What is new in C# 7,8,9,10
目录 Whats new in C# 7 C# 7 in Visual Studio 2017 Out Variables Pattern Matching Tuples (System.ValueTuple) Deconstruct解构 Local Functions Ref Returns and Locals Expression Bodied Members Throw Expressions Generated Async R…...

Sqlserver常用sql
1. 数据库和表操作 创建数据库 CREATE DATABASE DatabaseName; 删除数据库 DROP DATABASE DatabaseName; 创建表 CREATE TABLE TableName ( Column1 DataType1, Column2 DataType2, ... ); 删除表 DROP TABLE TableName; 2. 数据操作 插入数据 INSERT INTO TableNam…...

基于SpringBoot+Vue+MySQL的考研互助交流平台
系统展示 用户前台界面 管理员后台界面 系统背景 本文设计并实现了一个基于SpringBoot、Vue.js和MySQL的考研互助交流平台。该平台旨在为广大考研学子提供一个集资源共享、学习交流、经验分享、心理辅导等功能于一体的综合性在线社区。通过SpringBoot构建高效稳定的后端服务&am…...

chatgpt个人版ssrf漏洞
文章目录 免责申明搜索语法漏洞描述漏洞复现修复建议 免责申明 本文章仅供学习与交流,请勿用于非法用途,均由使用者本人负责,文章作者不为此承担任何责任 搜索语法 fofa title"ChatGPT个人专用版"漏洞描述 该系统是一个开源的…...

如何查看微信聊天记录?四种实用方法查询微信聊天记录,赶快码住!
微信作为我们日常生活中不可或缺的社交工具,记录了大量的聊天内容和重要信息。 当需要查看或恢复微信聊天记录时,很多人可能不知道如何快速、安全地进行操作。 今天,我们就来介绍四种实用的微信聊天记录查询方法,帮助你有效查看微…...

钢材表面缺陷数据集以coco格式做好了数据集的划分,1200张训练集,600张验证集,对应的json文件也在里面
钢材表面缺陷数据集 以coco格式做好了数据集的划分,1200张训练集,600张验证集,对应的json文件也在里面。 钢材表面缺陷检测数据集营销介绍 项目背景: 钢材作为工业生产的重要原材料之一,其表面质量直接影响到成品的性…...

【Lua坑】Lua协程coroutine无法正常完整执行问题
问题:发现Lua协程执行到一半,突然被掐断了一样等到了设定的时间没有正常执行协程后续代码!非必现bug,若发生大概率在高频率使用协程时易触发。 LuaFramework或xLua uLua都自带有协程coroutine,而且基本都使用对象池缓…...

istio中serviceentry结合egressgateway的使用
假设有一个外部服务,外部服务ip为:10.10.102.90,其中32033为v1版本,32034为v2版本。 现在需要把这个服务引入到istio中,并且需要配置所有访问该服务的流量都通过egressgateway转发出去。 serviceentry apiVersion: n…...

使用 Python 实现 Windows 应用图标的便捷生成:一站式 PNG 转 ICO 工具20240918
使用 Python 实现 Windows 应用图标的便捷生成:一站式 PNG 转 ICO 工具 在开发 Windows 桌面应用程序时,图标文件(ICO)的生成是不可忽视的关键步骤。无论是任务栏图标、快捷方式,还是应用程序的主图标,都需…...

编程环境常用命令合集
cmd: python 进入python运行环境 exit()/quit()/ctrlZ 退出环境 rmdir /s venv 删除环境 pip命令: pip list 查看所有库 pip install <库> 安装库 -i <数据源>可指定安装数据源 pip install <库>x.x.x 安装指定版本的库 pip install --upgrade &…...

Qt Creator 集成开发环境 常见问题
1.QtCreator中三种不同编译版本 debug、release、profile 的区别 在 Qt Creator 中,Debug、Release 和 Profile 是三种不同的构建配置,它们主要用于在开发过程中生成不同类型的可执行文件。它们的区别如下: 1.1 Debug(调试版本&…...

使用Faiss进行K-Means聚类
📝 本文需要的前置知识:Faiss的基本使用 目录 1. 源码剖析1.1 参数解释 2. 聚类过程详解2.1 初始化聚类中心2.2 分配步骤(Assignment)2.3 更新步骤(Update)2.4 收敛与终止条件 3. GPU 加速3.1 索引结构与 G…...

通过hosts.allow和hosts.deny限制用户登录
1、Hosts.allow和host.deny说明 两个文件是控制远程访问设置的,通过设置这个文件可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。如果请求访问的主机名或IP不包含在/etc/hosts.allow中,那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机…...

PWN College 关于sql盲注
在这个场景中,我们需要利用SQL注入漏洞来泄露flag,但是应用程序并不会直接返回查询结果。相反,我们需要根据应用程序的行为差异(登录成功与否)来推断查询结果。这就是所谓的"布尔盲注"(Boolean-b…...

【Linux篇】Http协议(1)(笔记)
目录 一、http基本认识 1. Web客户端和服务器 2. 资源 3. URI 4. URL 5. 事务 6. 方法 7. 状态码 二、HTTP报文 1. 报文的流动 (1)流入源端服务器 (2)向下游流动 2. 报文语法 三、TCP连接 1. TCP传输方式 2. TCP连…...

员工疯狂打CALL!解锁企业微信新玩法,2024年必学秘籍来啦!
现在工作离不开电脑手机,公司交流也得用新招。腾讯出了个企业微信,就是给公司用的聊天工具。它功能强大,操作简便,很多公司用它来让工作更高效,团队合作更紧密。接下来,我会简单说说怎么上手企业微信&#…...

Spring boot从0到1 - day01
前言 Spring 框架作为 Java 领域中最受欢迎的开发框架之一,提供了强大的支持来帮助开发者构建高性能、可维护的 Web 应用。 学习目标 Spring 基础 Spring框架是什么?Spring IoC与Aop怎么理解? Spring Boot 的快速构建 Spring 基础 学习…...

Flutter 项目结构的区别
如果需要调用原生代码,请创建一个plugin类型的项目开发。如果需要调用C语言,请参考文档:Flutter项目中调用C语言plugin 其实是 package 的一种,全称是 plugin package,我们简称为 plugin,中文叫插件。 1. A…...

EfficientFormerV2:重新思考视觉变换器以实现与MobileNet相当的尺寸和速度。
摘要 https://arxiv.org/pdf/2212.08059 随着视觉变换器(ViTs)在计算机视觉任务中的成功,近期的研究尝试优化ViTs的性能和复杂度,以实现在移动设备上的高效部署。提出了多种方法来加速注意力机制,改进低效设计…...