卷1 · 深度学习与 CV 基础
1.1 从 CNN 到 ResNet:卷积时代的遗产
展开本章目录与同卷章节
1. 卷积的四种视角(核心中的核心)2. 一个现代卷积块的标准结构3. ResNet:深度的闸门被打开4. CNN 时代留给大模型时代的遗产5. 检测与分割:知道即可6. 卷积让位给了什么?——归纳偏置与数据规模的交易7. 自测题8. 动手作业9. 延伸资源同卷章节1.1 从 CNN 到 ResNet:卷积时代的遗产1.2 注意力机制:从加权检索到万物的基础操作1.3 Transformer 逐层拆解:从 Block 到小 GPT1.4 ViT 与视觉 Transformer 谱系:图像成为 token1.5 自监督三巨头:MAE、CLIP、DINO1.6 CLIP 精读与 zero-shot 评测实操(第一个完整项目)1.7 SAM 与分割基础模型:提示式视觉1.8 检测与分割极简史:知道即可的一章1.9 图像形成与相机模型:给 3D/具身留的几何底座本章目标:用最小的篇幅吃透卷积神经网络——不是为了拥抱传统,而是因为:① 视觉 Transformer 至今仍在用卷积做 patch 化和下采样;② 小数据、小模型、边缘部署场景 CNN 仍是首选;③ CNN 时代沉淀的训练技术(数据增强、初始化、残差、蒸馏)全部延续到了大模型时代。学完标准:能手写 ResNet-18 在 CIFAR-10 上跑到 93%+,并能讲清”为什么残差连接有效”。
1. 卷积的四种视角(核心中的核心)
一维卷积你已熟悉(0.3 章)。二维图像卷积 有四种等价的理解,调试和阅读论文时来回切换:
- 模板匹配:卷积核是一组可学习的权重模板,滑动扫描图像找模式。第一层学到的常是边缘/色块检测器(Gabor 形状),这是数据自己学出来的,不是设计出来的。
- 感受野:输出某一点”看得见”输入的多大范围。堆叠规律:每叠一层 3×3 卷积,感受野 +2——两层 3×3 = 5×5 的感受野,但参数只有 2×9=18 而不是 25,还多了一次非线性。小核堆叠优于大核,这条设计法则统治了 2014–2020。
- 参数共享:同一组核扫过全图 = “猫在左上角和右下角是同一种猫”的先验。这叫平移等变性。全连接层没有这个先验,所以需要更多数据——这个观点是理解”卷积 → Transformer”变迁的钥匙(见第 6 节)。
- 稀疏的矩阵乘法:卷积 = 权重共享的全连接层(用 im2col 展开后就是一次矩阵乘)。所以 GPU 对卷积优化得极好,卷积从不”慢”在数学上,而是”慢”在内存访问模式上。
实用公式(必背):输出尺寸 (输入 N、核 K、填充 P、步长 S)。参数量 (无 bias 时)。
2. 一个现代卷积块的标准结构
- Conv 不带 bias:因为 BN 里本来就有可学习的平移项,加 bias 纯属浪费参数;
- BN 在 0.3 章讲过:稳定各层输入分布;
- 1×1 卷积:跨通道的加权混合,用于降维/升维(bottleneck 结构里先降再升,省算力);
- 池化/步长卷积负责下采样:MaxPool 取局部最大(保显著特征),步长卷积让下采样本身可学习(现代默认)。
3. ResNet:深度的闸门被打开
2015 年之前,网络加深到 20+ 层反而变差——不是过拟合(训练误差也差),而是退化:深层网络难以优化。
残差连接把每个块改成学习”增量”:,其中 是普通卷积堆。
为什么有效(两层解释都要会):
- 梯度直通:反向传播时 ,那个”1”给梯度修了一条高速公路,100 层的梯度也不会层层衰减。消融实验:110 层网络去掉残差后训练误差降不下去,加上后正常——证明是优化问题而非容量问题。
- 学习目标的重塑:网络学的是”在恒等映射基础上改多少”。对多数层来说最优解接近恒等,把恒等设为默认值,让”什么都不做”变得容易——这是所有现代架构(Transformer 残差流、LoRA 的 )共享的哲学:学习增量,而不是从头学。
代码(BasicBlock,背下来,作业要用):
import torch, torch.nn as nn
class BasicBlock(nn.Module):
def __init__(self, cin, cout, stride=1):
super().__init__()
self.conv1 = nn.Conv2d(cin, cout, 3, stride, 1, bias=False)
self.bn1 = nn.BatchNorm2d(cout)
self.conv2 = nn.Conv2d(cout, cout, 3, 1, 1, bias=False)
self.bn2 = nn.BatchNorm2d(cout)
self.shortcut = nn.Sequential() # 默认恒等
if stride != 1 or cin != cout: # 形状不一致时用 1×1 投影
self.shortcut = nn.Sequential(
nn.Conv2d(cin, cout, 1, stride, bias=False),
nn.BatchNorm2d(cout))
def forward(self, x):
out = torch.relu(self.bn1(self.conv1(x)))
out = self.bn2(self.conv2(out))
return torch.relu(out + self.shortcut(x)) # y = x + F(x)
ResNet-18 = 一个 7×7 stem + 4 个 stage(每 stage 2 个 BasicBlock,通道 64→128→256→512)+ 全局平均池化 + 线性头。CIFAR-10 上把 stem 换成 3×3(图像小,7×7 太浪费)。
4. CNN 时代留给大模型时代的遗产
这些技术你会在所有后续章节反复遇到,现在建立索引:
| 技术 | 一句话 | 在大模型时代的下落 |
|---|---|---|
| 数据增强(翻转/裁剪/颜色抖动) | 免费扩数据防过拟合 | VLM 数据管线仍在用(随机裁剪、颜色扰动) |
| 标签平滑 | one-hot 里的 0.9/0.1,防过度自信 | LLM SFT 常用 |
| Mixup/CutMix | 图像线性混合、标签同步混合 | 视觉预训练数据增强标配 |
| 知识蒸馏 | 大模型教小模型(KL + 温度) | 推理侧核心技术,卷5.8 |
| 权重衰减/早停/EMA | 0.4 章已讲 | 全部沿用 |
| Pre-training → Fine-tuning 范式 | ImageNet 预训练 + 下游微调 | 被”自监督预训练 + 指令微调”继承,范式本身没变 |
5. 检测与分割:知道即可
- 检测:YOLO 系(快,工业部署多)、DETR 系(transformer 化);分割:FCN → U-Net(医学影像至今主流)→ Mask R-CNN → SAM。你不需要复现它们,只需要:知道任务定义、知道 U-Net 的编码器-解码器 + 跳跃连接结构(扩散模型的 U-Net 就是它)、知道 SAM 是”可提示分割基础模型”(1.7 章)。
6. 卷积让位给了什么?——归纳偏置与数据规模的交易
卷积内置了两个先验:局部性(近邻像素相关)+ 平移等变。先验强 = 小数据学好,大数据下变成天花板(没法学全局关系,感受野增长太慢)。ViT 的赌注是:把图像切成 16×16 patch 当作 token 序列,用几乎无视觉先验的 Transformer,让数据补足先验——数据规模到亿级后反超 CNN,且天然兼容文本 token(这条兼容性直接通向多模态,卷3 的主角)。
记住这条主线:CV 的十年 = 先验逐渐变少、数据规模逐渐变大、架构逐渐统一到 Transformer。这不是”CNN 错了”,而是不同数据规模下的最优权衡。小数据(医学影像标注贵)场景 CNN/混合架构至今能打。
7. 自测题
- 输入 224×224,3×3 卷积、stride=2、padding=1,输出多大?(112×112,套公式)
- 为什么现代卷积块里 Conv 不带 bias?(BN 的平移参数替代了它)
- 两层 3×3 卷积的感受野等于一层多大卷积?参数量对比?(5×5;18 vs 25,还多一次非线性)
- 残差连接的梯度公式里”1”意味着什么?(梯度至少有一部分不衰减地直通,缓解深层退化)
- “学习增量而非从头学”这个哲学还出现在哪两处?(Transformer 残差流;LoRA 的低秩增量)
- ViT 为什么在大数据下反超 CNN?(弱先验架构容量上限高,数据规模补足先验)
- U-Net 的跳跃连接解决什么问题?(下采样丢失的空间细节通过 skip 直接传给解码器;扩散模型沿用此结构)
8. 动手作业
- 用第 3 节的 BasicBlock 搭 CIFAR 版 ResNet-18(stem 用 3×3,无 maxpool),在 0.2 章训练脚本里替换
Net,目标 ≥93%(配合 TrivialAugment 增强)。 - 训练完后可视化第一层卷积核(
model.features[0].weight归一化后plt.imshow)——亲眼看看”学出来的边缘检测器”。 - 挑战:故意删掉所有 shortcut 再训 20 epoch,对比训练曲线,亲手复现”退化”现象。
- 把你的训练记录写成 README 传 GitHub——作品集第一块砖。
9. 延伸资源
- CS231n 课程笔记(卷积网络部分)——卷积直觉的第一名
- 李沐《论文精读》ResNet 一期 + 原论文 Deep Residual Learning(2015)
- CS231n 2024 新版公开课——后半程直接过渡到 Transformer
