全局上下文网络GCNet:创新架构提升视觉识别性能
摘要:本文介绍了全局上下文网络(GCNet),通过深入分析非局部网络(NLNet),发现其在重要视觉识别任务中学习的全局上下文与查询位置无关。基于此,提出简化的非局部模块、全局上下文建模框架和GC模块,GCNet在多个视觉任务中性能优异,计算量更低。
关键词:全局上下文网络;非局部网络;自注意力机制;视觉识别;长距离依赖建模
一、引言
在计算机视觉领域,捕捉图像中像素间的长距离依赖关系对理解视觉场景至关重要,这一技术广泛应用于图像分类、目标检测与分割、视频动作识别等任务。传统卷积神经网络主要通过堆叠卷积层来建模长距离依赖,但存在计算效率低和优化困难的问题。非局部网络(NLNet)利用自注意力机制为解决该问题提供了新途径,然而经研究发现,NLNet所建模的全局上下文在不同查询位置近乎相同。
基于此发现,本文提出全局上下文网络(GCNet)。GCNet通过简化非局部模块,构建全局上下文建模框架,并引入全局上下文(GC)模块,有效提升了视觉识别性能,且计算量显著降低,在多个视觉任务中展现出卓越的效果。
二、相关工作
2.1 深度架构
深度架构的发展是推动计算机视觉进步的关键力量。一方面,诸多研究致力于设计基础组件的功能公式,提升网络的图像特征提取能力。例如AlexNet证明了增加卷积神经网络的深度和宽度可提高图像分类准确率;VGG进一步增加深度和宽度,并采用小内核卷积层;GoogLeNet引入1×1卷积减少参数;ResNet提出跳跃连接解决梯度消失问题;DenseNet通过连接操作增强层间信息流动;ResNeXt和Xception利用分组卷积优化网络参数;可变形卷积网络增强几何建模能力;局部关系网络基于像素对关系确定聚合权重。另一方面,针对特定任务的深度架构不断涌现,如MobileNet用于移动视觉应用,ShuffleNet采用通道洗牌优化分组卷积,FCN用于语义分割,YOLO系列实现快速目标检测,I3D和P3D分别通过3D卷积和分离卷积处理视频动作识别任务。
2.2 长距离依赖建模
长距离依赖建模方法主要分为基于成对关系和基于上下文融合两类。基于成对关系的方法多基于自注意力机制,NLNet是其中的开创性工作,其通过计算像素间的成对关系来建模长距离依赖,在多个视觉任务中取得了良好效果。此外,还有OCNet、DANet和CCNet等扩展方法。然而,本文通过实证分析表明,NLNet在许多重要视觉识别任务中实际上是在学习查询无关的全局上下文,而非成对关系。
基于上下文融合的方法则通过聚合全局信息来增强每个位置的特征,如SENet、GENet、PSANet和CBAM等。但这些方法在全局上下文建模方面可能存在局限性。
2.3 自注意力建模
自注意力机制在自然语言处理和视觉识别等领域广泛应用。在自然语言处理中,Transformer通过自注意力机制建模单词间的长距离依赖,推动了机器翻译的发展;在视觉识别中,注意力机制不仅用于像素关系建模,还用于对象 - 对象/对象 - 像素关系建模,在目标检测中发挥了重要作用。本文围绕自注意力机制在像素 - 像素关系建模中的应用展开研究,提出的GCNet及相关分析为该领域提供了新的思路。
三、非局部网络分析
3.1 回顾非局部模块
非局部模块旨在通过聚合其他位置的信息来增强查询位置的特征,其公式为:
z i = x i + W z ∑ j = 1 N p f ( x i , x j ) C ( x ) ( W v ⋅ x j ) z_{i}=x_{i}+W_{z} \sum_{j = 1}^{N_{p}} \frac{f(x_{i}, x_{j})}{\mathcal{C}(x)}(W_{v} \cdot x_{j}) zi=xi+Wz∑j=1NpC(x)f(xi,xj)(Wv⋅xj)
其中, i i i为查询位置索引, j j j枚举所有位置, f ( x i , x j ) f(x_{i}, x_{j}) f(xi,xj)表示位置 i i i和 j j j之间的关系, C ( x ) \mathcal{C}(x) C(x)为归一化因子, W z W_{z} Wz和 W v W_{v} Wv为线性变换矩阵。
为简化表示,记 ω i j = f ( x i , x j ) C ( x ) \omega_{i j}=\frac{f(x_{i}, x_{j})}{\mathcal{C}(x)} ωij=C(x)f(xi,xj)为归一化的成对关系。非局部模块有高斯、嵌入高斯、点积和拼接四种实例化方式,其中嵌入高斯和高斯应用较为广泛,其架构如图3所示。
非局部模块可视为查询特定的全局上下文建模模块,通过加权求和计算全局上下文向量,进而增强查询位置的特征。然而,其时间和空间复杂度较高,通常仅应用于网络架构的少数位置。
非局部模块的两种实例化方式:嵌入高斯和高斯。特征图以其维度展示,如CxHxW。⊗表示矩阵乘法,⊕表示逐元素广播加法。对于两个不同维度的矩阵,广播操作会首先在各个维度上扩展特征,使两个矩阵维度匹配。
3.2 分析
3.2.1 可视化
为直观理解非局部模块的行为,我们可视化了不同查询位置的注意力图。以嵌入高斯实例化方式为例,在COCO目标检测任务中,我们在Mask R-CNN(FPN和ResNet50骨干网络)上进行实验,仅在 r e s 4 res4 res4的最后一个残差模块前添加一个非局部模块。
从COCO数据集中随机选取六张图像,为每张图像可视化三个不同查询位置(红色点)的注意力图(热图)。结果令人惊讶,不同查询位置的注意力图几乎相同,这表明在目标检测任务中,非局部模块可能并未学习像素 - 像素关系,而是在学习全局上下文,计算不同的注意力图可能是多余的。
3.2.2 统计分析
为进一步验证可视化观察结果,我们进行了统计分析。通过计算不同位置的输入特征、注意力图和输出特征之间的余弦距离,来评估它们的差异。平均距离度量定义为:
a v g _ d i s t = 1 N p 2 ∑ i = 1 N p ∑ j = 1 N ˉ p d i s t ( v i , v j ) avg\_dist = \frac{1}{N_{p}^{2}} \sum_{i = 1}^{N_{p}} \sum_{j = 1}^{\bar{N}_{p}} dist(v_{i}, v_{j}) avg_dist=Np21∑i=1Np∑j=1Nˉpdist(vi,vj)
其中, d i s t ( v i , v j ) = ( 1 − c o s ( v i , v j ) ) / 2 dist(v_{i}, v_{j})=(1 - cos (v_{i}, v_{j})) / 2 dist(vi,vj)=(1−cos(vi,vj))/2为余弦距离。
在COCO目标检测、Kinetics动作识别和ImageNet图像分类三个标准任务中,对非局部模块的四种实例化方式进行分析。结果显示,输入特征在不同位置具有区分度,但输出的全局上下文特征在不同查询位置几乎相同,注意力图的余弦距离也很小,这再次验证了可视化的结论。
此外,我们还分析了非局部模块在不同网络阶段的表现。随着网络层次的升高,输出特征对查询的依赖性增强。同时,对嵌入高斯和高斯实例化方式进行细粒度分析,进一步揭示了非局部模块在不同任务中的行为差异。
值得注意的是,虽然非局部网络在多数任务中未学习成对关系,但在Cityscapes语义分割任务中,它成功学习了成对关系。然而,简化版的NLNet(仅建模全局上下文)在该任务上也表现出与NLNet相当的性能,这表明在语义分割任务中,准确率的提升可能主要归因于全局上下文建模。
四、方法
主要模块的架构。特征图以特征维度表示,例如C×H×W表示一个通道数为C、高度为H、宽度为W的特征图。⊗表示矩阵乘法,⊕表示广播逐元素加法,⊙表示广播逐元素乘法。
4.1 简化非局部模块
基于嵌入高斯实例化方式在标准任务中的代表性性能,我们以其为基础进行简化。由于不同查询位置的注意力图几乎相同,我们计算一个全局(查询无关)的注意力图,并在所有查询位置共享。同时,省略 W z W_{z} Wz,简化后的非局部模块公式为:
z i = x i + ∑ j = 1 N p exp ( W k x j ) ∑ m = 1 N p exp ( W k x m ) ( W v ⋅ x j ) z_{i}=x_{i}+\sum_{j = 1}^{N_{p}} \frac{\exp(W_{k}x_{j})}{\sum_{m = 1}^{N_{p}} \exp(W_{k}x_{m})}(W_{v} \cdot x_{j}) zi=xi+∑j=1Np∑m=1Npexp(Wkxm)exp(Wkxj)(Wv⋅xj)
进一步应用分配律,将 W v W_{v} Wv移到注意力池化之外,得到:
z i = x i + W v ∑ j = 1 N p exp ( W k x j ) ∑ m = 1 N p exp ( W k x m ) x j z_{i}=x_{i}+W_{v} \sum_{j = 1}^{N_{p}} \frac{\exp(W_{k}x_{j})}{\sum_{m = 1}^{N_{p}} \exp(W_{k}x_{m})}x_{j} zi=xi+Wv∑j=1Np∑m=1Npexp(Wkxm)exp(Wkxj)xj
此简化模块的计算量显著降低,实验表明,它在多个任务上与原始非局部模块性能相当,但计算成本更低。
4.2 全局上下文建模框架
简化的非局部模块可抽象为三个部分:全局注意力池化、特征变换和特征聚合。我们将其视为全局上下文建模框架,定义为:
z i = F ( x i , δ ( ∑ j = 1 N p α j x j ) ) z_{i}=F\left(x_{i}, \delta\left(\sum_{j = 1}^{N_{p}} \alpha_{j}x_{j}\right)\right) zi=F(xi,δ(∑j=1Npαjxj))
其中, ∑ j α j x j \sum_{j} \alpha_{j}x_{j} ∑jαjxj为上下文建模模块,通过加权平均聚合所有位置的特征得到全局上下文特征; δ ( ⋅ ) \delta(\cdot) δ(⋅)表示特征变换,用于捕捉通道间的依赖关系; F ( ⋅ , ⋅ ) F(\cdot, \cdot) F(⋅,⋅)表示融合函数,将全局上下文特征聚合到每个位置的特征中。
有趣的是,挤压激励(SE)模块也是该框架的一个实例。SE模块通过全局平均池化、瓶颈变换和重新缩放函数实现对通道重要性的校准,与我们的框架存在相似之处。
4.3 全局上下文模块
为进一步优化,我们提出全局上下文(GC)模块。在简化非局部模块的基础上,将变换模块的1x1卷积替换为瓶颈变换模块,减少参数数量。同时,在瓶颈变换内部(ReLU之前)添加层归一化,以简化优化并提升性能。
GC模块的公式为:
z i = x i + W v 2 R e L U ( L N ( W v 1 ∑ j = 1 N p e W k x j ∑ m = 1 N p e W k x m x j ) ) z_{i}=x_{i}+W_{v2}ReLU\left(LN\left(W_{v1} \sum_{j = 1}^{N_{p}} \frac{e^{W_{k}x_{j}}}{\sum_{m = 1}^{N_{p}} e^{W_{k}x_{m}}}x_{j}\right)\right) zi=xi+Wv2ReLU(LN(Wv1∑j=1Np∑m=1NpeWkxmeWkxjxj))
GC模块计算量轻,可应用于多个层,有效捕捉长距离依赖关系。以ResNet-50为例,添加GC模块后,计算量仅增加0.26%,参数增加约9.86%,但性能提升显著。
与非局部模块相比,GC模块建模的全局上下文相同,但计算成本更低;与SE模块相比,GC模块在捕捉长距离依赖方面更具优势,且通过层归一化优化了瓶颈变换的性能。
五、实验
5.1 COCO上的目标检测/实例分割
我们在COCO 2017数据集上进行目标检测和实例分割实验,遵循标准评估设置,使用PyTorch和mmdetection框架进行实验。
5.1.1 消融研究
在COCO 2017验证集上进行消融研究,结果表明:SNL和GC模块在参数和计算量减少的情况下,性能与NL模块相当,显示出原始非局部设计的冗余;在所有残差模块中添加GC模块可显著提升性能;不同位置插入GC模块效果相似,我们选择after1x1作为默认设置;较高层插入GC模块效果更好,且插入所有层(c3+c4+c5)性能提升更明显;瓶颈设计中,层归一化可有效优化性能,且随着瓶颈比率r减小,性能提升;在融合阶段,加法比缩放更有效,注意力池化与加法结合(att+add)效果最佳。
此外,不同归一化方式对GCNet性能有影响,将骨干网络中的fixBN替换为syncBN可提升性能,且在骨干网络和头部都应用syncBN时,GCNet与基线的差距仍然存在。
5.1.2 更强骨干网络实验
在更强的骨干网络(如ResNet-101、ResNeXt-101)上进行实验,添加可变形卷积和采用级联策略。结果显示,即使采用更强的骨干网络,GCNet相比基线仍有显著性能提升,在测试开发集上也验证了方法的鲁棒性。
5.2 ImageNet上的图像分类
在ImageNet数据集上进行图像分类实验,遵循标准设置进行训练和评估。
实验结果表明,GC模块在参数和计算量更低的情况下,性能略优于NL和SNL模块。在所有残差模块中插入GC模块可显著提升Top-1准确率,且计算开销增加极少。与其他方法相比,GCNet在Top-1准确率上优于SENet和CBAM。
5.3 Kinetics上的动作识别
在Kinetics数据集上进行动作识别实验,采用slow-only基线。
消融研究显示,简化的NL模块和GC模块替换NL模块时性能相当,添加更多GC模块可进一步提升性能且计算量更低。与其他方法相比,GCNet在Top-1准确率上优于GloRE和NLNet。
5.4 Cityscapes上的语义分割
在Cityscapes数据集上进行语义分割实验,遵循CCNet的训练设置和超参数。
实验结果表明,SNL头和NL头性能相当,说明自注意力机制的准确率提升主要源于全局上下文建模。所有头相比基线都显著提升性能,表明长距离依赖在语义分割任务中的重要性。在头部集成GC模块后,骨干网络中的GC模块效果不明显。注意力池化与加法结合(GCNet)在参数和计算量相同的情况下,优于普通平均池化与缩放结合(SENet带层归一化)。与其他方法相比,GCNet与DANet、ANN、CCNet和NLNet性能相当。
5.5 可视化
通过可视化GCNet和NLNet的注意力图,发现两者学习到的注意力图相似,且都聚焦于小或薄的物体,有助于检测这些物体。可视化GC模块的输出激活,发现浅层通道激活与类别无关,深层更依赖类别。通过类别选择性指数分析,发现GCNet在深层的类别选择性更低,这表明其全局上下文计算可能避免了局部模糊带来的问题。
六、结论
本文通过实证分析揭示了非局部网络在重要视觉识别任务中学习查询无关全局上下文的现象,基于此提出了GCNet。GCNet通过简化非局部模块、构建全局上下文建模框架和引入GC模块,在多个视觉任务中取得了优异的性能,且计算量显著降低。未来,全局上下文模块有望在生成模型、图学习模型和自监督模型等领域得到进一步扩展和应用。
相关文章:
全局上下文网络GCNet:创新架构提升视觉识别性能
摘要:本文介绍了全局上下文网络(GCNet),通过深入分析非局部网络(NLNet),发现其在重要视觉识别任务中学习的全局上下文与查询位置无关。基于此,提出简化的非局部模块、全局上下文建模…...
MySQL 调优
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
ASP3605抗辐照加固同步降压调节器——商业航天电源芯片解决方案新选择
ASP3605企业宇航级型号ASP3605S2U通过SEU≥75 MeVcm/mg与SEL≥75 MeVcm/mg抗辐射测试。其输入电压4V至15V,输出电流5A,支持多相级联与冗余设计,适用于卫星、航天器电源系统。 面向航天场景的核心功能设计 1. 抗辐射与可靠性保障 单粒子效应…...
C#的List和DIctionary实现原理(手搓泛型类以及增删查改等功能)
这里写自定义目录标题 ListDIctionary List MyList类:这是一个泛型类,能够存储任意类型的元素。 _items数组:用于实际存储元素。 _size变量:记录当前列表中的元素数量。 构造函数:初始化数组容量为 4。 Count属性&…...
设计模式-对象创建
对象创建 前言1. Factory Method1.1 模式介绍1.2 模式代码1.2.1 问题代码1.2.2 重构代码 1.3 模式类图1.4 要点总结 2. Abstract Factory2.1 模式介绍2.2 模式代码2.2.1 问题代码2.2.2 重构代码 2.3 模式类图2.4 要点总结 3. Prototype3.1 模式介绍3.2 模式代码3.3 模式类图3.4…...
Linux进程虚拟内存空间的管理
5、 进程虚拟内存空间的管理 主要逻辑 重点函数 task_struct函数(进程在内核中的描述符函数) 进程在内核中的描述符task_struct结构: struct task_struct{ //进程的描述符//进程idpid_t pid;//用于标识线程所属的进程pid_t tgi…...
git tag常用操作
git tag是干嘛用的,相当于一个轻量级的分支。在一个分支上,创建一个tag,就是标记某一次的提交。然后方便checkout到 这个标签上。用tag的意思就是不用专门再创建一个新分支来修改后续的改动。分支不变,继续在上面改动,…...
VIVO手机如何实现证件照换底色?证件照换底色技巧分享
在日常生活中,我们常常需要使用不同底色的证件照,无论是办理证件、提交资料还是其他用途,一张符合要求的证件照都显得尤为重要。 而VIVO手机凭借其强大的拍照功能和便捷的图片编辑工具,为我们提供了一种简单高效的证件照换底色解…...
函数闭包的学习
作用:可以保存外部函数的变量 形成条件: 1 函数嵌套 2 内部函数用了外部函数的变量或者参数 3 外部函数返回了内部函数(是返函数名,不带括号) 这个使用了外部函数变量的内部函数称为闭包。 口诀:函数嵌…...
解码软件需求的三个维度:从满足基础到创造惊喜
在软件开发的世界里,用户需求就像一张复杂的地图,指引着产品前进的方向。但并非所有需求都能带来同样的价值——有些是产品生存的“氧气”,有些是吸引用户的“磁石”,还有一些则是让人眼前一亮的“魔法”。如何区分它们࿱…...
网页制作代码html制作一个网页模板
制作一个简单而实用的网页模板:HTML基础入门 在数字时代,网页已成为信息展示和交流的重要平台。HTML(HyperText Markup Language)作为网页制作的基础语言,为开发者提供了构建网页的基本框架。本文将带你了解如何使用H…...
股票量化交易开发 Yfinance
以下是一段基于Python的股票量化分析代码,包含数据获取、技术指标计算、策略回测和可视化功能: python import yfinance as yfimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfrom backtesting import Bac…...
从 Snowflake 到 Databend Cloud:全球游戏平台借助 Databend 实现实时数据处理
导读:某全球游戏平台为全球数百万玩家提供实时的技能型游戏体验与无缝的实时互动。对该游戏平台而言,保持数据的实时更新和实时分析,对提升玩家互动和留存率至关重要。他们在使用 Snowflake 进行实时数据摄取和分析时遇到了重大挑战ÿ…...
工作记录 2017-02-08
工作记录 2017-02-08 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、CPT的录入页面做修改 1.1、Total 改为 Price 1.2、当删除行时,下面的行自动上移。 2、Pending Payments、Payment Posted、All A/R Accounts页面加了CoIns…...
【RabbitMQ】RabbitMQ的基本架构是什么?包括哪些核心组件?
RabbitMQ基于AMQP协议实现,由多个核心组件组成,确保消息的可靠传递。 Rabbit的架构图: 1.RabbitMQ的基本架构: 1.核心组件: 1.Producer(生产者): 发送消息到RabbitMQ。 2.Exchange(交换机):接…...
Quartz知识点总结
简单说明 简单的定时任务使用Timer或者ScheduledExecutorService quartz支持复杂的定时执行功能。支持ram存储(内存存储)和持久化存储。quartz有分布式和集群能力 简单使用 获取任务调度器Schedule。任务调度器可以管理任务。创建任务实例。使用JobB…...
P2786 英语1(eng1)- 英语作文
P2786 英语1(eng1)- 英语作文 题目背景 蒟蒻 HansBug 在英语考场上,挠了无数次的头,可脑子里还是一片空白。 题目描述 眼下出现在 HansBug 蒟蒻面前的是一篇英语作文,然而智商捉急的 HansBug 已经草草写完了&#…...
Clion远程开发配置
代码开发环境:windows下,基于Clion 2024.3开发,标准为C20 代码运行环境:远程服务器,ubuntu,cmake版本3.12,gcc11.4,g11.4,gdb12.1 实现功能:在本地windows开…...
Javascript基础
目录 1. 变量声明2. 基本数据类型3.复杂数据类型4.字符串方法5.对象方法6.时间方法7.条件(if)8.循环(for/while)9.遍历(for in/of)10.多选(Switch)END 1. 变量声明 const࿱…...
蓝桥杯2023年第十四届省赛真题-阶乘的和
蓝桥杯2023年第十四届省赛真题-阶乘的和 时间限制: 2s 内存限制: 320MB 提交: 3519 解决: 697 题目描述 给定 n 个数 Ai,问能满足 m! 为∑ni1(Ai!) 的因数的最大的 m 是多少。其中 m! 表示 m 的阶乘,即 1 2 3 m。 输入格式 输入的第一行包含一个整…...
供应链优化售前方案建议书V23(58页PPT)(文末有下载方式)
随着家电行业的快速发展,供应链管理已成为企业竞争的关键要素。杭州松下电器在面对日益复杂的市场环境和激烈的市场竞争时,急需对其供应链进行优化。本文将对杭州松下电器的供应链优化方案进行详细解读,探讨其优化策略及其潜在价值。 供应链…...
校园论坛系统Selenium自动化测试
本文为自动化测试 本项目自动化测试代码链接(仅供参考): 自动化测试代码 功能测试文章链接: 校园论坛系统自动化测试报告-CSDN博客 🌈自动化测试 思维导图 根据思维导图, 我们选取几个主要的功能进行自动化测试 编写代码 思路: 根据脑图进行测试用例的编写&am…...
Linux 一步部署DHCP服务
#!/bin/bash #脚本作者和日期 #author: PEI #date: 20250319 #检查root权限 if [ "$USER" ! "root" ]; then echo "错误:非root用户,权限不足!" exit 0 fi #防火墙与高级权限 systemctl stop firewa…...
Cool Request:可以统计任意方法耗时
什么是Cool Request Cool Request是一个IDEA中的接口调试插件,除了可以发起基本的HTTP请求之外,还提供了强大的反射调用能力,可以绕过拦截器,这点广受网友的好评,当然伴随着还有Spring中对Scheduled注解的调用&#x…...
基于Spring Boot的图书管理系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
Python实战(2)-数据库支持
使用简单的纯文本文件可实现的功能有限。诚然,使用它们可做很多事情,但有时可能还需要额外的功能。你可能希望能够自动完成序列化,此时可求助于shelve和pickle(类似于shelve)。不过你可能需要比这更强大的功能。例如…...
【工具】isolateR桑格测序数据的自动化处理、分类分析以及微生物菌株库的生成R包
文章目录 介绍代码案例Step 1: isoQC - Automated quality trimming of sequencesStep 2: isoTAX - Assign taxonomyStep 3: isoLIB - Generate strain library 参考 介绍 对分类标记基因(如16S/18S/ITS/rpoB/cpn60)进行桑格测序是鉴定包括细菌、古菌和…...
比特币牛市还在不在
在加密货币的风云世界里,比特币的一举一动始终牵动着投资者们的神经。近期比特币的涨幅动作,再次引发了市场对于牛市是否仍在延续的激烈讨论。 在深入探索比特币市场的过程中,获取全面且及时的资讯至关重要。您可以通过访问Techub News&#…...
鸿蒙下载文件保存到手机本地公共文件夹下、将本地的沙箱目录文件,保存到公共目录,鸿蒙picker save保存文件为空(0字节)的问题
1、首先将下载好的文件,保存到本地目录,这个目录是用户看不到的; 2、然后通过picker的save保存文件,这个picker,它只是获取公共目录uri用的 3、当picker有回调时,将公共目录的uri获取之后,把下…...
红日靶场(二)——个人笔记
靶场搭建 新增VMnet2网卡 **web:**需要配置两张网卡,分别是外网出访NAT模式和内网域环境仅主机模式下的VMnet2网卡。 **PC:**跟web一样,也是需要配置两张网卡,分别是外网出访NAT模式和内网域环境仅主机模式下的VMn…...
口袋书签功能上新,免费使用
丰富主页面的菜单,操作更加便捷。 快来构建你的门户站点吧。 戳: 口袋书签...
Model Context Protocol - Prompts
1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式,使服务器能够向客户端暴露提示模板(prompts)。Prompts 是服务器提供的结构化消息和指令,用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容ÿ…...
零知识证明:区块链隐私保护的变革力量
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
基于STC89C52的CD4511译码显示数字设计
摘要 本文深入探讨基于STC89C52单片机的数字显示系统设计,剖析CD4511译码驱动芯片工作原理,结合Proteus仿真验证功能。通过硬件电路、软件编程及原理分析,完整呈现单片机控制数码管显示的实现过程,为相关开发提供理论与实践参考。 一、引言 在单片机应用中,数码管显示是…...
MPC算法路径跟踪_Matlab实现
在机器人控制领域,模型预测控制(MPC)因其能够处理动态约束和多目标优化的特性,成为路径跟踪的热门方案。近期,我在 GitHub 上发现了 Mr.Winter 的MPC路径规划项目,其代码实现简洁且功能完整。本文将结合理论…...
QT Quick(C++)跨平台应用程序项目实战教程 2 — 环境搭建和项目创建
目录 引言 1. 安装Qt开发环境 1.1 下载Qt安装包 1.2 安装Qt 1.3 安装Visual Studio 2022 1.4 在Visual Studio 2022中安装Qt插件 1.5 在Visual Studio 2022中安装大模型编程助手 2. 创建Qt Quick项目 2.1 创建新项目 2.2 项目结构 2.3 运行项目 3. 理解项目代码 3…...
洛科威多功能岩棉板为环保助力,推动企业绿色可持续发展
在当今全球环保意识日益增强的背景下,企业工程项目在追求高效益的同时,也更加注重绿色可持续发展。作为建筑材料领域的佼佼者,洛科威公司推出的多功能岩棉板凭借其卓越的绿色环保特性,正逐渐成为企业工程项目领域的首选材料。 洛科…...
7.3《重力》
教会什么:重力及其三要素、重力加速度g、 培养什么:从力的三要素出发去研究一个力,用所学探究未知 课标: (二)运动和相互作用 2.2 机械运动和力 2.2.3 通过常见事例或实验,了解重力,认识力的作用效果。 (四)实验探究 4.1.6 用弹测力计测量力。 例6 测量一本物理教科书…...
虚幻基础:ue自定义类
文章目录 Gameplay Tag:ue标签类创建:其他-数据表格-gameplaytag安装:项目设置:gamePlayTag:gamePlay标签列表使用:变量类型:gamePlayTag primary data asset:ue数据类:通…...
88页手册上线 | 企业级本地私有化DeepSeek实战指南
DeepSeek为普通企业在低成本、高性能、安全可控的前提下私有化部署AI大模型提供了可行路径。 云轴科技ZStack全新推出《企业级本地私有化DeepSeek实战手册》(点击免费下载),直击企业痛点,从7B轻量化模型到671B超大规模部署&#…...
Godot读取json配置文件
概述 在Godot 4.3中读取JSON配置文件,可以通过以下步骤实现: 步骤说明 读取文件内容:使用FileAccess类打开并读取JSON文件。 解析JSON数据:使用JSON类解析读取到的文本内容。 错误处理:处理文件不存在或JSON格式错…...
时序分析笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、周期约束 二、建立时间和保持时间 三、时序路径 四、时序模型 前言 约束文件笔记,傅里叶的猫的视频。 一、周期约束 时序约束就是告诉软件输…...
【笔记】深度学习模型训练的 GPU 内存优化之旅:重计算篇
开设此专题,目的一是梳理文献,目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化,所以最初思考的专题名称是“显存突围:深度学习模型训练的 GPU 内存优化之旅”,英文缩写是 “MLSys_GPU_Memory_Opt”。…...
Deepseek使用技巧大全
还有好多人不会用,一个链接让你们全部学完 https://m0739kfdebc.feishu.cn/docx/LIBddUcupoIBwVxp0yGcsT77nFd?fromfrom_copylink...
redis搭建一主一从+keepalived(虚拟IP)实现高可用
redis搭建一主一从keepalived(虚拟IP)实现高可用 前提 有两台机器:如 10.50.3.141 10.50.3.142,虚拟ip如:10.50.3.170 安装redis(两台机器执行): # 启用Remi仓库(CentOS 7) sudo yum install…...
6、说一下索引失效的场景?【中高频】
索引失效意味着 查询操作 不能利用索引进行数据检索,而是使用 全表扫描(也就是 数据库需要从磁盘上读取表的所有数据行),从而导致性能下降,下面一些场景会发生索引失效 对索引使用左或者左右模糊匹配(where…...
前端调试实战指南:从入门到高阶的完整解决方案
引言:调试的本质与价值 调试是程序员将理想代码映射到现实运行环境的关键过程。据统计,开发者平均将30%的工作时间用于调试。本指南将系统梳理现代前端调试技术体系,帮助开发者构建高效的调试工作流。 一、基础调试工具箱 1.1 浏览器开发者工具核心功能 元素调试(Elemen…...
电商多包裹与子母单发货区别
在电商发货中,多包裹发货和子母单是两种常见的发货方式,具体含义如下: 1. 多包裹发货 定义: 指一个订单中的商品因库存、尺寸或重量等原因,无法装入一个包裹,需分成多个包裹发出。 原因: 商品…...
程序化广告行业(28/89):基于用户旅程的广告策略解析
程序化广告行业(28/89):基于用户旅程的广告策略解析 大家好!一直以来,我都希望能和大家在技术学习的道路上携手前行、共同进步。在之前的文章里,我们探讨了程序化广告行业的诸多关键环节,这次让…...
Hugging Face模型国内镜像HF Mirror下载
直接下载 Hugging Face 开启梯子,一看好几个g... 我们寻找国内镜像。 访问HF-Mirror 继续上面搜索。 继续点击跟踪路径。 拼出路径。 https://hf-mirror.com/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors 如果网…...