
人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载导读本文围绕 configs/seaformer/README.md 展开系统讲解 ICLR 2023 论文 SeaFormerSqueeze-Enhanced Axial Transformer在 PaddleSeg 中的落地实现与使用方式。你将掌握 SeaFormer tiny/small/base/large 四种规格在 ADE20K 上的官方精度基准、完整配置文件解读、骨干网络与分割头的源码级原理以及从训练、评估到预测、导出的全流程实操命令。一、模型背景面向移动端的高效轴向 TransformerSeaFormerSqueeze-Enhanced Axial Transformer是由 Qiang Wan、Zilong Huang、Jiachen Lu、Gang Yu 与 Li Zhang 提出的移动端语义分割架构以会议论文形式发表于 ICLR 2023arXiv:2301.13156v4。其核心目标是在保持 Transformer 全局建模能力的同时大幅压缩计算量与参数量使其能够部署在手机等移动设备上。SeaFormer 的设计有两个关键创新点Squeeze-Enhanced Axial Attention挤压增强轴向注意力将标准二维全局自注意力分解为行、列两个轴向注意力并对注意力计算过程中的特征进行挤压squeeze显著降低注意力矩阵的规模与计算成本轻量级分割头LightHead以极小的参数开销融合骨干网络输出的高分辨率细节特征与低分辨率全局特征替代了常见的重型解码头如 ASPP、OCR。在 PaddleSeg 仓库中SeaFormer 的实现分为两部分骨干网络paddleseg/models/backbones/seaformer.py注册了SeaFormer_tiny、SeaFormer_small、SeaFormer_base、SeaFormer_large四个组件分割模型paddleseg/models/seaformer_seg.py注册了SeaFormerSeg组件即论文中的 LightHead 部分。二、ADE20K 官方精度基准完整继承原文档给出了 SeaFormer 四个规格在 ADE20K 数据集上的官方训练结果。所有模型均以 512x512 分辨率训练 160000 轮迭代评估指标为 mIoU按 slice 方式切分评估。以下是完整的官方结果表模型规格分割头分辨率训练迭代数mIoU (slice)SeaFormer tinyLightHead512x51216000034.58SeaFormer smallLightHead512x51216000038.73SeaFormer baseLightHead512x51216000040.92SeaFormer largeLightHead512x51216000043.66从 tiny 到 largemIoU 从 34.58 逐步提升至 43.66跨度约 9 个点为不同算力约束下的移动端/边缘端部署提供了清晰的选择梯度。四个规格对应的预训练权重与训练日志下载地址均记录在 configs/seaformer 目录下的各 YAML 配置文件中通过pretrained字段指向 PaddlePaddle 官方权重服务器训练过程中的指标曲线可在 VisualDL 服务中查看。三、配置文件体系base 配置逐字段解析SeaFormer 在 PaddleSeg 中共有四个训练配置全部位于 configs/seaformer 目录configs/seaformer/ ├── seaformer_base_ade20k_512x512_160k.yml ├── seaformer_tiny_ade20k_512x512_160k.yml ├── seaformer_small_ade20k_512x512_160k.yml └── seaformer_large_ade20k_512x512_160k.yml3.1 基础配置baseconfigs/seaformer/seaformer_base_ade20k_512x512_160k.yml 是四个配置中唯一独立成文的完整配置其余三个均通过_base_继承它仅覆盖模型结构相关字段。完整内容如下_base_: ../_base_/ade20k.yml batch_size: 8 iters: 160000 model: type: SeaFormerSeg backbone: type: SeaFormer_base pretrained: https://paddleseg.bj.bcebos.com/dygraph/backbone/seaformer_base_imagenet_pretrained.zip num_classes: 150 head_channels: 160 embed_dims: [128, 160] is_dw: True dropout_ratio: 0.1 align_corners: False input_transform: multiple_select val_dataset: transforms: - type: Resize target_size: [2048, 512] keep_ratio: True size_divisor: 32 - type: Normalize mode: val optimizer: _inherited_: False type: AdamW beta1: 0.9 beta2: 0.999 weight_decay: 0.01 custom_cfg: - name: pos_emb weight_decay_mult: 0.0 - name: head lr_mult: 10.0 - name: norm weight_decay_mult: 0.0 lr_scheduler: learning_rate: 0.00025 power: 1.0 warmup_iters: 1500 warmup_start_lr: 1.0e-6关键字段说明_base_继承 configs/base/ade20k.yml后者提供了训练集ADE20K根目录data/ADEChallengeData2016/、数据增强流水线、默认 SGD 优化器与多项式学习率衰减等公共配置batch_size: 8/iters: 160000覆盖 base 配置中的batch_size: 4与iters: 80000这是 SeaFormer 系列统一采用的训练规模model.type: SeaFormerSeg指向 paddleseg/models/seaformer_seg.py 中注册的分割模型组件backbone.type: SeaFormer_base指向骨干网络pretrained为 ImageNet 预训练权重的下载地址num_classes: 150ADE20K 数据集的类别数head_channels: 160LightHead 中间特征通道数embed_dims: [128, 160]逐级融合时各 FusionBlock 的嵌入维度is_dw: Truelinear_fuse卷积使用深度可分离group 数等于通道数方式实现是轻量化的重要手段dropout_ratio: 0.1分类层前的 Dropout2D 丢弃率align_corners: False插值对齐方式输入尺寸为偶数如 512x512、1024x512时应为False若输入为 769x769 这类奇数尺寸则需改为Trueinput_transform: multiple_select骨干输出选取方式取in_index指定的多级特征进行融合验证集变换先Resize到[2048, 512]保持宽高比、保证边长可被 32 整除再Normalize与训练时的 512x512 随机裁剪形成对应优化器显式声明_inherited_: False覆盖 base 配置中的 SGD改用AdamWbeta10.9、beta20.999、weight_decay0.01custom_cfg分层正则与学习率pos_emb轴向位置嵌入参数weight_decay_mult: 0.0位置嵌入不做权重衰减head分割头参数lr_mult: 10.0分割头使用 10 倍学习率加速收敛norm归一化层参数weight_decay_mult: 0.0BN/LayerNorm 不做权重衰减学习率调度PolynomialDecay幂衰减初始学习率0.00025、power: 1.0等价于线性衰减、1500 步 warmupwarmup 起始学习率1.0e-6。3.2 三个子配置tiny / small / large其余三个配置文件均以 base 配置为蓝本只修改模型结构字段。它们的差异点如下seaformer_tiny_ade20k_512x512_160k.yml_base_: seaformer_base_ade20k_512x512_160k.yml model: type: SeaFormerSeg backbone: type: SeaFormer_tiny pretrained: https://bj.bcebos.com/paddleseg/dygraph/ade20k/backbone/seaformer_tiny_imagenet_pretrained.pdparams num_classes: 150 head_channels: 96 embed_dims: [64, 96] is_dw: True dropout_ratio: 0.1 align_corners: False input_transform: multiple_selectseaformer_small_ade20k_512x512_160k.ymlSeaFormer_small骨干head_channels: 128、embed_dims: [96, 128]。seaformer_large_ade20k_512x512_160k.ymlSeaFormer_large骨干head_channels: 192、embed_dims: [128, 160, 192]且额外声明in_index: [0, 1, 2, 3]large 规格的骨干输出 4 级特征融合级数更多。规格骨干组件head_channelsembed_dimsin_indexmIoUtinySeaFormer_tiny96[64, 96]默认 [0,1,2]34.58smallSeaFormer_small128[96, 128]默认 [0,1,2]38.73baseSeaFormer_base160[128, 160]默认 [0,1,2]40.92largeSeaFormer_large192[128, 160, 192][0,1,2,3]43.663.3 公共基础配置baseconfigs/base/ade20k.yml 提供了 SeaFormer 训练所依赖的公共部分ADE20K 数据集路径data/ADEChallengeData2016/、训练数据增强ResizeStepScaling随机缩放 RandomPaddingCrop512x512 裁剪 RandomHorizontalFlip随机水平翻转 RandomDistort色彩扰动 Normalize以及默认的 SGD 优化器/多项式衰减。SeaFormer 的 base 配置通过_inherited_: False与显式覆盖将优化器替换为 AdamW并重设了验证集变换二者配合实现了数据集与增强复用、训练策略定制的配置继承模式。四、源码级原理一SeaFormer 骨干网络骨干网络的完整实现位于 paddleseg/models/backbones/seaformer.py由卷积阶段与轴向 Transformer 阶段两部分组成。4.1 整体结构StackedMV2Block BasicLayerSeaFormer类按论文结构搭建网络先由一组StackedMV2Block卷积阶段提取多尺度特征再在深层叠加BasicLayer轴向 Transformer 块。构造参数中cfgs每个卷积阶段的 MobileNetV2 倒残差块配置形如[k, t, c, s]卷积核大小、扩展倍数、输出通道、步长channels各阶段通道数emb_dims/key_dims/depthsTransformer 阶段的嵌入维度、注意力 key 维度与块数drop_path_rate随机深度stochastic depth衰减率通过paddle.linspace(0, drop_path_rate, depths[i])逐块线性分配seaformer.py。forward的时序逻辑seaformer.py为遍历 5 个卷积阶段在 1/8 分辨率处输出共享细节特征并在后续各阶段间插入对应 Transformer 块最终返回多级特征列表。4.2 StackedMV2Block倒残差卷积特征提取StackedMV2Block在 stem 卷积首阶段使用 3x3 步长 2 下采样之后依次堆叠InvertedResidual倒残差块。InvertedResidual遵循 MobileNetV2 的扩展-深度卷积-压缩结构当expand_ratio ! 1时先用 1x1 卷积扩展通道再执行分组数为通道数的深度卷积最后用 1x1 卷积压缩当步长为 1 且输入输出通道一致时启用残差连接use_res_connect。输出通道通过_make_divisible规整到 8 的倍数seaformer.py以适配移动端硬件。4.3 SeaAttention挤压增强轴向注意力SeaAttention是本模型的核心创新seaformer.py其计算流程可拆解为两条并行分支细节增强分支detail enhance将q/k/v拼接后依次经过深度卷积dwconv分组数为2 * dh与 1x1 卷积pwconv得到保留局部细节的增强特征qkv挤压轴向注意力分支squeeze axial attention行方向对q/k/v沿宽度维做全局平均mean(-1)挤压成向量分别叠加可学习的SqueezeAxialPositionalEmbedding位置编码后在高度维上计算行注意力再经proj_encode_row编码列方向同理对q/k/v沿高度维平均mean(-2)在宽度维上计算列注意力行、列注意力输出相加后与原始v求和经proj投影最后通过sigmoid门控与细节增强分支的qkv逐元素相乘得到最终输出。SqueezeAxialPositionalEmbeddingseaformer.py是一维可学习位置编码参数前向时通过线性插值F.interpolate适配任意序列长度——这正是训练/验证阶段输入分辨率可灵活变化的关键支撑。4.4 四种规格的实例化差异四个注册组件seaformer.py通过不同cfgs、emb_dims、depths、num_heads组合体现规模差异并各自声明feat_channels供分割头读取多级特征通道数SeaFormer_tinyemb_dims[128, 160]、depths[2, 2]、num_heads4feat_channels[32, 128, 160]SeaFormer_smallemb_dims[160, 192]、depths[3, 3]、num_heads6feat_channels[48, 160, 192]SeaFormer_baseemb_dims[192, 256]、key_dims[16, 24]、depths[4, 4]、num_heads8feat_channels[64, 192, 256]SeaFormer_largeemb_dims[192, 256, 320]、key_dims[16, 20, 24]、depths[3, 3, 3]、num_heads8feat_channels[128, 192, 256, 320]4 级特征。五、源码级原理二SeaFormerSeg 轻量分割头LightHead分割头的实现位于 paddleseg/models/seaformer_seg.py 的SeaFormerSeg类中其前向流程seaformer_seg.py为骨干网络提取多级特征按in_index选取input_transformmultiple_select以最高分辨率细节特征x_detail为基准逐级调用FusionBlock融合更深层的全局特征融合结果经linear_fuse1x1 深度可分离卷积groupshead_channels if is_dw else 1与可选的Dropout2D由cls_seg1x1 卷积映射到类别数最后双线性插值回原始输入分辨率。FusionBlockseaformer_seg.py实现了论文中的轻量特征融合局部细节特征经 1x1 卷积嵌入到embed_dim深层全局特征经 1x1 卷积后通过Hardsigmoid生成空间门控插值放大到细节特征分辨率后逐元素相乘。全局特征只作为注意力门控参与融合避免了高分辨率特征图上昂贵的全局注意力计算这正是 LightHead 能在极小开销下恢复细节的原因。从配置到源码的对应关系可以总结为head_channels决定linear_fuse与cls_seg的通道数embed_dims的长度决定FusionBlock的个数tiny/small/base 为 2 个large 为 3 个is_dw决定linear_fuse是否为深度可分离卷积。六、实战操作训练、评估、预测与导出SeaFormer 完全复用 PaddleSeg 标准工具链以下命令均以 tiny 配置为例替换为其他规格的配置文件即可。6.1 数据准备按 configs/base/ade20k.yml 中的约定将 ADE20K 数据集放置于data/ADEChallengeData2016/目录包含标准的images与annotations划分。6.2 训练python tools/train.py \ --config configs/seaformer/seaformer_tiny_ade20k_512x512_160k.yml \ --do_eval \ --use_vdl \ --save_dir output/seaformer_tiny--do_eval训练过程中周期性在验证集上评估便于监控 mIoU 曲线--use_vdl开启 VisualDL 日志记录配合 docs/train 中的说明可实时查看 loss 与 mIoU训练 160000 轮、batch_size 为 8base 配置默认值大规模训练建议参照 docs/train/train_cn.md 开启多卡或混合精度。6.3 评估python tools/val.py \ --config configs/seaformer/seaformer_tiny_ade20k_512x512_160k.yml \ --model_path output/seaformer_tiny/best_model/model.pdparams评估将复用配置中定义的val_dataset变换Resize 到 2048x512 并保持比例、边长对齐 32最终输出各类别 IoU 与整体 mIoU。6.4 单图预测python tools/predict.py \ --config configs/seaformer/seaformer_tiny_ade20k_512x512_160k.yml \ --model_path output/seaformer_tiny/best_model/model.pdparams \ --image_path demo.png \ --save_dir output/result默认会在save_dir下生成added_prediction原图与结果叠加与pseudo_color_prediction伪彩色分割图两个子目录也支持传入image_dir批量预测、通过--custom_color自定义每类颜色颜色数需为3 * 类别数详见 docs/predict/predict_cn.md。6.5 模型导出python tools/export.py \ --config configs/seaformer/seaformer_tiny_ade20k_512x512_160k.yml \ --model_path output/seaformer_tiny/best_model/model.pdparams \ --save_dir output/export/seaformer_tiny导出得到推理模型model.pdmodelmodel.pdiparams后可配合 deploy/python 或 deploy/fastdeploy 进行部署SeaFormer 面向移动端的轻量设计使其天然适合边缘侧推理场景。七、调参与使用注意事项结合源码实现以下要点直接影响最终精度与部署效果align_corners必须与输入尺寸奇偶性匹配代码中F.interpolate全程使用该参数偶数尺寸512x512、1024x512设为False奇数尺寸769x769设为True否则特征对齐精度会受影响is_dw与推理速度深度可分离卷积将linear_fuse的参数量和计算量压缩约1/head_channels移动端部署建议保持True若追求极致精度可改为False并自行验证custom_cfg是精度复现的关键head的 10 倍学习率与pos_emb/norm的零权重衰减策略是论文复现实验的一部分替换优化器或删除该配置都会偏离官方基准in_index与embed_dims需要联动embed_dims的每一项依次对应融合骨干第 1、2、3large 为第 1、2、3、4级特征修改骨干规格时必须同步调整这两个字段否则FusionBlock的输入输出通道不匹配分辨率对齐验证变换中的size_divisor: 32保证了特征图边长能被 Transformer 阶段的降采样整除自定义分辨率时也应保持 32 的倍数。八、总结SeaFormer 是 PaddleSeg 内置的面向移动端的 Transformer 语义分割方案在 paddleseg/models/backbones/seaformer.py 中通过 StackedMV2Block 卷积骨干、Squeeze Axial Attention 与可学习轴向位置编码实现了高效全局建模在 paddleseg/models/seaformer_seg.py 中通过 FusionBlock 深度可分离 linear_fuse 的 LightHead 以极小开销恢复细节。配合 configs/seaformer 目录下 tiny/small/base/large 四套开箱即用的 ADE20K 配置可以在 34.58~43.66 mIoU 之间按算力预算灵活选择并通过 tools/train.py、tools/val.py、tools/predict.py、tools/export.py 标准工具链完成从训练到部署的全流程。赞分享人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载相关推荐PaddleSeg 中的 TopFormerToken Pyramid Transformer 移动端语义分割模型实战指南PaddleSeg 中的 TopFormerToken Pyramid Transformer 移动端语义分割模型实战指南 TopFormerToken P人工智能计算机视觉预训练PaddleSeg MobileSeg面向移动端与边缘设备的轻量级语义分割实战指南PaddleSeg MobileSeg面向移动端与边缘设备的轻量级语义分割实战指南 本文围绕 PaddleSeg 仓库中 configs/mobileseg/人工智能计算机视觉预训练PaddleSeg 中的 EfficientFormerV2MobileNet 级轻量视觉 Transformer 语义分割实战指南PaddleSeg 中的 EfficientFormerV2MobileNet 级轻量视觉 Transformer 语义分割实战指南 EfficientFor人工智能计算机视觉预训练上一篇Atbswp未来路线图Wayland支持与功能增强计划下一篇STM32 CMake终极指南5分钟快速搭建嵌入式开发环境创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考