一句话定义
CNN 的基础原理(卷积特征提取、权值共享、层级抽象)本站不展开——深度学习知识站已覆盖;这里聚焦视觉任务专用的一层:骨干网络(backbone)如何逐级下采样、逐层抽象,并为各类下游任务头提供特征。
为什么重要
分类、检测、分割、跟踪共用同一批骨干网络;「任务差异体现在头部,共性沉淀在骨干」是现代视觉系统的基本架构事实。选错骨干(算力不匹配、预训练域不符)是最常见的工程浪费,理解骨干的演进逻辑才能做出合理选型。
直观类比
骨干像一条流水线的「粗加工车间」:原图进来,先在满分辨率上认出线条与颜色(浅层),几道工序后变成浓缩的「材料清单」(深层特征图),下游车间(检测头、分割头)各自领料加工;浅层看得细、深层看得懂,特征金字塔就是让两个车间都能取料。
前置知识
kp-002(卷积与输出尺寸公式);库外的 CNN 基础(卷积/池化/激活)由深度学习站覆盖。
核心概念
- 骨干网络(Backbone):负责从图像到通用特征的主体网络,与任务头(head)分离。
- 特征层级:浅层高分辨率低语义(边缘、纹理),深层低分辨率高语义(部件、物体)。
- 残差连接:y = x + F(x),让深层网络以「学增量」的方式可训练。
- 下采样与步幅(stride):每 2 倍下采样为一个 stage,常见骨干输出 stride 4–32 的多级特征。
- 感受野:一个输出神经元能「看到」的输入区域,随深度与下采样增长。
- FPN(特征金字塔):把深层语义上采样、浅层细节横向连接,为检测/分割提供多尺度特征。
原理与机制
视觉骨干的通用配方是「stem 卷积 → 四个 stage(每个 stage 内若干块,块间下采样)→ 输出 C2–C5 多级特征」。VGG 用堆叠 3×3 卷积证明深度有效但 19 层后饱和;ResNet 的恒等映射把优化目标改为学习残差,网络得以推到上百层:梯度可沿恒等捷径直达浅层,误差随深度的退化被消除。选型三要素:算力预算(FLOPs/参数量)、预训练数据域(ImageNet vs 自监督)、特征分辨率需求(密集任务偏好 HRNet/ConvNeXt-T 这类保持分辨率的变体)。现代演进把「卷积、注意力、重参数化」混搭,但多级特征输出这一接口约定从未改变。
公式与模型
y = x + F(x) (残差块:F 为 3×3 卷积 ×2 + BN + ReLU)
下采样: out = ⌊(N + 2p − k) / s⌋ + 1,s=2 时空间尺寸减半
感受野: RF_new = RF_old + (k − 1) · Π(此前各层 stride)图示
实例与案例
同一检测任务(COCO 12 epoch):ResNet-50 + FPN 是基准;换 ConvNeXt-T 可小幅提升 mAP 但推理时延接近;边缘端换 MobileNetV3 参数量降一个量级、mAP 掉若干点——选型即三点折中。自监督预训练(DINOv2)在无标注域迁移上常优于 ImageNet 有监督预训练,是近年骨干选型的新变量。
import torch
backbone = torch.hub.load('pytorch/vision', 'resnet50', weights='IMAGENET1K_V2')
backbone.fc = torch.nn.Identity() # 只取特征,丢弃分类头
feat = backbone(images) # (B, 2048, H/32, W/32)常见误区
- 把骨干当任务本身:换更强骨干不必然涨点,瓶颈常在数据质量与标注一致性(见 kp-025)。
- 忽略预训练域偏移:医学、遥感、红外图像用 ImageNet 预训练初始化常不如从零训练或域内自监督。
- 只比 mAP 不比时延:FLOPs 与实际时延非线性相关,算子访存比才是瓶颈,选型必须实测端侧时延。
与其他知识点的关系
kp-016 分类是骨干最简单的任务头;kp-017/019 的检测与分割都以 FPN 接口取料;kp-021 说明注意力骨干何时替代卷积骨干。
自测题
- 残差连接解决什么问题?
答案要点:深层网络的退化(degradation)问题;恒等捷径让梯度直达浅层,把学习目标改写为残差。
- 浅层与深层特征各擅长什么?
答案要点:浅层高分辨率、低语义,利于定位细节;深层低分辨率、高语义,利于识别类别;FPN 融合两者。
- 为什么密集预测任务偏爱高分辨率骨干?
答案要点:逐像素输出需要精确定位,过度下采样会损失边界精度,HRNet 类骨干全程保持高分辨率。
延伸阅读
- He 2015《Deep Residual Learning for Image Recognition》
- kp-016 看骨干最早的评分场——ImageNet 分类