当前位置: 首页 > news >正文

ExSwin-Unet 论文研读

ExSwin-Unet

  • 摘要
  • 1 引言
  • 2 方法
    • 2.1 基于窗口的注意力块
    • 2.2 外部注意力块
    • 2.3 不平衡的 Unet 架构
    • 2.4 自适应加权调整
    • 2.5 双重损失函数
  • 3 实验结果
    • 3.1 数据集
    • 3.2 实现细节
    • 3.3 与 SOTA 方法的比较
    • 3.4 消融研究
  • 4 讨论和限制
  • 5 结论

在这里插入图片描述

数据集来源: https://feta.grand-challenge.org/

摘要

准确的胎儿大脑MRI图像分割对于胎儿疾病的诊断和治疗至关重要。然而手动分割费力、耗时且容易出错,但自动分割是一项具有挑战性的任务,因为:

  1. 患者大脑结构的形状和大小存在差异,
  2. 先天性疾病引起的细微变化,
  3. 脑的复杂解剖结构。

我们提出了一种配备了新的 ExSwin 转换器块的新型不平衡加权 Unet,通过有效地捕获不同样本之间的远程依赖性和相关性来全面解决上述问题。我们设计了一个更深层次的编码器来促进特征提取和保留更多语义细节。此外,采用自适应权重调整方法动态调整不同类的损失权重,以优化学习方向并从欠学习类中提取更多特征。在 FeTA 数据集上进行的大量实验证明了我们模型的有效性,取得了比最先进方法更好的结果。
目的:医学图象实例分割
在这里插入图片描述

1 引言

我们提出了一种新型的不平衡加权 Unet,配备了用于胎儿大脑 MRI 图像分割的新 ExSwin 变换器块,以有效捕获不同样本之间的远程依赖性和相关性,从而提高分割性能。 ExSwin 转换器块由窗口注意块和基于外部注意方案的外部存储器块组成。 window attention block负责局部和全局特征表示学习,而external memory block将不同的样本内特征与其两个外部记忆单元相结合,以减少由于降维而导致的信息损失,并获得数据集的归纳偏置信息。此外,我们设计了一种特殊的不平衡 Unet 结构,我们采用更大的编码器尺寸来促进特征提取和保留更深层次的语义信息。此外,实现了一种自适应权重调整方法来动态调整不同类的损失权重,这有助于优化模型学习方向并从正在学习的类中提取更多特征。由于我们的数据集来自 FeTA 2021 挑战赛,因此我们与几个参与者的网络(例如 Unet、Res-Unet 和 Trans-Unet)进行了比较,我们的模型在这些网络中具有更好的性能。对数据集的定量实验和消融研究证明了所提出模型的有效性,取得了比最先进的方法更好的结果。

2 方法

我们的非平衡 ExSwin-Unet 框架如图 2 所示。我们的 ExSwin Unet 主要由编码器、瓶颈、解码器以及编码器和解码器块之间的跳过连接组成。在我们的编码器模块中,输入图像被分成不重叠的块,块大小为 4×4,每个块的特征维度变为 16 倍。此外,特征维度通过线性嵌入层投影到选定的维度 C。之后,我们不断交替应用 ExSwin 块和补丁合并层,其中 ExSwin 块掌握特征表示,补丁合并层增加下采样的特征维度。具体来说,ExSwin 块大小是均匀的,因为它需要交替执行 window 和 shift window attention 来捕获图像的局部和全局特征。我们的 ExSwin 模块能够从输入图像中提取高级特征。然后我们应用两个 ExSwin 块作为瓶颈块,以增强输入特征维度和输出特征维度相同的模型收敛能力。
另一方面,在解码器模块中,我们应用具有多个 ExSwin 块的补丁扩展层来分层执行特征上采样。 应用同级 ExSwin 块之间的跳过连接来补充下采样过程中丢失的详细信息,并保留高级特征图中包含的更多高分辨率细节。在解码器的末端,添加了一个特定的补丁扩展层以进行 4× 上采样,其中特征分辨率映射到输入分辨率。最后,上采样的特征将通过线性投影层映射到分割预测。
网络总体结构图:
在这里插入图片描述

在ExSwin Transformer Block中,W/SWA是window and shifted window attention module(Swin Transformer中的模块);LN、DNBN分别代表layer normlization、double normalization和batch normlization; Mk和Mv分别是外部可学习的key和value memory; Gelu 是高斯误差线性单位。

2.1 基于窗口的注意力块

基于移位窗口机制和层次结构,Swin transformer 能够提取输入图像的局部和全局特征。由于我们的 Feta 数据集样本是从 3D 图像生成的 2D 图像,空间信息很容易丢失。为了弥补空间信息的损失并提高不同样本之间的特征融合,我们提出了一个名为 ExSwin transformer block 的新 transformer block。 ExSwin 块由基于窗口的注意力块和外部注意力块构成。我们的 ExSwin 块的结构如图 2 所示。ExSwin 块的操作可以表述如下:
在这里插入图片描述
调整窗口注意块
在窗口注意块中,我们应用了基于窗口的多头自注意(W-A)模块和基于移位窗口的多头自注意(SW-A)[17]。基于窗口和基于移位窗口的多头自注意力模块应用于两个连续的变压器块。基于窗口的多头自注意力计算每个窗口中的注意力以捕获局部窗口特征。另一方面,shifted window-based multi-head self-attention,凭借其shifting机制,计算注意力以混合跨窗口特征并捕获全局特征。局部自注意力可以表示为:
在这里插入图片描述
其中 Q, K, V ∈ RM2×d 表示查询、键和值矩阵; M 2 表示窗口中的补丁数,d表示查询或键的维度; B 是相对位置偏差,其值取自偏差矩阵 ^ B ∈ R(2M−1)×(2M+1),因为沿每个轴的相对位置位于 [−M +1,M − 1].
后标准化
在训练基于窗口注意力的模型时,我们可能会遇到训练不稳定的情况,因为网络深层的激活值非常低 [16]。为了缓解不稳定的情况,图 3 所示的后归一化应用于注意块,并在外部注意块之前添加了一个额外的层归一化单元。在这里插入图片描述
比例余弦注意力
window attention和shifted window attention模块在计算自注意力时,某些block或heads中的attention map支配了其他特征,导致特征提取有偏差。我们可以用余弦相似度代替内积相似度来改善问题:
在这里插入图片描述
其中 Bij 是像素 i 和 j 之间的相对位置偏差; τ 是一个可学习的标量,不跨头和层共享。由于余弦函数是等价归一化的,代入可以缓解一些内积支配的情况。

2.2 外部注意力块

在外部注意块中,我们设计了一个多头外部注意模块,它应用两个卷积层来掌握特征表示和两个外部可学习记忆单元来捕获不同样本之间的空间信息和样本亲和力。外部注意块采用外部注意机制,采用两个外部存储单元Mk和Mv来恢复相邻切片之间的空间信息并存储当前全局信息。外部注意力模块是为捕获样本内特征而设计的,它能够从输入样本中学习到更具代表性的特征。外部注意块结构如图 4 所示,我们的多头外部注意模块的伪代码如算法 1 所示。
由于多头注意力和卷积机制是互补的,我们在外部注意力块中应用了两个卷积层。为了聚合跨通道特征,第一个卷积层内核大小为 1 × 1。为了获得对注意机制的有用补充,第二个卷积层内核大小为 3×3,填充大小为 1。3×3 卷积层以更大的感受野捕获局部信息并增强对特征表示的掌握。
在这里插入图片描述

应用多头计算的外部注意块框架。 M1和M2是多个卷积一维核,用于存储空间信息。

2.3 不平衡的 Unet 架构

在编码器-解码器unet结构中,编码器和解码器中Ex-Swin块的大小不同。编码器和解码器模块的 Ex-Swin 块大小分别为 [2, 2, 6] 和 [2, 2, 2]。超参数设置的想法受到 Swin-T 模型的启发,我们的实验结果也证明了它对平衡 Unet 结构的有效性。具有更深尺寸 Ex-Swin 块的编码器块能够获得更好的特征提取并增强保留广泛上下文信息的模型能力。尺寸更小的解码器块节省了计算资源,也有利于模型收敛。

它说的不平衡UNet竟然指的是编解码中使用的Block数量不同

2.4 自适应加权调整

在医学分割任务中,由于标记数据的情况有限且不平衡,我们可能会遇到有偏差的数据分割训练结果。为了减轻偏差并提高模型性能,我们提出了一种损失函数的自适应权重调整策略,该策略对学习不足的样本进行模型学习,并防止模型在模型训练过程中压倒表现良好的样本。在我们的自适应权重调整机制中,类 c 的权重值 vc 计算如下:
在这里插入图片描述
其中 |prec|是与类 c 和 |truc| 的地面实况像素相匹配的预测像素是相应ground truth中c类的总数。并且自适应权重wc可以通过权重值来计算:
在这里插入图片描述
其中类别权重将针对每个时期的训练过程进行更新。在这种情况下,生成合适的权重以使模型能够调整其学习方向并减轻有偏差的分割结果。

2.5 双重损失函数

为了提高分割精度和学习速度,我们定义了一个对偶损失函数。由于我们采用了自适应权重调整方法,损失是通过取平均值计算每个类的加权损失来获得的。假设 wc 是每个类的权重,C 是类的总数。
多类交叉熵损失:
交叉熵损失衡量两个概率分布之间的差异。它加快了模型收敛并减少了模型训练资源消耗。
在这里插入图片描述
其中 pc 是输出中 c 类的分割概率,lc 是 c 类的标识,范围为 0 或 1,wc 是 c 类的自适应权重。
方形骰子损失:
Dice loss 衡量两个分布的相似性,我们将其应用于计算输出预测和基本事实之间的相似性。它有助于提高模型性能并提高准确性。
在这里插入图片描述
其中 ∑ pixels 表示像素值之和,ypixels 和 ytrue 分别是分割预测和分割真值,wc 是 c 类的自适应权重。
总体损失函数:
总损失是平均加权 CE 损失和平均加权 DICE 损失与系数 α 的线性组合。
在这里插入图片描述

3 实验结果

3.1 数据集

该数据集是 2021 年发布的 Fetal Brain Tissue Annotation and Segmentation Challenge [20]。胎儿大脑 MRI 被手动分为 8 个不同的类别,平面内分辨率为 0.5mm×0.5mm。数据集包括 80 个 3D T2 加权胎儿大脑和重建方法,用于创建胎儿大脑的超分辨率重建。我们将数据集分为 60 个训练集和 20 个测试集。为了节省时间和能源消耗,我们将数据集转换为大小为 256×256 的二维图像。

3.2 实现细节

我们在单个 NVIDIA RTX 2080Ti(11 GB RAM)上训练和测试我们的模型。 ExSwin-Unet 模型是在 Python 3.7 和 Pytorch 1.7.0 上训练的。为了增加数据多样性并避免数据过度拟合,我们对数据集应用了简单的数据增强翻转和旋转。我们采用加权双重损失函数,并使用前瞻优化器 [26] 和 Adam 优化器 [12] 作为内部优化器。此外,我们通过实验设置总损失系数α=0.4以获得相对更好的性能。在模型训练期间,初始学习率为 1e-4,每个 epoch 都有损失衰减。我们训练了 200 个 epochs 的模型,批量大小为 16。

3.3 与 SOTA 方法的比较

为了评估我们方法的性能,我们将我们的网络与五种最先进的方法进行了比较,包括 Segmenter [22]、Attn-Unet [19]、Utnet [7]、Swin-Unet [1] 和 Trans-Unet [2].比较的模型包括四个基于 transformer 的模型结构和一个基于 CNN 的模型,即 Attention Unet。我们在相同的计算环境下进行了比较,没有使用任何预训练模型。视觉和统计比较都是使用相同的数据集和相同的数据处理方法进行的。统计对比结果如表1所示,可视化结果如图5所示。
我们的模型具有其独特的功能,通常在 dice 和 jaccard 分数上优于其他 SOTA 方法,并且计算消耗更少。我们比 Trans-Unet 节省了 50% 的参数,并获得了更好的分割性能。在视觉上与图 5 中的其他分割方法相比,我们的模型在分割具有不同尺度和不规则形状的胎儿组​​织方面也表现出色。证明所提出的 ExSwin-Unet 能够提高分割性能。
在这里插入图片描述

3.4 消融研究

为了证明所提出组件的有效性,我们对不同组件和不平衡结构进行了消融研究。组件消融实验结果如表2所示,不同方法的关注热点如图6所示。为了说明我们的不平衡结构的有效性,我们对不平衡结构进行了消融研究,如表4所示。
在这里插入图片描述

如表 2 所示,不平衡的 Unet 结构以其较大的编码器尺寸有利于特征学习过程。具有外部注意单元的模型能够结合不同的样本内特征并减轻空间信息损失。自适应损失减轻了模型不平衡类欠学习问题。
在这里插入图片描述

如表 3 所示,我们进一步与典型的类不平衡损失 focal loss [14] 进行比较,以验证我们的自适应损失方法的有效性。结果证明了我们的方法的有效性,其中我们的自适应加权损失函数通过掌握学习不足类的信息和提高整体性能来提高模型学习能力。
在这里插入图片描述
非平衡 Unet 结构的消融研究如表 4 所示,证明了非平衡 Unet 结构的有效性。使用更大的编码器尺寸,我们的模型可以获得比其他两个平衡模型更好的性能。实验表明,不平衡结构有利于模型特征提取过程并改善分割结果。
在这里插入图片描述

4 讨论和限制

通过上述消融研究和对比实验,我们设计了一个有效的基于 2D 的分割网络,具有外部注意力,以在 3D 图像切片上实现分割任务。我们的目的是发现样本内关系以减轻空间信息损失并有利于特征学习过程。外部注意力模块实现了这个目标,实验证明了它的有效性。此外,我们发现平衡的 Unet 结构对于 Unet 框架来说可能不是必需的,因为不平衡的 Unet 可以获得比平衡的 Unet 更好的性能。另一方面,我们的方法仍然有一些局限性。如图 7 所示,我们的模型未能在一些小尺度上实现正确的预测
在这里插入图片描述

5 结论

在本文中,我们提出了一种新型的不平衡加权 Unet,配备了新的 ExSwin 变压器块,以改善胎儿大脑 MRI 分割结果。 ExSwin transformer 由 shift-window attention 和 external attention 模块组成。 ExSwin transformer block 不仅可以掌握基本的样本特征表示,还可以捕获不同 3D 切片之间的样本内相关性和空间信息。并且 Unet 是不平衡的,其中编码器具有较大的尺寸以促进特征提取过程。此外,我们引入了一种自适应权重调整策略来改善有偏见的数据分割情况。定量比较实验和消融研究证明了我们提出的模型的良好性能。

相关文章:

ExSwin-Unet 论文研读

ExSwin-Unet摘要1 引言2 方法2.1 基于窗口的注意力块2.2 外部注意力块2.3 不平衡的 Unet 架构2.4 自适应加权调整2.5 双重损失函数3 实验结果3.1 数据集3.2 实现细节3.3 与 SOTA 方法的比较3.4 消融研究4 讨论和限制5 结论数据集来源: https://feta.grand-challenge…...

置顶!!!主页禁言提示原因:在自己论坛发动态误带敏感词,在自己论坛禁止评论90天

置顶!!!主页禁言提示原因:在自己论坛发动态误带敏感词,在自己论坛禁止评论90天 置顶!!!主页禁言提示原因:在自己论坛发动态误带敏感词,在自己论坛禁止评论90天…...

优思学院|解密六西格玛:探索DMAIC和DMADV之间的区别

六西格玛方法中最为广泛使用的两种方法是DMAIC和DMADV。这两种方法都是为了让企业流程更加高效和有效而设计的。虽然这两种方法有一些重要的共同特点,但它们并不可以互相替代,并且被开发用于不同的企业流程。在更详细地比较这两种方法之前,我…...

Pytorch的DataLoader输入输出(以文本为例)

本文不做太多原理介绍,直讲使用流畅。想看更多底层实现-〉传送门。DataLoader简介torch.utils.data.DataLoader是PyTorch中数据读取的一个重要接口,该接口定义在dataloader.py脚本中,只要是用PyTorch来训练模型基本都会用到该接口。本文介绍t…...

代谢组学:Microbiome又一篇!绘制重症先天性心脏病新生儿肠道微生态全景图谱

文章标题:Mapping the early life gut microbiome in neonates with critical congenital heart disease: multiomics insights and implications for host metabolic and immunological health 发表期刊:Microbiome 影响因子:16.837…...

Java基本类型所占字节简述

类型分类所占字节取值范围boolean布尔型1bit0 false、 1 true (1个bit 、1个字节、4个字节)char ​字符型(Unicode字符集中的一个元素)​ 2字节-32768~32767(-2的15次方~2的15次方-1)byte整型1字节-128&a…...

Linux vi常用操作

vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是: 命令模式: 用户刚…...

Unicode(宽字节)、ANSI(多字节)

1、什么时候用Unicode(宽字节),什么时候用ANSI(多字节)? 在linux/windows等操作系统中使用的,一般都是Unicode(宽字节)。 下位机PLC/单片机等硬件设备中使用,一般都是ANSI(多字节)。 所以,通讯中(比如VS项目&#x…...

STM32实战之LED循环点亮

接着上一章讲。本章我们来讲一讲LED流水灯,循环点亮LED。 在LED章节有的可能没有讲到,本章会对其进行说明,尽量每个函数说一下作用。也会在最后说一下STM32的寄存器,在编程中寄存器是避免不了的东西,寄存器也是非常好理…...

智慧厕所智能卫生间系统有哪些功能

南宁北站智能厕所主要功能有哪些?1、卫生间环境空气监测男厕、女厕环境空气监测系统包括对厕所内的温度、湿度、氨气、硫化氢、PM2.5、烟雾等气体数据的实时监测。2、卫生间厕位状态监测系统实时监测厕位内目前的使用状态(有人或无人),数据信…...

【网络】套接字 -- TCP

🥁作者: 华丞臧. 📕​​​​专栏:【网络】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章…...

NDK C++ map容器

map容器// TODO map容器 #include <iostream> #include <map>using namespace std;int main() {// TODO map<int, string>按key值排序&#xff0c;同一个key不可以重复插入map<int, string> map1;map1.insert(pair<int, string>(1, "111&qu…...

linux(Centos)安装docker

官网地址&#xff1a;Install Docker Engine on CentOS 首先检查linux系统版本及内核&#xff1a; 安装docker要求系统版本至少为7.x版本&#xff0c;内核至少为3.8以上 cat /etc/redhat-release # 查看系统版本号uname -r #查看linux系统内核 检查系统是否能连上外网&#…...

Delphi 中 FireDAC 数据库连接(处理错误)

参见&#xff1a;Delphi 中 FireDAC 数据库连接&#xff08;总览&#xff09;本主题描述了如何用FireDAC处理数据库错误。一、概述EFDDBEngineException类是所有DBMS异常的基类。单个异常对象是一个数据库错误的集合&#xff0c;可以通过EFDDBEngineException.Errors[]属性访问…...

算法小抄3-理解使用Python容器之列表

引言 首先说一个概念哈,程序算法数据结构,算法是条件语句与循环语句组成的逻辑结构,而数据结构也就是容器. 算法决定数据该如何处理,而容器则决定如何数据如何存储. 不同的语言对容器有不同的实现方式, 但他们的功能都是相似的, 打好容器基础,你就可以在各式各样的语言中来回横…...

Vue3中watch的value问题

目录前言一&#xff0c;ref和reactive的简单复习1.ref函数1.2 reactive函数1.3 用ref定义对象类型数据不用reactive二&#xff0c;watch的value问题2.1 ref2.1.1 普通类型数据2.1.2 对象类型数据2.1.3 另一种方式2.2 reactive三&#xff0c;总结后记前言 在Vue3中&#xff0c;…...

【线性筛+DP】最大和

看错题了&#xff0c;呃呃&#xff0c;其实就是个简单DP最大和 - 蓝桥云课 (lanqiao.cn)题意&#xff1a;思路&#xff1a;设dp[i]为以1为终点的最大和&#xff0c;然后枚举状态和决策就行了主要是线性筛的应用&#xff0c;它可以预处理出一个数的最小质因子是多少Code&#xf…...

openpnp - configure - 丢弃(Discard)位置的设置

文章目录openpnp - configure - 丢弃(Discard)位置的设置概述笔记设置丢弃位置吸取元件失败后, 吸嘴一直吸气的处理ENDopenpnp - configure - 丢弃(Discard)位置的设置 概述 测试时, 吸取了一个元件, 吸取成功了, 现在想将这个料丢掉. 点击控制面板-Special页中的Discard不好…...

java Object 万字详解 (通俗易懂)

基本介绍构造方法成员方法hashCode()getClass()toString()equals()finalize()JavaBean重写Object类的方法重写toString重写equals一、基本介绍Object类是java类层次最顶层的基类&#xff08;父类&#xff09;&#xff0c;所有类都是直接或间接继承自Object类&#xff0c;因此&a…...

Java并发简介(什么是并发)

文章目录并发概念并发和并行同步和异步阻塞和非阻塞进程和线程竞态条件和临界区管程并发的特点提升资源利用率程序响应更快并发的问题安全性问题缓存导致的可见性问题线程切换带来的原子性问题编译优化带来的有序性问题保证并发安全的思路互斥同步&#xff08;阻塞同步&#xf…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...