新闻详情

新闻详情

首页 / 资讯中心 / 详情

PaddleSeg 骨干网络 API 详解:ResNet_vd、HRNet、MobileNetV3 与 XceptionDeeplab 的实现与配置实战

发布时间:2026/9/25 5:38:10来源:尧图网络
PaddleSeg 骨干网络 API 详解:ResNet_vd、HRNet、MobileNetV3 与 XceptionDeeplab 的实现与配置实战
人工智能计算机视觉预训练【免费下载链接】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 通过paddleseg.models.backbones子包为语义分割模型提供特征提取骨干网络backbone本文以官方 API 文档docs/apis/backbones/为核心逐一讲解 ResNet_vd、HRNet、MobileNetV3、XceptionDeeplab 四类骨干的参数含义与源码实现细节并结合模型注册机制与真实配置文件帮助你在训练、微调或构建自定义分割模型时正确选用和配置骨干网络。一、骨干网络包的结构与注册机制paddleseg.models.backbones子包是语义分割模型的特征提取层集合。从 paddleseg/models/backbones/init.py 可以看到该包按模块聚合了仓库中全部骨干实现from .hrnet import * from .resnet_vd import * from .xception_deeplab import * from .mobilenetv3 import * from .vision_transformer import * from .swin_transformer import * from .mobilenetv2 import * from .mix_transformer import * from .stdcnet import * from .lite_hrnet import * from .shufflenetv2 import * from .ghostnet import * from .cae import * from .top_transformer import * from .uhrnet import * from .efficientformerv2 import * from .hrformer import * from .strideformer import * from .vit_adapter import * from .mscan import * from .seaformer import * from .pidnet import * from .resnet_ms3 import *即除了本文重点讲解的四个骨干仓库还内置了 ViT、Swin-Transformer、MobileNetV2、GhostNet、SHUFFLENetV2、Lite-HRNet、UHRNet、SEANet、PIDNet、StrideFormer 等更多实现。官方 API 文档backbones.md 与中文 backbones_cn.md重点描述了其中最常用的 ResNet_vd、HRNet、MobileNetV3 和 XceptionDeeplab。组件注册为什么配置里可以写type: HRNet_W18每个骨干的构造函数都通过manager.BACKBONES.add_component装饰器注册。例如 paddleseg/models/backbones/hrnet.py 中manager.BACKBONES.add_component def HRNet_W18(**kwargs): model HRNet(stage1_num_modules1, stage1_num_blocks[4], stage1_num_channels[64], stage2_num_modules1, stage2_num_blocks[4, 4], stage2_num_channels[18, 36], stage3_num_modules4, stage3_num_blocks[4, 4, 4], stage3_num_channels[18, 36, 72], stage4_num_modules3, stage4_num_blocks[4, 4, 4, 4], stage4_num_channels[18, 36, 72, 144], **kwargs) return modelBACKBONES是定义在 paddleseg/cvlibs/manager.py 中的ComponentManager(backbones)实例它维护一个“组件名 → 构造函数”的字典。因此你只需在 YAML 配置里写出注册名框架即可按名实例化# 真实配置示例OCRNet HRNet_W18Cityscapes 1024x512 model: type: OCRNet backbone: type: HRNet_W18 pretrained: https://bj.bcebos.com/paddleseg/dygraph/hrnet_w18_ssld.tar.gz num_classes: 19 backbone_indices: [0]完整配置可参考 configs/ocrnet/ocrnet_hrnetw18_cityscapes_1024x512_160k.yml。backbone_indices用于选择骨干输出特征列表中参与融合的层级ResNet 类骨干返回四个阶段的特征列表HRNet 返回拼接后的单张特征图故此处取[0]。二、ResNet_vdvd 风格改造的 ResNetResNet_vd 骨干源于论文 Bag of Tricks for Image Classification with Convolutional Neural Networks实现位于 paddleseg/models/backbones/resnet_vd.py。API 签名如下class paddleseg.models.backbones.Resnet_vd( layers 50, output_stride None, multi_grid (1, 1, 1), lr_mult_list (0.1, 0.1, 0.2, 0.2), pretrained None )参数说明参数类型说明默认值layersintResNet_vd 的层数支持[18, 34, 50, 101, 152, 200]50output_strideint输出特征相对输入图像的下采样倍数取 8 或 168multi_gridtuple/liststage4block 3的空洞率dilation网格用于扩大卷积感受野(1, 1, 1)pretrainedstr预训练模型权重路径None源码中的断言保证了layers只能取合法值并据此决定每个阶段的 block 数与通道数supported_layers [18, 34, 50, 101, 152, 200] assert layers in supported_layers, ... if layers 18: depth [2, 2, 2, 2] elif layers 34 or layers 50: depth [3, 4, 6, 3] elif layers 101: depth [3, 4, 23, 3] elif layers 152: depth [3, 8, 36, 3] elif layers 200: depth [3, 12, 48, 3]output_stride 与空洞卷积的关系output_stride通过dilation_dict控制哪些阶段使用空洞卷积是分割模型选择骨干时的关键参数dilation_dict None if output_stride 8: dilation_dict {2: 2, 3: 4} elif output_stride 16: dilation_dict {3: 2}即output_stride8时第 3、4 个 stage 分别用 dilation 2 和 4output_stride16时仅第 4 个 stage 用 dilation 2。multi_grid会进一步作用于最后一个 stageblock 3时dilation_rate dilation_rate * multi_grid[i]例如multi_grid(1, 2, 4)是 DeepLabV3 系列常用的设置。输出特征与 feat_channelsforward返回各 stage 的输出特征列表供解码器按backbone_indices选取feat_list [] for stage in self.stage_list: for block in stage: y block(y) feat_list.append(y) return feat_list通道数由self.feat_channels记录layers ≥ 50 时为[256, 512, 1024, 2048]浅层网络为[64, 128, 256, 512]。此外ConvBNLayer中带有is_vd_mode逻辑空洞卷积前先做AvgPool2D这正是 vdvirtual dense命名对应的 Bag of Tricks 改造点。常用变体paddleseg.models.backbones.ResNet18_vd(**args) # layers18 paddleseg.models.backbones.ResNet34_vd(**args) # layers34 paddleseg.models.backbones.ResNet50_vd(**args) # layers50 paddleseg.models.backbones.ResNet101_vd(**args) # layers101 paddleseg.models.backbones.ResNet152_vd(**args) # layers152 paddleseg.models.backbones.ResNet200_vd(**args) # layers200其中ResNet18_vd、ResNet50_vd、ResNet101_vd通过装饰器注册进了BACKBONES管理器可直接用于配置文件的type字段见 resnet_vd.py。三、HRNet全程高分辨率并行结构HRNet 源于 HRNet: Deep High-Resolution Representation Learning for Visual Recognition实现位于 paddleseg/models/backbones/hrnet.py。它通过 stage1stage4 四个阶段、每阶段多分辨率并行分支来保持高分辨率特征class paddleseg.models.backbones.HRNet( pretrained None, stage1_num_modules 1, stage1_num_blocks (4,), stage1_num_channels (64,), stage2_num_modules 1, stage2_num_blocks (4, 4), stage2_num_channels (18, 36), stage3_num_modules 4, stage3_num_blocks (4, 4, 4), stage3_num_channels (18, 36, 72), stage4_num_modules 3, stage4_num_blocks (4, 4, 4, 4), stage4_num_channels (18, 36, 72, 14), has_se False, align_corners False )参数说明参数类型说明默认值pretrainedstr预训练模型权重路径Nonestage1_num_modulesintstage1 的模块HighResolutionModule数量1stage1_num_blocksliststage1 每个模块的 block 数(4,)stage1_num_channelsliststage1 每个分支的通道数(64,)stage2_num_modulesintstage2 的模块数量1stage2_num_blocksliststage2 每个模块的 block 数(4, 4)stage2_num_channelsliststage2 每个分支的通道数(18, 36)stage3_num_modulesintstage3 的模块数量4stage3_num_blocksliststage3 每个模块的 block 数(4, 4, 4)stage3_num_channelsliststage3 每个分支的通道数(18, 36, 72)stage4_num_modulesintstage4 的模块数量3stage4_num_blocksliststage4 每个模块的 block 数(4, 4, 4, 4)stage4_num_channelsliststage4 每个分支的通道数(18, 36, 72, 144)has_sebool是否使用 Squeeze-and-Excitation 模块Falsealign_cornersboolF.interpolate参数特征尺寸偶数如 1024x512应设 False奇数如 769x769设 TrueFalse前向结构Transition Stage 分支融合从源码结构看HRNet 前向流程为conv1-1 → conv1-2 → layer1 → tr1 → stage2 → tr2 → stage3 → tr3 → stage4其中TransitionLayer负责在分支数增加时做 1x1/3x3 卷积过渡每个Stage内含num_modules个HighResolutionModule分支卷积 FuseLayers融合。输出阶段stage4 的四路特征中被上采样的三路会与最高分辨率分支在通道维拼接size st4[0].shape[2:] x1 F.interpolate(st4[1], size, modebilinear, align_cornersself.align_corners) x2 F.interpolate(st4[2], size, modebilinear, align_cornersself.align_corners) x3 F.interpolate(st4[3], size, modebilinear, align_cornersself.align_corners) x paddle.concat([st4[0], x1, x2, x3], axis1) return [x]因此feat_channels [sum(stage4_num_channels)]例如 HRNet_W18 输出单张 270 通道183672144的特征图这正是配置中backbone_indices: [0]的由来。align_corners与特征图尺寸奇偶性必须匹配否则双线性插值会引入系统偏差这是使用 HRNet 时最易踩的坑。常用变体与宽度含义W后的数字即 stage2 第一分支通道数宽度paddleseg.models.backbones.HRNet_W18_Small_V1(**kwargs) # 轻量版stage4 仅 1 个模块 paddleseg.models.backbones.HRNet_W18_Small_V2(**kwargs) # 略大于 V1 paddleseg.models.backbones.HRNet_W18(**kwargs) # 标准 W18 paddleseg.models.backbones.HRNet_W30(**kwargs) paddleseg.models.backbones.HRNet_W32(**kwargs) paddleseg.models.backbones.HRNet_W40(**kwargs) paddleseg.models.backbones.HRNet_W44(**kwargs) paddleseg.models.backbones.HRNet_W48(**kwargs) paddleseg.models.backbones.HRNet_W60(**kwargs) paddleseg.models.backbones.HRNet_W64(**kwargs)以 HRNet_W30 为例其分支通道为 (30, 60, 120, 240)其余结构与 W18 一致——即宽度缩放只改变各分支通道数模块/block 数不变。四、MobileNetV3轻量级的深度可分离卷积骨干MobileNetV3 源于 Searching for MobileNetV3实现位于 paddleseg/models/backbones/mobilenetv3.py。class paddleseg.models.backbones.MobileNetV3( pretrained None, scale 1.0, model_name small, output_stride None )参数说明参数类型说明默认值pretrainedstr预训练模型权重路径Nonescalefloat通道数缩放系数官方建议 large 模型可设置比 small 更高的 scale1.0model_namestr模型类型取small或largesmalloutput_strideint输出特征相对输入的步长取 [2, 4, 8, 16, 32] 之一None结构配置与 output_stride 实现细节源码中的NET_CONFIG定义了 large / small 两种深度可分离块序列每项含 kernel、膨胀通道、输出通道、SE、激活、strideNET_CONFIG { large: [ [3, 16, 16, False, relu, 1], [3, 64, 24, False, relu, 2], [3, 72, 24, False, relu, 1], [5, 72, 40, True, relu, 2], ... [5, 960, 160, True, hardswish, 1], # x32 ], small: [ [3, 16, 16, True, relu, 2], [3, 72, 24, False, relu, 2], ... [5, 576, 96, True, hardswish, 1], ] } OUT_INDEX {large: [2, 5, 11, 14], small: [0, 2, 7, 10]}out_index指定了哪些块之后抽取特征large 在 x4/x8/x16/x32 处共 4 个层级small 为 4 个层级feat_channels随之计算。实现中通过_make_divisible(v, divisor8)保证通道数按 8 对齐。值得注意的是仓库额外提供了large_os8/small_os8两套配置将后段 stride 改为 1 并引入 dilation如1, 2、1, 4把输出步长从 32 降到 8对应MobileNetV3_large_x1_0_os8、MobileNetV3_small_x1_0_os8等注册变体可直接服务于需要 1/8 分辨率特征的分割任务。常用变体命名规则为MobileNetV3_{model_name}_x{scale}paddleseg.models.backbones.MobileNetV3_small_x0_35(**args) # scale0.35, small paddleseg.models.backbones.MobileNetV3_small_x0_5(**args) # scale0.5, small paddleseg.models.backbones.MobileNetV3_small_x0_75(**args) # scale0.75, small paddleseg.models.backbones.MobileNetV3_small_x1_0(**args) # scale1.0, small paddleseg.models.backbones.MobileNetV3_small_x1_25(**args) # scale1.25, small paddleseg.models.backbones.MobileNetV3_large_x0_35(**args) # scale0.35, large paddleseg.models.backbones.MobileNetV3_large_x0_5(**args) # scale0.5, large paddleseg.models.backbones.MobileNetV3_large_x0_75(**args) # scale0.75, large paddleseg.models.backbones.MobileNetV3_large_x1_0(**args) # scale1.0, large paddleseg.models.backbones.MobileNetV3_large_x1_25(**args) # scale1.25, large在配置文件中可写成model: type: PP-LiteSeg backbone: type: MobileNetV3_small_x1_0 pretrained: /path/to/mobilenetv3_small_x1_0.pdparamsMobileNetV3_small_x1_0同样经过manager.BACKBONES.add_component注册可被按名构建。五、XceptionDeeplabDeepLabV3 的 Xception 骨干XceptionDeeplab 是 DeepLabV3 使用的 Xception 骨干源于 Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation实现位于 paddleseg/models/backbones/xception_deeplab.py。class paddleseg.models.backbones.XceptionDeeplab( backbone, pretrained None, output_stride 16 )参数说明参数类型说明默认值backbonestr选择 Xception_DeepLab 变体取xception_41、xception_65、xception_71之一必填—pretrainedstr预训练模型权重路径Noneoutput_strideint输出特征相对输入的步长取 8 或 1616三个变体的差异体现在 entry/middle/exit flow 的瓶颈参数中源码gen_bottleneck_params给出if backbone xception_65: bottleneck_params { entry_flow: (3, [2, 2, 2], [128, 256, 728]), middle_flow: (16, 1, 728), exit_flow: (2, [2, 1], [[728, 1024, 1024], [1536, 1536, 2048]]) } elif backbone xception_41: # entry_flow 相同middle_flow 重复 8 次xception_65 为 16 次 elif backbone xception_71: # entry_flow 更深(5, [2, 1, 2, 1, 2], [128, 256, 256, 728, 728])即 41/65/71 分别对应中间 flow 重复 8/16 次、entry flow 3/3/5 个块的网络深度。构建时通过check_stride(s * stride, output_stride)在累计下采样达到output_stride后把后续 stride 强制置 1从而精确控制输出分辨率骨干输出feat_channels [128, 2048]entry flow 首块与 exit flow 末端特征分别对应 DeepLabV3 编码器低层特征与高层特征输入。常用变体paddleseg.models.backbones.Xception41_deeplab(**args) # xception_41 paddleseg.models.backbones.Xception65_deeplab(**args) # xception_65 paddleseg.models.backbones.Xception71_deeplab(**args) # xception_71六、选型与配置小结结合上述实现事实实际项目中可按如下思路选型精度优先、显存充足选HRNet_W18/W32/W48高分辨率四分支特征或ResNet101_vd output_stride8 multi_grid(1,2,4)大感受野典型配置如 configs/fcn/fcn_hrnetw48_cityscapes_1024x512_80k.yml轻量/端侧场景选MobileNetV3_small_x0_75一类小 scale 变体或 os8 系列换取更高分辨率特征复现 DeepLabV3 原始设定选Xception65_deeplaboutput_stride8/16按需调整。通用注意事项pretrained指向分类预训练权重.pdparams/.pdmodel路径构造时由init_weight加载HRNet 的align_corners必须与输入特征图尺寸奇偶匹配偶数 1024x512 设 False奇数 769x769 设 TrueResNet_vd 的output_stride只支持 8/16且multi_grid仅作用于最后一个 stage配置文件中backbone.type必须使用注册名如HRNet_W18、ResNet50_vdbackbone_indices需与骨干返回的特征层数匹配HRNet/XceptionDeeplab 等单/双输出骨干与 ResNet 四阶段骨干不同。以上参数与行为均可在对应源码文件中核对resnet_vd.py、hrnet.py、mobilenetv3.py、xception_deeplab.py文档原文见 docs/apis/backbones/backbones.md英文与 docs/apis/backbones/backbones_cn.md中文。赞分享人工智能计算机视觉预训练【免费下载链接】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 语义分割骨干网络 API 详解ResNet_vd、HRNet、MobileNetV3 与 XceptionDeeplab 的参数、实现与配置实践PaddleSeg 语义分割骨干网络 API 详解ResNet_vd、HRNet、MobileNetV3 与 XceptionDeeplab 的参数、实现与配人工智能计算机视觉预训练PaddleSeg 骨干网络 API 深度解析ResNet_vd、HRNet、MobileNetV3 与 XceptionDeeplab 的实现原理与实战用法PaddleSeg 骨干网络 API 深度解析ResNet_vd、HRNet、MobileNetV3 与 XceptionDeeplab 的实现原理与实战用法人工智能计算机视觉预训练PaddleSeg 骨干网络 API 详解paddleseg.models.backbones 模块的配置参数与源码级实现解析PaddleSeg 骨干网络 API 详解paddleseg.models.backbones 模块的配置参数与源码级实现解析 本文围绕 PaddleSeg人工智能计算机视觉预训练上一篇HiDT 论文精读CVPR 2020 Oral《无需域标签的高分辨率昼夜转换》核心贡献梳理下一篇Cursor Team Kit插件内部开发工作流的秘密武器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

eslint-plugin-react 规则详解:react/jsx-props-no-spread-multi —— 禁止重复展开同一标识符 2026/9/25 6:05:14

eslint-plugin-react 规则详解:react/jsx-props-no-spread-multi —— 禁止重复展开同一标识符

开发工具代码质量静态分析 【免费下载链接】eslint-plugin-react React-specific linting rules for ESLint 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-react 点击查看 免费下载 📝 本文是 eslint-plugin-react 插件中 react/jsx-pro…

阅读更多 →
Dart Analysis Server 插件快速修复(Quick Fix)编写指南:基于 analysis_server_plugin 包 2026/9/25 6:05:14

Dart Analysis Server 插件快速修复(Quick Fix)编写指南:基于 analysis_server_plugin 包

编程语言编译器语言运行时标准库开发工具 【免费下载链接】sdk The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more. 项目地址: https://gitcode.com/gh_mirrors/sdk1/sdk 点击查看 免费下载 本指南面向需要为 Dart 分析…

阅读更多 →
深入解析 @microsoft/fast-colors 的 Histogram.significantBits 属性:直方图降位量化与内存权衡 2026/9/25 6:05:14

深入解析 @microsoft/fast-colors 的 Histogram.significantBits 属性:直方图降位量化与内存权衡

前端UI组件 【免费下载链接】fast The adaptive interface system for modern web experiences. 项目地址: https://gitcode.com/gh_mirrors/fa/fast 点击查看 免费下载 导读 Histogram.significantBits 是 microsoft/fast-colors 颜色量化管线中控制颜色精度与内…

阅读更多 →
ESPnet egs2 说话人日志示例的 Kaldi 依赖解析:mini_librispeech/diar1 与 `wav-to-duration` 2026/9/25 6:05:14

ESPnet egs2 说话人日志示例的 Kaldi 依赖解析:mini_librispeech/diar1 与 `wav-to-duration`

人工智能语音音频深度学习NLP 【免费下载链接】espnet End-to-End Speech Processing Toolkit 项目地址: https://gitcode.com/gh_mirrors/es/espnet 点击查看 免费下载 本文围绕 egs2/mini_librispeech/diar1/NOTE.md 展开,说明一个容易被忽略的部署事…

阅读更多 →
Apache DataFusion 循环依赖检查工具 depcheck:原理、源码解析与 CI 实践 2026/9/25 6:05:08

Apache DataFusion 循环依赖检查工具 depcheck:原理、源码解析与 CI 实践

大数据数据分析后端 【免费下载链接】datafusion Apache DataFusion SQL Query Engine 项目地址: https://gitcode.com/gh_mirrors/datafu/datafusion 点击查看 免费下载 导读 Apache DataFusion 是一个以模块化多 crate 架构著称的 Rust 查询引擎,其仓…

阅读更多 →
Humanizer InDate.Five 深入解析:用 DateOnly 流畅表达“5 天/周/月/年后“的日期 2026/9/25 6:05:08

Humanizer InDate.Five 深入解析:用 DateOnly 流畅表达“5 天/周/月/年后“的日期

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 本文聚…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉