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

SegFormer网络结构的学习和重构

因为太多的博客并没有深入理解,本文是自己学习后加入自己深入理解的总结记录,方便自己以后查看。

segformer中encoder、decoder的详解。


学习前言

一起来学习Segformer的原理,如果有用的话,请记得点赞+关注哦。


一、Segformer的网络结构图

网络结构:主要由Transformer的编码器和轻量级的多层感知机(MLP)的解码器组成

网络特点:
1、结合了Transformers与轻量级的多层感知机(MLP)解码器。
2、包含一个新颖的分层结构的Transformer编码器,该编码器输出多尺度特征。它不需要位置编码, 因此避免了位置编码的插值,这在测试分辨率与训练时不同的情况下可能会导致性能下降。
3、避免使用复杂的解码器。提议的MLP解码器从不同的层中聚合信息,从而同时结合了局部注意力和全局注意力来呈现强大的表示。
4、设计非常简单和轻量级,这是在Transformers上实现高效分割的关键。
5、SegFormer系列模型从SegFormer-B0到SegFormer-B5有多个版本,与之前的模型相比,它们的性能和效率都有显著的提高。

二、理解各模块的网络结构

encoder:作者设计了一系列的 Mix Transformer encoders (MiT),MiT-B0 到 MiT-B5,结构相同,大小不同,MiT-B0 是最轻量级的,可以用来快速推理,MiT-B5 是最重量级的,可以取得最好的效果。

encoder——OverlapPatchEmbed:通过2D卷积操作将图像分块(4分块)并将其嵌入到指定的维度的模块,通过Hierarchical Feature Representation这种方式,编码器可以同时提供高分辨率的粗糙特征和低分辨率的精细特征,从而更好地捕捉不同尺度的上下文信息。

#block1 对输入图像进行分区,并下采样512, 512, 3 => 128, 128, 32 => 16384, 32self.patch_embed1 = OverlapPatchEmbed(patch_size=7, stride=4, in_chans=in_chans, embed_dim=embed_dims[0])#block2对输入图像进行分区,并下采样,128, 128, 32 => 64, 64, 64 => 4096, 64self.patch_embed2 = OverlapPatchEmbed(patch_size=3, stride=2, in_chans=embed_dims[0], embed_dim=embed_dims[1])#block3对输入图像进行分区,并下采样  64, 64, 64 => 32, 32, 160 => 1024, 160self.patch_embed3 = OverlapPatchEmbed(patch_size=3, stride=2, in_chans=embed_dims[1], embed_dim=embed_dims[2])#block4对输入图像进行分区,并下采样32, 32, 160 => 16, 16, 256 => 256, 256self.patch_embed4 = OverlapPatchEmbed(patch_size=3, stride=2, in_chans=embed_dims[2], embed_dim=embed_dims[3])

encoder——Efficient self-attention:Attention机制(注意力机制),encoder 中计算量最大的就是 self-attention 层模块进行特征特区

        self.attn = Attention(dim, num_heads=num_heads, qkv_bias=qkv_bias, qk_scale=qk_scale,attn_drop=attn_drop, proj_drop=drop, sr_ratio=sr_ratio)

encoder——Mix FNN:在 FNN (前馈神经网络)中使用了 3x3 的卷积和 MLP,作者认为 position encoding(PE) 来引入局部位置信息在语义分割中是不需要的,所以引入了一个 Mix-FFN,考虑了零填充对位置泄露的影响,直接在 FFN 中使用 3x3 的卷积

    self.mlp = Mlp(in_features=dim, hidden_features=int(dim * mlp_ratio), act_layer=act_layer, drop=drop)

encoder——Overlapped Patch Merging:为了在保持局部连续性的同时获得分层特征图,SegFormer采用了重叠patch merging技术。这种方法通过重叠的patch来合并特征,与不重叠的patch merging相比,可以生成相同大小的特征图,同时更好地保留局部信息。

decoder:本文提出了一个轻量化的全由MLP组成的解码器,之所以可以使用如此简单轻量的decoder是因为本文的分层Transformer编码器比传统的卷积编码器具有更大的有效感受野。

Decoder 的过程:

step 1:将多层级特征输入 MLP 层,来规范通道维度
step 2:将特征图上采样为原图大小的 1/4 大小,concat 起来
step 3:使用一层 MLP 对特征通道聚合
step 4:输出预测 segmentation mask H 4 × W 4 × N 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LCR 029
  • [Web安全 网络安全]-CSRF跨站请求伪造
  • 面试经典 150 题:力扣88. 合并两个有序数组
  • 普通本科生也能成为AI高手:人工智能学习指南
  • 嵌入式 开发技巧和经验分享
  • 桌面专业版【修改主机名和更改计算机显示名称】方法介绍
  • Go语言Mutex的优化与TryLock机制解析
  • 微信小程序-使用vant组件库
  • 音视频入门基础:FLV专题(4)——使用flvAnalyser工具分析FLV文件
  • 9/24作业
  • 性能测试1初步使用Jmeter
  • 海平面气压与气柱平均温度的计算及其在气象学中的应用
  • 干货分享 | TSMaster软件QA指南(第3期)
  • 3D生成技术再创新高:VAST发布Tripo 2.0,提升AI 3D生成新高度
  • 鸿蒙OpenHarmony【小型系统基础内核(物理内存管理)】子系统开发
  • “大数据应用场景”之隔壁老王(连载四)
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Angular Elements 及其运作原理
  • ERLANG 网工修炼笔记 ---- UDP
  • express.js的介绍及使用
  • JavaWeb(学习笔记二)
  • js学习笔记
  • Meteor的表单提交:Form
  • Web标准制定过程
  • 阿里云Kubernetes容器服务上体验Knative
  • 从PHP迁移至Golang - 基础篇
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 学习笔记TF060:图像语音结合,看图说话
  • 一些关于Rust在2019年的思考
  • ​TypeScript都不会用,也敢说会前端?
  • # Apache SeaTunnel 究竟是什么?
  • #、%和$符号在OGNL表达式中经常出现
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)无线电失控保护(二)
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (bean配置类的注解开发)学习Spring的第十三天
  • (SpringBoot)第七章:SpringBoot日志文件
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四) Graphivz 颜色选择
  • (转)大型网站的系统架构
  • .ai域名是什么后缀?
  • .describe() python_Python-Win32com-Excel
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Micro Framework初体验
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET学习全景图
  • .net知识和学习方法系列(二十一)CLR-枚举
  • /proc/vmstat 详解
  • @antv/g6 业务场景:流程图