视觉深度学习骨架:从 CNN 引用到骨干网络

核心04-深度学习视觉预计 20 分钟骨干网络ResNetCNN特征层级

前置知识点

kp-002 滤波与卷积

一句话定义

CNN 的基础原理(卷积特征提取、权值共享、层级抽象)本站不展开——深度学习知识站已覆盖;这里聚焦视觉任务专用的一层:骨干网络(backbone)如何逐级下采样、逐层抽象,并为各类下游任务头提供特征。

为什么重要

分类、检测、分割、跟踪共用同一批骨干网络;「任务差异体现在头部,共性沉淀在骨干」是现代视觉系统的基本架构事实。选错骨干(算力不匹配、预训练域不符)是最常见的工程浪费,理解骨干的演进逻辑才能做出合理选型。

直观类比

骨干像一条流水线的「粗加工车间」:原图进来,先在满分辨率上认出线条与颜色(浅层),几道工序后变成浓缩的「材料清单」(深层特征图),下游车间(检测头、分割头)各自领料加工;浅层看得细、深层看得懂,特征金字塔就是让两个车间都能取料。

前置知识

kp-002(卷积与输出尺寸公式);库外的 CNN 基础(卷积/池化/激活)由深度学习站覆盖。

核心概念

原理与机制

视觉骨干的通用配方是「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)

图示

输入 x F(x) 3×3 恒等捷径 + y = x + F(x) C2 细节 C3 纹理 C4 部件 C5 语义 →FPN

实例与案例

同一检测任务(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-016 分类是骨干最简单的任务头;kp-017/019 的检测与分割都以 FPN 接口取料;kp-021 说明注意力骨干何时替代卷积骨干。

自测题

  1. 残差连接解决什么问题?

答案要点:深层网络的退化(degradation)问题;恒等捷径让梯度直达浅层,把学习目标改写为残差。

  1. 浅层与深层特征各擅长什么?

答案要点:浅层高分辨率、低语义,利于定位细节;深层低分辨率、高语义,利于识别类别;FPN 融合两者。

  1. 为什么密集预测任务偏爱高分辨率骨干?

答案要点:逐像素输出需要精确定位,过度下采样会损失边界精度,HRNet 类骨干全程保持高分辨率。

延伸阅读

相关知识点

kp-016 图像分类与 ImageNet 里程碑kp-021 Vision Transformer 与视觉基础模型