首页/新闻资讯/正文详情

PaddleSeg 中的 ANN 非局部语义分割模型:架构原理、配置解析与 Cityscapes/Pascal VOC 实战

发布时间:2026/9/25 8:28:27 来源:云帆数科 栏目:资讯中心
PaddleSeg 中的 ANN 非局部语义分割模型:架构原理、配置解析与 Cityscapes/Pascal VOC 实战
人工智能计算机视觉预训练【免费下载链接】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 仓库中 ANNAsymmetric Non-local Neural Networks for Semantic Segmentation模型的官方文档与实现为核心系统讲解该模型的算法动机AFNB/APNB 两大核心模块、PaddleSeg 源码级实现细节、四份官方训练配置的逐项参数含义以及从训练到推理导出的完整实战流程帮助读者在 PaddleSeg 中快速复现并二次开发 ANN 语义分割模型。一、背景为什么需要非对称非局部网络传统 CNN 语义分割模型受限于感受野难以建模长距离依赖关系。Non-local 网络通过计算特征图上任意两个位置之间的相似度自注意力来捕获全局上下文但直接在完整分辨率特征图上计算会带来 $O(N^2)$ 量级的矩阵乘法开销显存与算力代价极高。针对这一问题Zhu Zhen 等人于 ICCV 2019 提出了Asymmetric Non-local Neural NetworksANN核心思路是在金字塔池化后的紧凑特征上做非局部建模把注意力计算从原始像素级空间转移到降采样后的少量代表性位置上从而大幅降低计算量而不损失精度。PaddleSeg 在 paddleseg/models/ann.py 中给出了完整实现并提供了 Cityscapes 与 Pascal VOC 12Aug 两大数据集上的官方配置与预训练权重。二、整体架构AFNB 与 APNB 两大核心模块从源码结构看PaddleSeg 的 ANN 实现由ANN网络主体、ANNHead分割头、AFNB、APNB以及两类SelfAttentionBlock组成层次清晰可直接对照论文复现。2.1 网络主体 ANNANN 类 的职责非常简洁挂载主干网络当前支持 ResNet50/101将主干输出交给ANNHead得到多尺度 logit再统一双线性插值回输入分辨率class ANN(nn.Layer): def __init__(self, num_classes, backbone, backbone_indices(2, 3), key_value_channels256, inter_channels512, psp_size(1, 3, 6, 8), enable_auxiliary_lossTrue, align_cornersFalse, pretrainedNone): ... self.head ANNHead(num_classes, backbone_indices, backbone_channels, key_value_channels, inter_channels, psp_size, enable_auxiliary_loss) def forward(self, x): feat_list self.backbone(x) logit_list self.head(feat_list) return [F.interpolate(logit, x.shape[2:], modebilinear, align_cornersself.align_corners) for logit in logit_list]backbone_indices默认取(2, 3)即主干网络的第 3、4 个 stage 输出前者作为低层特征low-level后者作为高层特征high-level。网络最终返回一个 logit 列表——主分支 logit 之外若开启辅助损失还会附带一个辅助 logit详见 2.3。2.2 ANNHead融合、上下文与分类ANNHead 是模型的核心组装逻辑依次完成三件事AFNB 特征融合用AFNB把低层特征与高层特征做非局部融合self.fusionAPNB 上下文增强融合结果先经过一层ConvBNReLU(3x3)降维到inter_channels再送入APNB提取非局部上下文self.context分类与辅助分支cls为 1x1 卷积输出num_classes通道的 logitauxlayer为辅助分割层输入低层特征输出辅助 logit 用于辅助损失。其中辅助分支使用 PaddleSeg 通用组件 AuxLayer先ConvBNReLU(3x3)压缩到inter_channels low_in_channels // 2接 Dropout 后再用 1x1 卷积输出类别数实现轻量、低开销的辅助监督。2.3 AFNB 与 APNB 的注意力计算细节AFNBAsymmetric Fusion Non-local Block与APNBAsymmetric Pyramid Non-local Block在 ann.py 中实现两者共享同一套自注意力逻辑SelfAttentionBlock_AFNB与SelfAttentionBlock_APNB区别只在于输入来源AFNB 的 query 来自高层特征、key/value 来自低层特征APNB 的 query/key/value 全部来自同一份输入。关键点在_pp_moduleann.py——它以F.adaptive_avg_pool2d把特征分别池化到psp_size指定的多个尺寸默认(1, 3, 6, 8)再展平拼接成紧凑的金字塔先验。这样 key/value 的空间尺寸从 $H \times W$ 缩减为 $\sum psp_size^2 193664 110$ 个代表点注意力相似度矩阵的规模随之骤减正是非对称名称的由来。单个自注意力块SelfAttentionBlock_AFNB的计算流程为f_value将低层特征映射到value_channels经_pp_module金字塔池化后转置为(B, S, C)f_query将高层特征映射到key_channels并展平为(B, HW, C)f_key将低层特征映射到key_channels同样金字塔池化计算相似度图sim_map query × key按key_channels ** -0.5缩放后做 softmaxsim_map × value得到上下文reshape 回空间维度后经W1x1 卷积输出。整个流程与标准 non-local 完全一致只是 key/value 的空间维度被金字塔池化大幅压缩这也是 ANN 能同时获得全局建模能力与低计算量的根本原因。AFNB/APNB外层还会将注意力输出与原输入 concat 后经 1x1 卷积融合conv_bn并施加dropout_prob0.05的 Dropout 增强泛化。三、官方配置逐项解析PaddleSeg 为 ANN 提供了 4 份开箱即用的训练配置位于 configs/ann分别覆盖两种主干ResNet50_vd / ResNet101_vd在两类主干输出步长output_stride8与两大数据集Cityscapes、Pascal VOC 12Aug上的组合配置文件主干数据集输入分辨率训练轮数itersann_resnet50_os8_cityscapes_1024x512_80k.ymlResNet50_vdCityscapes1024x51280000ann_resnet101_os8_cityscapes_1024x512_80k.ymlResNet101_vdCityscapes1024x51280000ann_resnet50_os8_voc12aug_512x512_40k.ymlResNet50_vdPascal VOC 12Aug512x51240000ann_resnet101_os8_voc12aug_512x512_40k.ymlResNet101_vdPascal VOC 12Aug512x512400003.1 Cityscapes 配置以 ResNet50 为例以 ann_resnet50_os8_cityscapes_1024x512_80k.yml 为例完整配置如下_base_: ../_base_/cityscapes.yml batch_size: 2 iters: 80000 lr_scheduler: type: PolynomialDecay learning_rate: 0.01 power: 0.9 end_lr: 1.0e-5 loss: types: - type: CrossEntropyLoss coef: [1, 0.4] model: type: ANN backbone: type: ResNet50_vd output_stride: 8 pretrained: https://bj.bcebos.com/paddleseg/dygraph/resnet50_vd_ssld_v2.tar.gz backbone_indices: [2, 3] key_value_channels: 256 inter_channels: 512 psp_size: [1, 3, 6, 8] enable_auxiliary_loss: True align_corners: False pretrained: null该文件通过_base_继承 configs/base/cityscapes.yml后者提供了数据集Cityscapesdataset_root: data/cityscapes、数据增强流水线ResizeStepScaling0.5~2.0 倍随机缩放、RandomPaddingCrop裁剪 1024x512、随机水平翻转、RandomDistort亮度/对比度/饱和度扰动、Normalize归一化以及优化器SGDmomentum0.9weight_decay4.0e-5。ANN 配置只做针对性覆盖二者合并后即为完整训练配置。各关键参数含义如下batch_size: 2/iters: 80000单卡批量大小与总迭代数。Cityscapes 分辨率较大1024x512配合注意力模块的显存占用官方取 batch_size2lr_schedulerPolynomialDecay多项式衰减初始学习率 0.01、power0.9、最终学习率end_lr: 1.0e-5VOC 基础配置中 end_lr 为 0loss主分支与辅助分支均使用CrossEntropyLoss系数coef: [1, 0.4]表示辅助损失权重为 0.4与enable_auxiliary_loss: True一一对应backboneResNet50_vd且output_stride: 8即通过 dilation 策略将主干输出步长控制为 8保留较高分辨率特征pretrained为官方 SSLD 预训练权重地址backbone_indices: [2, 3]取主干第 3、4 stage 输出分别作为低层/高层特征key_value_channels: 256AFNB 与 APNB 中自注意力 key/value 的通道数对应源码中key_channels/value_channelsinter_channels: 512APNB 模块的输入输出通道数即SelfAttentionBlock_APNB的out_channelspsp_size: [1, 3, 6, 8]金字塔池化的输出尺寸列表决定注意力计算的代表点数量align_corners: FalseF.interpolate的对齐参数。源码注释明确指出特征尺寸为偶数如 1024x512时应为False奇数尺寸如 769x769时应为True。3.2 配置继承链101 主干与 VOC 数据集的复用ResNet101 与 VOC 配置充分体现了 PaddleSeg 的配置复用设计ann_resnet101_os8_cityscapes_1024x512_80k.yml 仅两行——继承 ResNet50 的 Cityscapes 配置仅将主干替换为ResNet101_vd并更换对应 SSLD 预训练权重其余超参数完全保持一致ann_resnet50_os8_voc12aug_512x512_40k.yml 继承 configs/base/pascal_voc12aug.yml后者又继承 pascal_voc12.yml通过mode: trainaug启用 VOC 增强训练集trainvalVOC 场景下 batch_size4、输入 512x512、iters40000ann_resnet101_os8_voc12aug_512x512_40k.yml 同样只替换主干。这种基础配置 增量覆盖的层级结构_base_可层层嵌套是 PaddleSeg 所有模型配置的通用组织方式非常适合实验时快速切换主干、调整分辨率与训练轮数。四、官方基准性能下表为 PaddleSeg 官方在 ANN 配置上复现的评测结果评估指标为 mIoUflip 表示水平翻转测试增强msflip 表示多尺度 翻转测试增强原始数据与模型/日志/VisualDL 链接见 configs/ann/README.md4.1 CityscapesModelBackboneResolutionTraining ItersmIoUmIoU (flip)mIoU (msflip)ANNResNet50_OS81024x5128000079.09%79.31%79.90%ANNResNet101_OS81024x5128000080.61%80.98%81.50%4.2 Pascal VOC 2012 AugModelBackboneResolutionTraining ItersmIoUmIoU (flip)mIoU (msflip)ANNResNet50_OS8512x5124000080.82%81.10%81.67%ANNResNet101_OS8512x5124000079.62%79.84%80.33%从表中可以观察到两个有参考价值的现象其一无论数据集与主干如何组合多尺度 翻转测试增强都能稳定带来约 0.7~1 个百分点的 mIoU 提升说明 ANN 的全局上下文建模对输入尺度变化较为敏感其二在 VOC 12Aug 上 ResNet50 反而小幅超过 ResNet10180.82% vs 79.62%这与数据集规模、增强策略及训练轮数均为 40000 iters相关也提示在数据量有限的小数据集上过大的主干未必是最优选择。五、实战训练、验证、预测与导出PaddleSeg 的训练、验证、预测与导出入口统一位于 tools 目录ANN 配置可直接套用。5.1 训练python tools/train.py \ --config configs/ann/ann_resnet50_os8_cityscapes_1024x512_80k.yml \ --do_eval \ --use_vdl \ --save_interval 500 \ --save_dir output/ann_resnet50_cityscapes常用参数说明--do_eval在训练过程中周期评估验证集--use_vdl开启 VisualDL 日志记录--save_interval控制模型保存频率--save_dir指定输出目录。训练前需按 configs/base/cityscapes.yml 中dataset_root: data/cityscapes的要求准备数据目录结构。5.2 验证python tools/val.py \ --config configs/ann/ann_resnet50_os8_cityscapes_1024x512_80k.yml \ --model_path output/ann_resnet50_cityscapes/best_model/model.pdparams验证时使用与训练一致的评价配置并支持--aug_eval与--flip开启多尺度/翻转测试增强对应上文的 mIoU (flip) 与 mIoU (msflip) 指标。5.3 单图预测python tools/predict.py \ --config configs/ann/ann_resnet50_os8_cityscapes_1024x512_80k.yml \ --model_path output/ann_resnet50_cityscapes/best_model/model.pdparams \ --image_path demo.png \ --save_dir output/result5.4 模型导出与部署python tools/export.py \ --config configs/ann/ann_resnet50_os8_cityscapes_1024x512_80k.yml \ --model_path output/ann_resnet50_cityscapes/best_model/model.pdparams \ --save_dir output/export导出产物为静态图推理模型可进一步配合 deploy 目录下的 Python、C、FastDeploy 等部署方案使用。六、总结与扩展建议ANN 在 PaddleSeg 中的落地具备完整的论文 → 源码 → 配置 → 权重 → 基准闭环源码层面paddleseg/models/ann.py 以 AFNB/APNB 两大模块精准复现论文的非对称金字塔注意力机制配置层面configs/ann 的 4 份 YAML 通过_base_继承机制覆盖了两大主流数据集与两种主干基准层面官方给出了可复现的 mIoU 数据供对照。若希望基于 ANN 做二次开发可以关注以下几个切入点调整psp_size改变注意力代表点数量以权衡精度与速度修改key_value_channels/inter_channels控制模块容量切换backbone_indices改变低层/高层特征的选取层级在 configs/base的数据增强流水线上叠加自定义 transform 以适配新数据集。这些都是不改动模型代码即可完成的实验变量非常适合作为理解非局部 金字塔池化这一经典组合的入门与进阶实验。赞分享人工智能计算机视觉预训练【免费下载链接】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 中的 FCN HRNetCityscapes 与 Pascal VOC 语义分割配置全解析PaddleSeg 中的 FCN HRNetCityscapes 与 Pascal VOC 语义分割配置全解析 导读 本文围绕 PaddleSeg 仓库中人工智能计算机视觉预训练PaddleSeg 中的 DNLNetDisentangled Non-Local Networks解耦非局部注意力语义分割模型原理、配置与实战指南PaddleSeg 中的 DNLNetDisentangled Non Local Networks解耦非局部注意力语义分割模型原理、配置与实战指南 导读人工智能计算机视觉预训练PaddleSeg 中 BiSeNetV1 实时语义分割实战网络架构、Cityscapes 训练配置与源码解析PaddleSeg 中 BiSeNetV1 实时语义分割实战网络架构、Cityscapes 训练配置与源码解析 BiSeNetV1Bilateral Seg人工智能计算机视觉预训练上一篇BilibiliDown免费开源B站视频下载终极解决方案下一篇Enterprise Commerce 数据分析接入Vercel Analytics 与 Google Analytics 自由切换指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

拆解MindSpeed LLM:4层架构与核心模块,看懂昇腾大模型训练框架的设计
拆解MindSpeed LLM:4层架构与核心模块,看懂昇腾大模型训练框架的设计

拆解MindSpeed LLM:4层架构与核心模块,看懂昇腾大模型训练框架的设计 【免费下载链接】MindSpeed-LLM 昇腾LLM分布式训练框架 项目地址: https://gitcode.com/Ascend/MindSpeed-LLM MindSpeed LLM 是面向昇腾生态的 LLM 分布式训练框架&#xff0… · 2026/9/25 8:28:21

JavaScript 闭包完全解读:以《You Don‘t Know JS: 作用域与闭包》(you-dont-know-js-ru)第 5 章为例
JavaScript 闭包完全解读:以《You Don‘t Know JS: 作用域与闭包》(you-dont-know-js-ru)第 5 章为例

教程文档 【免费下载链接】you-dont-know-js-ru 📚 Russian translation of "You Dont Know JS" book series 项目地址: https://gitcode.com/gh_mirrors/yo/you-dont-know-js-ru 点击查看 免费下载 本文围绕 you-dont-know-js-ru 仓库中《О… · 2026/9/25 8:28:21

从treg说起:OpenRouter+MCP+CLI+Agent工具链组装实战
从treg说起:OpenRouter+MCP+CLI+Agent工具链组装实战

1. 从 "treg" 这个标题说起:一个被低估的 Agent 工具链入口第一次看到 "treg" 这四个字母,很多人会以为是拼写错误,或者某个内部代号。但如果你最近在折腾 AI Agent 工具链,尤其是围绕 OpenRouter、MCP、CLI … · 2026/9/25 8:28:21

Atlas 300V Pro 24G部署YOLOv5实战:从硬件定位到调优
Atlas 300V Pro 24G部署YOLOv5实战:从硬件定位到调优

刚刚从项目现场回来,电脑上还插着那块Atlas 300V Pro 24G,趁着热乎劲儿把整个部署过程记录下来。这周刚把YOLOv5目标检测模型从GPU服务器迁移到Atlas推理卡上,中间踩了不少坑,也总结出一套比较顺的流程。刚好看到“atlas 300v 24g… · 2026/9/25 9:02:33

自建轻量级CRM系统:技术选型、数据模型与Docker部署实践
自建轻量级CRM系统:技术选型、数据模型与Docker部署实践

有个场景大家一定不陌生:客户联系方式躺在销售个人的Excel里,报价单在微信聊天记录里翻半天,商务催着要客户分析报告,数据却散落在好几个人的电脑上。DeskcommCRM就是冲着这个痛点来的,它不是那种一上来就要求你配齐销… · 2026/9/25 9:02:27

OpenRouter、Agent、CLI与MCP:AI智能体工具链实战与避坑指南
OpenRouter、Agent、CLI与MCP:AI智能体工具链实战与避坑指南

1. 从"treg"这个模糊词说起:它到底指什么第一次看到"treg"这三个字母,我脑子里蹦出来的第一反应是生物学里的调节性T细胞(Regulatory T cell,缩写Treg)。但结合后面跟着的一串热词——OpenRouter、… · 2026/9/25 9:02:02

OpenRouter+CLI+MCP:AI Agent工具链实战与避坑指南
OpenRouter+CLI+MCP:AI Agent工具链实战与避坑指南

1. 从"treg"这个模糊词根说起:它到底指什么第一次看到"treg"这个词,很多人会一头雾水。它不像"agent"、"CLI"、"MCP"那样在技术圈有明确的指向,更像是一个被截断的词根或者某个内部代号。… · 2026/9/25 9:02:02

51core社区项目:ASP.NET Core从入门到企业级实战避坑指南
51core社区项目:ASP.NET Core从入门到企业级实战避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 9:01:56

网络安全能力成长地图:从物理层到应用层的实战闭环
网络安全能力成长地图:从物理层到应用层的实战闭环

1. 这不是“扫盲课”,而是一张可执行的网络安全能力成长地图很多人点开标题,第一反应是:“又来一套‘从0到1’的泛泛而谈”。我完全理解——过去三年,我给27家中小企业的IT负责人做过安全加固咨询,几乎每场开场都会听到… · 2026/9/25 9:01:56

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码