【免费下载链接】pvt_v2_b3
PVTv2(Pyramid Vision Transformer v2)是轻量级分层 Transformer 视觉骨干网络的代表作。pvt_v2_b3是其中base 规模的 B3 版本——它在 Transformer 层里融入卷积操作,无需位置编码即可学习图像数据,并天然输出多尺度特征图,是语义分割、目标检测、深度估计等密集预测任务的常用骨干。
本文带你从原理到参数,一文读懂 PVTv2 b3 的设计精髓。
一、为什么需要 PVTv2:三大设计亮点
纯 Transformer 处理图像时有两个天然短板:
- 缺乏局部归纳偏置——CNN 的卷积天生擅长捕捉局部纹理,Transformer 的注意力机制对此"无感"
- 单一尺度输出——标准 ViT 只输出全局特征,无法直接用于逐像素预测任务
PVTv2 给出了一组优雅的解决方案,README.md 将其概括为三点:
| 设计决策 | 解决的问题 | 核心手段 |
|---|---|---|
| 卷积融入 Transformer | 局部特征学习能力弱 | Patch Embedding 与空间降采样均改用卷积 |
| 无需位置编码 | 位置嵌入参数冗余、泛化受限 | 卷积与 SR 机制本身编码了空间信息 |
| 多尺度特征输出 | 单一尺度不适配密集任务 | 4 个 Stage 输出 1/4~1/32 共 4 组特征图 |
💡 这三点正是 PVTv2 被 SegFormer、Deformable DETR 等热门模型选作骨干的原因。
二、PVTv2-B3 架构全景:4 个 Stage 如何工作
pvt_v2_b3由4 个 Stage(编码器 Block)组成,每个 Stage 包含若干 Transformer Block。从 config.json 可以读出 B3 的完整超参数:
| 参数(config.json) | Stage 1 | Stage 2 | Stage 3 | Stage 4 |
|---|---|---|---|---|
hidden_sizes(通道数) | 64 | 128 | 320 | 512 |
depths(Block 层数) | 3 | 4 | 18 | 3 |
num_attention_heads(注意力头) | 1 | 2 | 5 | 8 |
patch_sizes(卷积核) | 7×7 | 3×3 | 3×3 | 3×3 |
strides(下采样步长) | 4 | 2 | 2 | 2 |
sr_ratios(SR 压缩比) | 8 | 4 | 2 | 1 |
📌 Stage 3 堆叠了 18 层 Block,是模型的主力"深加工区",贡献了大部分参数量。
以224×224输入(config.json 中image_size)为例,前向过程的特征分辨率变化:
输入图像 224 × 224 × 3 │ ▼ Stage 1:7×7 卷积,stride 4 → 特征图 1/4 56 × 56 × 64 (3136 个 token) │ ▼ Stage 2:3×3 卷积,stride 2 → 特征图 1/8 28 × 28 × 128 (784 个 token) │ ▼ Stage 3:3×3 卷积,stride 2 → 特征图 1/16 14 × 14 × 320 (196 个 token) │ ▼ Stage 4:3×3 卷积,stride 2 → 特征图 1/32 7 × 7 × 512 (49 个 token)最终通过out_features参数(stage1~stage4,见 config.json)把 4 个尺度的特征图全部输出——这就是 PVTv2 的"金字塔"输出的由来。
2.1 卷积替代了哪些"Transformer 组件"
在标准 ViT 中,Patch Embedding 是简单的"切块 + 线性投影"。PVTv2 做了两处关键替换:
① 重叠卷积做 Patch Embedding
用7×7(Stage 1)和3×3(Stage 2~4)的重叠卷积取代线性投影。卷积核在相邻 patch 间共享感受野,相当于在 token 化的同时就完成了局部信息融合——这是"卷积融入 Transformer"的第一步。
② 卷积做空间降采样
Stage 之间不再用简单的 reshape 或 stride 变换,而是用 3×3 卷积 + stride 2 下采样。相比直接丢分辨率,卷积下采样保留了更多上下文,且无需额外可学习的位置嵌入。
🎯 这两步合起来,让 PVTv2 完全抛弃了位置编码:空间关系由卷积的局部感受野和特征图的网格结构隐式承载,省掉一组可学习参数,也让模型对输入分辨率更鲁棒。
三、SR Attention:注意力算力的"减负阀"
Token 序列太长是 Transformer 落地图像的大敌——Stage 1 有 3136 个 token,若做完整自注意力,计算量按 O(n²) 爆炸增长。
PVTv2 的解法是SR(Spatial Reduction)模块:在注意力计算前,先把 token 序列做自适应平均池化再投影,大幅压缩序列长度,注意力算完后再恢复原始分辨率。压缩比由 config.json 中的sr_ratios控制:
| Stage | sr_ratio | 注意力时的 token 数(224 输入) |
|---|---|---|
| Stage 1 | 8 | 3136 →约 400 |
| Stage 2 | 4 | 784 →约 196 |
| Stage 3 | 2 | 196 →约 98 |
| Stage 4 | 1 | 49 → 49(保持,无需再压) |
🧮 粗略估算:Stage 1 的注意力复杂度从 O(3136²) ≈ 985 万降到 O(400²) ≈ 16 万,约 60 倍的计算节省——这就是 PVTv2 能以 43M 参数量跑出高效推理的关键。
配合qkv_bias=true(Q/K/V 投影带偏置,见 config.json),SR Attention 既省算力又保效果。
四、多尺度特征图的实战价值
PVTv2 的金字塔输出(out_indices: [0, 1, 2, 3])对下游任务是"即插即用"的。README.md 列出的四个代表性应用:
| 下游模型 | 任务 | 为什么需要多尺度 |
|---|---|---|
| SegFormer | 语义分割 | 逐像素预测,需要 1/4 到 1/32 全尺度特征融合 |
| Panoptic Segformer | 全景分割 | 实例 + 语义联合,小目标依赖高分辨率层 |
| Deformable DETR | 2D 目标检测 | 多尺度锚点特征提升中小目标召回 |
| GLPN | 单目深度估计 | 密集回归,需要空间细节保留 |
💡 如果你要搭建分割/检测模型,不用换骨干:PVTv2 b3 的 4 组输出天然就是 FPN 式的多尺度输入,接上解码器即可训练。
五、模型文件与预处理配置速览
pvt_v2_b3仓库包含 3 个核心文件:
| 文件 | 作用 |
|---|---|
| model.safetensors | 模型权重(float32,见 config.jsontorch_dtype) |
| config.json | 完整架构超参数(Stage 结构、头数、SR 比例等) |
| preprocessor_config.json | 图像预处理配置 |
预处理要点(来自 preprocessor_config.json):
- 输入尺寸:224 × 224(
size) - 缩放因子:
rescale_factor = 0.00392156862745098(即 /255,把 0~255 映射到 0~1) - 归一化均值:
[0.485, 0.456, 0.406](RGB 三通道) - 归一化标准差:
[0.229, 0.224, 0.225] - 插值方式:
resample = 2(双线性)
这组均值/方差是 ImageNet 统计量,说明 B3 权重是在 ImageNet 上预训练的分类权重(architectures为PvtV2ForImageClassification),可直接作为骨干迁移到下游密集任务。
六、总结:PVTv2 b3 的核心设计记忆点
- 卷积干脏活:Patch Embedding 和空间降采样全用卷积,替代 ViT 的"切块 + 位置编码"
- SR 管算力:
sr_ratios池化压缩 token 序列,注意力复杂度直降一个量级 - 无位置编码:空间信息由卷积感受野和特征图网格隐式表达,少一组参数
- 金字塔输出:4 个 Stage 输出 1/4~1/32 共 4 组特征图,分割/检测/深度即插即用
✅ 记住一句话:PVTv2 = 卷积负责"看局部",Transformer 负责"看全局",SR 负责"省算力"。理解这三点,就抓住了 pvt_v2_b3 的全部精髓。
【免费下载链接】pvt_v2_b3
相关推荐
PVTv2 对比 Swin Transformer:pvt_v2_b2_linear 为何选择卷积加Transformer混合设计
PVTv2 对比 Swin Transformer:pvt_v2_b2_linear 为何选择卷积加Transformer混合设计 PVTv2 和 Swin T
揭秘RT-DETR混合编码器:实时目标检测中多尺度特征的高效处理方案
揭秘RT DETR混合编码器:实时目标检测中多尺度特征的高效处理方案 RT DETR(Real Time DEtection TRansformer)是CVPR
人工智能计算机视觉深度学习终极指南:如何用GroundingDINO实现AI驱动的开放式目标检测革命
终极指南:如何用GroundingDINO实现AI驱动的开放式目标检测革命 GroundingDINO是GitHub上备受瞩目的开源项目,它创新性地将DINO(
人工智能计算机视觉预训练深度学习
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考