[U-Net]DA-TRANSUNET
论文题目:DA-TRANSUNET: INTEGRATING SPATIAL AND CHANNEL DUAL ATTENTION WITH TRANSFORMER U-NET FOR MEDICAL IMAGE SEGMENTATION ∗
中文题目:DA-TRANSUNET:结合空间和通道双注意力与Transformer U-NET的医学图像分割算法
0摘要
精确的医学图像分割对疾病定量和治疗评估至关重要。尽管传统的U-Net架构及其集成Transformer的变种在自动分割任务中表现出色,但它们无法充分利用图像的内在位置特征和通道特征。现有模型在参数效率和计算复杂度方面也面临困难,尤其是在广泛使用Transformer的情况下。为了解决这些问题,本研究提出了一种新颖的深度医学图像分割框架——DA-TransUNet,旨在将Transformer和双重注意力块(DA-Block)集成到传统的U形架构中。与早期的基于Transformer的U-Net模型不同,DA-TransUNet利用Transformer和DA-Block集成了图像的全局和局部特征,同时还融合了图像特有的位置特征和通道特征,从而提升了医学图像分割的性能。通过在嵌入层和每个跳跃连接层中引入DA-Block,我们显著增强了特征提取能力,并提高了编码器-解码器结构的效率。DA-TransUNet在医学图像分割任务中表现出色,在多个数据集上始终优于现有的最先进技术。总之,DA-TransUNet在医学图像分割方面提供了重要的进展,为现有技术提供了一种有效且强大的替代方案。我们的架构以其提高分割精度的能力脱颖而出,从而推动了自动医学图像诊断领域的发展。我们的模型代码和参数将公开发布,网址为:https://github.com/SUN-1024/DA-TransUnet。
关键词:U-net ,医学图像分割,双重注意, Transformer
1 引言
医学图像分割是指在医学图像中划定感兴趣区域的过程,用于诊断和治疗计划。它是医学图像分析的基础。精确地划分病变区域在量化疾病、评估疾病预后和治疗效果方面起着至关重要的作用。手动分割在病理诊断中既准确又经济,但在标准化临床环境中至关重要。相反,自动化分割确保了可靠和一致的过程,提高了效率,减少了劳动力和成本,同时保持了准确性。因此,临床诊断领域对极为精确的自动化医学图像分割技术有着巨大的需求。
在过去的十年中,传统的U-Net结构已广泛应用于众多分割任务,取得了显著的成果。值得注意的是,U-Net模型[1]及其各种增强版本取得了显著成功。ResUnet[2]就是在这一时期出现的,受残差概念的影响。类似地,UNet++[3]强调跳跃连接的改进,而DAResUnet[4]则在U-Net中加入了残差块(Res-Block)和双重注意力块(Dual Attention Block)。这些架构都受到了编码器-解码器思想的影响,跳跃连接为解码器提供初始特征,弥合了编码器和解码器之间的语义差距。然而,感知领域的局限性和卷积操作中的偏差可能会影响分割准确性。此外,无法建立长距离的依赖关系和全局上下文也进一步限制了性能的提升。
变压器(Transformer)[5]最初是为自然语言处理(NLP)中的序列到序列建模开发的,但它在计算机视觉(CV)领域也找到了应用。视觉变压器(ViTs)将图像划分为块,并将它们的嵌入输入到变压器网络中,以实现强大的性能[6]。ViTs在计算机视觉中的应用,尤其是在医学图像分割中,进一步增强了其分割效果。受到ViTs启发,TransUNet[7]结合了ViTs的功能与U-Net在医学图像分割中的优势。具体而言,它采用变压器的编码器处理图像,并使用CNN和跳跃连接实现准确的上采样特征恢复,但忽略了图像特有的特征,如位置和通道信息。通过利用ViTs的能力,TransUNet[7]将ViTs和U-Net架构的优点融合在一起,推动了医学图像分割性能的提升。TransUNet利用基于变压器的编码器进行强大的图像特征提取,同时结合传统的卷积神经网络和跳跃连接,精准地进行特征图的上采样。但它忽略了图像特有的空间定位和通道信息。Swin-Unet[8]则将Swin变压器块与U-Net结构结合,取得了不错的效果。然而,加入大量变压器块会增加参数量,但并未显著提高结果。然而,以上提到的医学图像分割研究在利用U-Net和变压器特性方面取得了一定进展,但它们也存在一些局限性:
-
尽管将 Transformer 与传统的 U-Net 架构相结合在医学图像分割中取得了一定的成果,但 Transformer 缺乏内置的机制来考虑图像特有的位置和通道特征。这一功能上的缺口需要进一步的研究。
-
在 U-Net 模型中,跳跃连接作为一个重要元素,弥合了编码器和解码器之间的语义鸿沟。尽管跳跃连接有望改善分割性能,但迄今为止,关于跳跃连接的优化工作仍然较少。
-
许多研究仅仅通过堆叠多个 Transformer 来增强模型,这会导致参数膨胀和计算复杂度增加,而性能提升却微乎其微。Transformer 和 U-Net 架构的集成设计复杂,因此值得进一步研究。
为了解决上述挑战,我们提出了 DA-TransUNet,它引入了专门设计的 DA-Blocks,用于提取图像特定的位置信息和通道特征,从而提高了参数效率和性能。我们认为,广泛使用 Transformer 并不如利用一组经过精确校准的 DA-Blocks 来优化图像特征的效果更为显著。Transformer 层中的 DA-Block 具有强大的专业能力,用于提取图像特有的位置信息和通道特征。这个块结合了双重注意力网络(Dual Attention Network for Scene Segmentation)中的位置注意力块(PAM)和通道注意力块(CAM)[9]。该双重注意力块被置于 DA-TransUNet 的嵌入层中,提供了强大的特征提取能力。我们还将 DA-Block 集成到三层跳跃连接中,以优化编码器传递的特征。这缩小了语义差距,帮助构建统一的特征表示。通过这种融合方法,最大化了在注意力机制中对位置和通道特征的使用,优化了模型。此外,U-Net 结构中的跳跃连接通过引入 DA-Blocks 得到了增强,能够过滤无关信息,改善图像重建质量。凭借这些增强,解码和医学图像分割能力得到了显著提升。
我们主要在多个医学图像数据集上评估了 DA-TransUNet 的有效性,包括 Synapse [10]、CVC-ClinicDB [11]、ISIC2018 [12, 13]、kvasir-seg [14]、Kvasir-Instrument 数据集 [15] 和 Chest X-ray 病例数据集 [16, 17]。DA-TransUNet 展示了显著的效果,得到了可量化的指标证明。我们的主要贡献总结如下:
-
我们提出了 DA-TransUNet,一种新颖的架构,将双重注意力机制集成到 Transformer U-net 框架中,用于处理位置和通道信息。这一设计提高了编码器-解码器结构的灵活性和功能,从而提升了医学图像分割任务的性能。
-
提出了一个精心设计的双重注意力编码机制,该机制被置于编码器中 Transformer 层之前。这样可以增强其特征提取能力,丰富 U-net 结构中编码器的功能。(第 3 节)
-
通过将双重注意力块集成到每一层跳跃连接中,增强了跳跃连接的有效性。通过消融实验验证,这一修改提高了特征传递到解码器的准确性,从而改善了图像分割性能。(第 4.4 节)
-
我们提出的 DA-TransUNet 方法在多个医学图像数据集上取得了最先进的性能,证明了我们方法的有效性,并为推动医学图像分割的发展做出了贡献。
本文的其余部分安排如下:第 II 节回顾了自动医学图像分割的相关工作,第三节给出了我们提出的 DA-TransUNet 的描述。接下来,第 IV 节进行了综合实验和可视化分析。最后,第 V 节对整个工作进行了总结。
2 相关工作
2.1 U-net 模型
近年来,注意力机制在 U-net 架构中得到了广泛应用[1]。例如,Attention U-net 引入了注意力机制,以增强胰腺定位和分割性能[18];DAResUnet 将双重注意力和残差机制整合到 U-net 中[4];Attention Res-UNet 探讨了将硬注意力替换为软注意力的方法[19];Sa-unet 在 U-net 中集成了空间注意力机制[20]。在此基础上,TransUNet 创新性地将 Transformer 与 U-net 结构相结合[7]。基于 TransUNet,TransU-Net++ 将注意力机制引入跳跃连接和特征提取中[21]。Swin-Unet[8] 通过用 Swin-Transformer 替换 U-net 中的每个卷积块来进行改进[22]。DS-TransUNet 提出了将 tif 模块引入跳跃连接以改进模型的方案[23]。AA-transunet 采用了块注意力模型(CBAM)和深度可分离卷积(DSC)来进一步优化 TransUNet[24]。TransFuse 使用双重注意力双重融合块和 AG 来融合 CNN 和 Transformer 的不同部分的特征[25]。尽管许多注意力机制已被添加到 U-net 和 TransUNet 模型中,但仍需要进一步探索。与以往的方法不同,我们的实验将双重注意力机制和 Transformer 模块引入传统的 U 型编码器-解码器架构和跳跃连接,取得了令人满意的结果。
2.2 跳跃连接在医学图像分割模型中的应用
U-net 中的跳跃连接旨在弥合编码器和解码器之间的语义差距,有效地恢复细粒度的目标细节[26][27][28]。跳跃连接的主要修改有三种:首先,增加其复杂性[29]。U-Net++ 重新设计了跳跃连接,引入了类似 Dense 结构的跳跃连接[3],而 U-Net3++[30] 则将跳跃连接改为全尺度跳跃连接。其次ÿ
相关文章:
[U-Net]DA-TRANSUNET
论文题目:DA-TRANSUNET: INTEGRATING SPATIAL AND CHANNEL DUAL ATTENTION WITH TRANSFORMER U-NET FOR MEDICAL IMAGE SEGMENTATION ∗ 中文题目:DA-TRANSUNET:结合空间和通道双注意力与Transformer U-NET的医学图像分割算法 0摘要 精确的医学图像分割对疾病定量和治疗评…...
AI大模型从0到1记录学习 数据结构和算法 day20
4.3 分治算法 4.3.1 概述 分治算法的基本思想为:将原问题递归的分解为若干个(通常是两个以上)规模较小、相互独立且性质相同的子问题,直到子问题足够简单,简单到可以直接求解。然后再返回结果,逐个解决上层…...
面阵相机中M12镜头和远心镜头的区别及性能优势
以下是关于面阵相机中M12镜头和远心镜头的区别及性能优势的详细分析,结合知识库内容整理如下: 一、M12镜头与远心镜头的核心区别 1. 设计原理与光学特性 特性M12镜头远心镜头光学设计标准镜头设计,无特殊光学校正,依赖传统光路。…...
[创业之路-385]:企业法务 - 初创公司如何做好商业秘密的管理
一、商业秘密的定义与价值 定义: 商业秘密是企业的核心资产,包括技术信息(如算法、配方)和经营信息(如客户名单、定价策略),具有非公开性、商业价值、保密性三大特征。价值: 初创公…...
Qt5.15.2+OpenCV4.9.0开发环境搭建详细图文教程(OpenCV使用Qt自带MinGW编译的全过程,包教包会)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...
怎么实现RAG检索相似文档排序:similarities
怎么实现RAG检索相似文档排序:similarities top_5_indices = similarities.argsort()[-5:][::-1] 这行代码的作用是从一组相似度得分中获取相似度最高的5个元素的索引。 similarities:这是一个包含了某个问题与所有文档之间余弦相似度得分的一维数组(假设 similarities 是通…...
NLP高频面试题(五十三)——深度学习正则化详解
一、动因篇 为什么要正则化? 深度神经网络通常包含数以万计甚至数以亿计的参数,模型容量极大,极易在有限的训练数据上“记住”噪声与异常样本,从而出现过拟合(overfitting)现象。过拟合导致模型在训练集上表现优异,但在测试集或真实场景中泛化能力大幅下降。正则化(r…...
2.idea查看某个类的方法名称和实现
2.idea查看某个类的方法名称和实现 ctrl鼠标左键单击类名 点击侧边栏Structure可看到方法名称的统计,这样直观...
FeignClient用法笔记
1. FeignClient简介 在微服务架构中总需要各个服务相互调用,各个服务又是以接口方式暴露,所以需要Http远程调用;为了简化调用,Spring Cloud OpenFeign 库提供了org.springframework.cloud.openfeign.FeignClient 注解:…...
【Redis】 Redis中常见的数据类型(二)
文章目录 前言一、 List 列表1. List 列表简介2.命令3. 阻塞版本命令4. 内部编码5. 使用场景 二、Set 集合1. Set简单介绍2. 普通命令3 . 集合间操作4. 内部编码5. 使用场景 三、Zset 有序集合1.Zset 有序集合简介2. 普通命令3. 集合间操作4. 内部编码5. 使用场景 结语 前言 在…...
电力作业安全工器具全解析:分类、配置与检查要点
在电力行业,每一次作业都面临潜在危险,安全工器具是保障作业人员生命安全的关键。今天,金能电力带大家深入了解电力作业中常见的安全工器具,以及它们的检查与使用要点。 电力作业中安全工器具种类繁多。绝缘安全工器具因直接关联带…...
PowerBI-使用参数动态修改数据源路径
PowerBI-使用参数动态修改数据源路径 在PowerQuery中可以使用参数,通过参数我们可以将多个文件路径相同的字符串进行替换。 以一个案例分享下过程: 第一步,导入一个含有多个sheet表的EXCEL工作薄,点击转换数据,如图…...
Temperature
模型中Temperature参数的详细解释 Temperature 是生成模型(如GPT、LLaMA等)中用于控制输出多样性和随机性的关键超参数。它通过调整模型预测概率分布的平滑程度,直接影响生成文本的创造性与稳定性。 模型中Temperature参数的详细解…...
C++ 日志系统实战第二步:不定参数函数解析
全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的项目笔记吧~ 相关技术知识补充 不定参宏函数 在 C 语言中,不定参宏函数是一种强大的工具,它允许宏接受可变数量的参数,类似于不定参函数&#…...
【高并发】 MySQL锁优化策略
在数据库高并发场景中,行锁、表锁和高并发处理是密切相关的概念,它们共同影响着系统的并发性能和数据一致性。以下是三者的详细解释及高并发处理的策略: 1. 行锁(Row-Level Locking) 行锁是数据库中最小的锁粒度&…...
C语言——填充矩阵
C语言——填充矩阵 一、问题描述二、格式要求1.输入形式2.输出形式3.样例 三、实验代码 一、问题描述 编程实现自动填充nn矩阵元素数值,填充规则为:从第一行最后一列矩阵元素开始按逆时针方向螺旋式填充数值1,2,…,nn…...
CSS3 基础(背景-文本效果)
二、背景效果 属性功能示例值说明background设置背景颜色或渐变background: linear-gradient(45deg, #4CAF50, #FF5722);设置背景颜色、图片或渐变效果。background-size调整背景图片大小background-size: cover;设置背景图片的显示大小,如 cover 或 contain。back…...
点云配准算法之NDT算法原理详解
一、算法概述 NDT(Normal Distributions Transform)最初用于2D激光雷达地图构建(Biber & Straer, 2003),后扩展为3D点云配准。它将点云数据空间划分为网格单元(Voxel),在每个体…...
springboot在eclipse里面运行 run as 是Java Application还是 Maven
在 Eclipse 里运行 Spring Boot 项目时,既可以选择以“Java Application”方式运行,也可以通过 Maven 命令来运行,下面为你详细介绍这两种方式及适用场景。 以“Java Application”方式运行 操作步骤 在项目中找到带有 SpringBootApplicat…...
Redis 基础和高级用法入门
redis 是什么? Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:…...
使用vue2开发一个在线旅游预订平台-前端静态网站项目练习
hello,大家好,今天给大家再分享一个前端vue2练习项目-在线旅游预订平台。我们在学习编程的时候,除了学习编程的基础知识,为了让我们快速的掌握一门编程技术,肯定离不开各种项目的练习,今天分享的这个前端练习项目&…...
Ext Direct 功能与使用详解
Ext Direct 是 Ext JS 框架中的一个功能模块,旨在简化前端 JavaScript 应用与后端服务器之间的通信。其核心思想是通过远程过程调用(RPC)协议,将服务器端的方法透明地映射为前端可直接调用的 JavaScript 函数,从而减少手动编写 Ajax 请求和处理响应的代码量。 一、Ext Dir…...
Android移动应用开发入门示例:Activity跳转界面
介绍如何使用LinearLayout布局实现基本的UI设计,并实现两个Activity之间的跳转,适合刚接触Android Studio的新手学习。我们将使用Java语言开发,布局采用XML文件。以下为完整源码与运行说明: 案例前的准备工作: 1.1XM…...
【hadoop】HBase分布式数据库安装部署
一、HBase集群的安装与配置 步骤: 1、使用XFTP将HBase安装包hbase-1.2.0-bin.tar.gz发送到master机器的主目录。 2、解压安装包: tar -zxvf ~/hbase-1.2.0-bin.tar.gz 3、修改文件夹的名字,将其改为hbase,或者创建软连接也可…...
理解npm的工作原理:优化你的项目依赖管理流程
目录 什么是npm npm核心功能 npm 常用指令及其作用 执行npm i 发生了什么? 1. 解析命令与参数 2. 检查依赖文件 3. 依赖版本解析与树构建 4. 缓存检查与包下载 5. 解压包到 node_modules 6. 更新 package-lock.json 7. 处理特殊依赖类型 8. 执行生命周期脚本 9. …...
【Python笔记 04】输入函数、转义字符
一、Input 输入函数 prompt是提示,会在控制台显示,用作提示函数。 name input("请输入您的姓名:") print (name)提示你输入任意信息: 输入input test后回车,他输出input test 二、常用的转义字符 只讲…...
MySQL数据库基本操作-DQL-基本查询
数据库的操作中,查询是最重要的 一、基本查询-数据准备 -- 数据准备 create database if not exists mydb2; use mydb2; create table product( pid int primary key auto_increment, pname varchar(20) not null, price double, category_id varchar(20) …...
13、性能优化:魔法的流畅之道——React 19 memo/lazy
一、记忆封印术(React.memo) 1. 咒语本质 "memo是时间转换器的记忆晶石,冻结无意义的能量波动!" 通过浅层比较(shallowCompare)或自定义预言契约,阻止组件在props未变时重新渲染。 …...
低代码平台开发手机USB-HID调试助手
项目介绍 USB-HID调试助手是一种专门用于调试和测试USB-HID设备的软件工具。USB-HID设备是一类通过USB接口与计算机通信的设备,常见的HID设备包括键盘、鼠标、游戏控制器、以及一些专用的工业控制设备等。 主要功能包括: 数据监控:实时监控和…...
Langchain_Agent+数据库
本处使用Agent数据库,可以直接执行SQL语句。可以多次循环查询问题 前文通过chain去联系数据库并进行操作; 通过链的不断内嵌组合,生成SQL在执行SQL再返回。 初始化 import os from operator import itemgetterimport bs4 from langchain.ch…...
Code Splitting 分包策略
以下是关于分包策略(Code Splitting)的深度技术解析,涵盖原理、策略、工具实现及优化技巧: 一、分包核心价值与底层原理 1. 核心价值矩阵 维度未分包场景合理分包后首屏速度需加载全部资源仅加载关键资源缓存效率任意修改导致全量缓存失效按模块变更频率分层缓存并行加载单…...
AI 开发入门之 RAG 技术
目录 一、从一个简单的问题开始二、语言模型“闭卷考试”的困境三、RAG 是什么—LLM 的现实世界“外挂”四、RAG 的七步流程第一步:加载数据(Load)第二步:切分文本(Chunking)第三步:向量化&…...
day36图像处理OpenCV
文章目录 一、图像预处理18 模板匹配18.1模板匹配18.2 匹配方法18.2.1 平方差匹配18.2.2 归一化平方差匹配18.2.3 相关匹配18.2.4 归一化相关匹配18.2.5 相关系数匹配18.2.6 归一化相关系数匹配 18.3 绘制轮廓18.4案例 一、图像预处理 18 模板匹配 18.1模板匹配 模板匹配就是…...
系统与网络安全------弹性交换网络(3)
资料整理于网络资料、书本资料、AI,仅供个人学习参考。 STP协议 环路的危害 单点故障 PC之间的互通链路仅仅存在1个 任何一条链路出现问题,PC之间都会无法通信 解决办法 提高网络可靠性 增加冗余/备份链路 增加备份链路后交换网络上产生二层环路 …...
FPGA上实现YOLOv5的一般过程
在FPGA上实现YOLOv5 YOLO算法现在被工业界广泛的应用,虽说现在有很多的NPU供我们使用,但是我们为了自己去实现一个NPU所以在本文中去实现了一个可以在FPGA上运行的YOLOv5。 YOLOv5的开源代码链接为 https://github.com/ultralytics/yolov5 为了在FPGA中…...
verilog和system verilog常用数据类型以及常量汇总
int和unsigned 在 Verilog-2001 中,没有 int 和 unsigned 这样的数据类型。这些关键字是 SystemVerilog 的特性,而不是 Verilog-2001 的一部分。 Verilog-2001 的数据类型 在 Verilog-2001 中,支持的数据类型主要包括以下几种: …...
wordpress学习笔记
P1 P2 P3...
Rust 学习笔记:编程语言的相关概念
Rust 学习笔记:编程语言的相关概念 Rust 学习笔记:编程语言的相关概念动态类型 vs 静态类型动态类型 (Dynamically Typed)静态类型 (Statically Typed)对比示例 强类型 vs 弱类型强类型 (Strongly Typed)弱类型 (Weakly Typed)对比示例 编译型语言 vs 解…...
react nativeWebView跨页面通信
场景 react native项目里,有一些移动端的应用喜欢使用h5来开发,会出现需要跨tab和跨页面通信的场景,可以使用pubsub-js来实现通信。 实现思路 在react native 层实现pubsub的公共API,提供订阅消息、发布消息、取消订阅接口&…...
Python爬虫(3)HTML核心技巧:从零掌握class与id选择器,精准定位网页元素
目录 一、背景与意义二、class与id的基础概念与语法规则2.1 什么是class与id?2.2 核心区别总结 三、应用场景与实战案例3.1 场景1:CSS样式管理3.2 场景2:JavaScript交互3.3 场景3:SEO优化与语义化 四、常见误区与最…...
BGE(BAAI General Embedding)模型详解
BGE(BAAI General Embedding)模型详解 BGE(BAAI General Embedding)是北京智源人工智能研究院(BAAI)推出的通用文本嵌入模型系列,旨在为各种自然语言处理任务提供高质量的向量表示。 一、BGE模…...
【Linux网络】应用层自定义协议与序列化及Socket模拟封装
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
Rust项目GPG签名配置指南
Rust项目GPG签名配置指南 一、环境准备 # 安装Gpg4win(Windows) winget install -e --id GnuPG.Gpg4win二、密钥生成与配置 # 生成RSA4096密钥 gpg --full-generate-key # 类型选RSA and RSA,长度4096,邮箱填z3266420686202216…...
6.第六章:数据分类的技术体系
文章目录 6.1 数据分类的技术架构6.1.1 数据分类的整体流程6.1.2 数据分类的技术组件6.1.2.1 数据采集与预处理6.1.2.2 特征工程与选择6.1.2.3 分类模型构建6.1.2.4 模型评估与优化6.1.2.5 分类结果应用与反馈 6.2 数据分类的核心技术与算法6.2.1 传统机器学习算法6.2.2 深度学…...
Nginx 反向代理,啥是“反向代理“啊,为啥叫“反向“代理?而不叫“正向”代理?它能干哈?
Nginx 反向代理的理解与配置 User 我打包了我的前端vue项目,上传到服务器,在宝塔面板安装了nginx服务,配置了文件 nginx.txt .运行了项目。 我想清楚,什么是nginx反向代理?是nginx作为一个中介?中间件来集…...
下篇:深入剖析 BLE GATT / GAP / SMP 与应用层(约5000字)
引言 在 BLE 协议栈的最上层,GAP 定义设备角色与连接管理,GATT 构建服务与特征,SMP 负责安全保障,应用层则承载具体业务逻辑与 Profile。掌握这一层,可实现安全可靠的设备发现、配对、服务交互和定制化业务。本文将详解 GAP、GATT、SMP 三大模块,并通过示例、PlantUML 时…...
Linux Awk 深度解析:10个生产级自动化与云原生场景
看图猜诗,你有任何想法都可以在评论区留言哦~ 摘要 Awk 作为 Linux 文本处理三剑客中的“数据工程师”,凭借字段分割、模式匹配和数学运算三位一体的能力,成为处理结构化文本(日志、CSV、配置文件)的终极工具。本文聚…...
无人设备遥控之调度自动化技术篇
无人设备遥控器的调度自动化技术是现代科技发展的重要成果,它通过集成先进的通信、控制、传感器及人工智能技术,实现了对无人设备的高效、精准调度与自动化管理。 一、核心技术 无线通信技术 调度自动化依赖于高速、稳定的无线通信网络(如5…...
STM32F407 HAL库使用 DMA_Normal 模式实现 UART 循环发送(无需中断)
在 STM32 开发中,很多人喜欢使用 DMA 来加速串口发送数据。然而,默认的 DMA 往往配合中断或使用循环模式(DMA_CIRCULAR)使用。但在某些特定需求下,我们希望: 使用 DMA_NORMAL 模式,确保 DMA 每次…...
汽车自动驾驶介绍
0 Preface/Foreword 1 介绍 1.1 FSD FSD: Full Self-Driving,完全自动驾驶 (Tesla) 1.2 自动驾驶级别 L0 - L2:辅助驾驶L3:有条件自动驾驶L4/5 :高度/完全自动驾驶...