CNN 深度技术详解:从卷积数学原理到现代计算机视觉工程实践
CNN(Convolutional Neural Network,卷积神经网络)是深度学习历史上最重要的模型架构之一。
从图像分类、目标检测、图像分割,到OCR、人脸识别、医学影像和视频分析,CNN曾经长期占据计算机视觉的核心位置。
即使今天 Vision Transformer(ViT)和多模态大模型快速发展,CNN依然没有消失。相反,理解CNN仍然是理解现代Computer Vision、理解视觉模型和理解神经网络底层计算机制的重要基础。
本文不把CNN简单理解为“卷积 + 池化 + 全连接”,而是从数学、计算图和工程实现三个层面重新理解CNN。
一、CNN到底解决了什么问题?
假设有一张RGB图片:
224 × 224 × 3
如果使用传统全连接神经网络:
224 × 224 × 3
↓
150528
↓
Dense
↓
Dense
↓
Prediction
第一个全连接层假设有1000个神经元,那么参数数量:
150528 × 1000
≈ 150 million
这会产生两个严重问题:
- 参数量巨大
- 完全忽略图像的空间结构
图片中相邻像素通常具有强相关性:
Pixel
↓
Neighbor Pixel
↓
Local Pattern
↓
Object
例如:
边缘
↓
纹理
↓
局部形状
↓
物体部件
↓
完整物体
CNN的核心思想就是:
利用局部连接和参数共享,在保持空间结构的同时提取视觉特征。
二、CNN最核心的三个思想
CNN真正重要的不是“卷积”两个字,而是三个设计思想:
1. Local Connectivity
2. Parameter Sharing
3. Hierarchical Feature Learning
2.1 Local Connectivity:局部连接
假设:
5 × 5 Image
我们不让一个神经元连接所有25个像素,而只观察:
3 × 3
区域:
┌───────────────┐
│ │
│ ┌───────┐ │
│ │ 3 × 3 │ │
│ │ Kernel│ │
│ └───────┘ │
│ │
└───────────────┘
这样神经元只关注局部区域。
这与视觉系统中的局部感受野具有一定的对应关系。
三、Parameter Sharing:参数共享
这是CNN最重要的设计之一。
假设一个3×3卷积核:
1 0 -1
1 0 -1
1 0 -1
它可能用于检测:
垂直边缘。
这个Kernel不是只使用一次,而是在整张图片上滑动:
Image
↓
Kernel
↓
左上区域
↓
右移
↓
继续计算
↓
整个Image
也就是说:
同一组参数被重复用于不同空间位置。
这就是参数共享。
四、卷积到底在计算什么?
假设输入:
3 × 3
为:
1 2 3
4 5 6
7 8 9
Kernel:
1 0
0 1
进行一次卷积:
1×1 + 2×0
+ 4×0 + 5×1
得到:
6
Kernel向右移动:
2 3
5 6
得到:
2×1 + 3×0
+ 5×0 + 6×1
= 8
继续移动:
3 4
6 7
得到:
10
于是形成:
6 8
12 14
这就是Feature Map。
五、严格来说,CNN使用的是Cross-Correlation
很多教材直接把这个操作叫Convolution。
但从数学定义来说,深度学习框架中的:
torch.nn.Conv2d
通常执行的是cross-correlation,而不是严格意义上的数学卷积。
严格卷积需要:
Kernel Flip
即:
a b
c d
变成:
d c
b a
而深度学习中通常直接使用原始Kernel进行滑动计算。
由于Kernel参数本身是通过训练学习得到的,因此这种差异通常不影响神经网络的表达能力。
六、CNN输入数据到底是什么?
对于普通RGB图片:
Height × Width × Channels
例如:
224 × 224 × 3
但是PyTorch默认格式是:
Batch × Channels × Height × Width
即:
N × C × H × W
例如:
32 × 3 × 224 × 224
表示:
Batch = 32
Channels = 3
Height = 224
Width = 224
这是PyTorch CNN开发必须熟悉的数据格式。
七、一个卷积层包含什么?
例如:
nn.Conv2d(
in_channels=3,
out_channels=64,
kernel_size=3
)
含义:
输入Channel
↓
3
↓
3 × 3 Kernel
↓
64个Filter
↓
64个Feature Maps
所以:
Output Channels = Number of Filters
八、卷积核和Filter有什么区别?
实际工程中经常混用。
对于:
Input Channels = 3
一个完整Filter实际上不是:
3 × 3
而是:
3 × 3 × 3
因为它需要覆盖RGB三个Channel。
如果:
Input Channels = 64
Output Channels = 128
Kernel = 3 × 3
参数量:
128 × 64 × 3 × 3
再加上Bias:
128
总参数:
128 × 64 × 3 × 3 + 128
= 73856
九、卷积输出尺寸怎么算?
这是CNN面试和实际开发中非常重要的公式。
对于二维卷积:
H_out =
floor(
(H + 2P - D(K-1) - 1) / S
+ 1
)
W方向同理。
其中:
H = Input Height
W = Input Width
K = Kernel Size
P = Padding
S = Stride
D = Dilation
如果:
H = 32
K = 3
P = 1
S = 1
D = 1
那么:
H_out
=
(32 + 2 - 3) / 1 + 1
=
32
所以:
32 × 32
经过:
3 × 3
Padding=1
Stride=1
尺寸保持不变。
十、Stride:卷积移动的步长
Stride决定Kernel每次移动多少像素。
例如:
Stride = 1
表示:
→
每次移动1个Pixel
而:
Stride = 2
表示:
→→
每次移动2个Pixel
因此Stride越大:
Feature Map尺寸越小
例如:
224 × 224
↓
Stride = 2
↓
112 × 112
Stride本身就可以承担Downsampling作用。
十一、Padding:为什么需要补零?
如果没有Padding:
Input
↓
3 × 3 Kernel
↓
Output尺寸减少
例如:
32 × 32
↓
3 × 3
↓
30 × 30
连续使用很多卷积后:
32
↓
30
↓
28
↓
26
↓
...
空间尺寸会快速缩小。
Padding可以保持尺寸。
例如:
Input:
32 × 32
Padding:
1
Kernel:
3 × 3
Output:
32 × 32
十二、“Same"和"Valid”
常见概念:
Same
Valid
Valid
不Padding:
Input
↓
Kernel
↓
Output尺寸缩小
Same
通过Padding使:
Output ≈ Input
在Stride=1、奇数Kernel时尤其常见。
十三、多个Filter意味着什么?
假设:
Input:
224 × 224 × 3
第一层:
Conv2D
64 Filters
输出:
224 × 224 × 64
这64个Channel并不是64张原始图片。
而是:
64种不同的特征响应。
例如某些Filter可能学习:
Filter 1 → Vertical Edge
Filter 2 → Horizontal Edge
Filter 3 → Corner
Filter 4 → Texture
Filter 5 → Color Pattern
这些特征不是人工定义的,而是训练过程中自动学习出来的。
十四、CNN的层级特征学习
这是理解CNN最重要的概念之一。
CNN浅层:
Pixel
↓
Edge
中层:
Edge
↓
Texture
↓
Shape
深层:
Shape
↓
Part
↓
Object
例如识别猫:
Layer 1
↓
边缘
Layer 2
↓
纹理
Layer 3
↓
耳朵、眼睛
Layer 4
↓
猫脸
Layer 5
↓
Cat
这就是:
Hierarchical Representation Learning
十五、ReLU为什么需要存在?
卷积之后通常需要激活函数。
最经典的是:
ReLU(x) = max(0, x)
例如:
-3 → 0
-1 → 0
0 → 0
2 → 2
5 → 5
代码:
nn.ReLU()
为什么需要它?
因为如果所有层都只是:
Linear
+
Linear
+
Linear
最终仍然可以表示成一个线性变换。
ReLU引入非线性:
Conv
↓
ReLU
↓
Conv
↓
ReLU
于是网络拥有更强的表达能力。
十六、为什么CNN通常是Conv + ReLU?
经典结构:
Input
↓
Conv
↓
ReLU
↓
Conv
↓
ReLU
↓
Pooling
现代网络可能进一步加入:
BatchNorm
Dropout
Residual Connection
Attention
形成:
Conv
↓
BatchNorm
↓
ReLU
↓
Conv
↓
Residual
十七、Pooling是什么?
Pooling用于:
降低Feature Map空间尺寸。
最经典的是Max Pooling:
2 × 2
例如:
1 3
2 4
Max Pooling:
4
对于:
4 × 4
可以变成:
2 × 2
十八、Max Pooling到底保留了什么?
例如:
1 2 1 0
3 8 2 1
0 1 5 2
2 3 1 4
2×2 Max Pool:
8 2
3 5
它保留:
局部区域中的最强激活。
所以可以理解成:
Feature Detector
↓
强响应
↓
Max Pooling
↓
保留最明显特征
十九、Average Pooling
另一种是:
Average Pooling
例如:
1 2
3 4
平均值:
(1+2+3+4)/4
=2.5
相比Max Pooling:
Max Pooling
→ 强调最强特征
Average Pooling
→ 强调整体统计
现代CNN中,Global Average Pooling非常常见。
二十、Global Average Pooling
假设:
7 × 7 × 512
经过:
Global Average Pooling
变成:
1 × 1 × 512
于是得到:
512-dimensional vector
然后可以直接:
Linear
↓
Classes
这可以减少大量参数。
二十一、经典CNN结构:LeNet
LeNet是CNN历史上的经典架构。
大致:
Input
↓
Conv
↓
Pooling
↓
Conv
↓
Pooling
↓
FC
↓
Output
它主要用于:
手写数字识别。
LeNet的重要意义是证明:
卷积 + 局部连接 + 参数共享可以有效解决视觉识别问题。
二十二、AlexNet:深度学习视觉革命
2012年的AlexNet是CNN发展史上的重要节点。
核心特点:
- 更深的网络
- ReLU
- GPU训练
- Dropout
- Data Augmentation
- Max Pooling
结构可以简化理解为:
Image
↓
Conv
↓
ReLU
↓
Pool
↓
Conv
↓
ReLU
↓
Pool
↓
...
↓
FC
↓
Classification
AlexNet推动了深度学习重新成为Computer Vision主流。
二十三、VGG:用小卷积堆叠深度
VGG的重要思想:
使用多个3×3卷积代替较大的卷积核。
例如:
7 × 7
可以用:
3 × 3
3 × 3
3 × 3
进行堆叠。
优势:
更多非线性
更深的网络
更小的Kernel
经典:
VGG16
VGG19
二十四、为什么多个3×3比一个7×7更有吸引力?
假设单个:
7 × 7
参数:
49C²
三个:
3 × 3
参数:
27C²
同时还增加了多次非线性激活。
所以:
3×3
↓
ReLU
↓
3×3
↓
ReLU
↓
3×3
具有更强的表达能力。
二十五、ResNet:解决深层网络训练问题
随着网络越来越深:
20层
↓
50层
↓
100层
↓
1000层
出现:
Degradation Problem
不是简单的过拟合,而是网络越深,优化反而变困难。
ResNet提出:
Residual Connection
二十六、Residual Connection
传统:
x
↓
F(x)
↓
y
ResNet:
┌──────────────┐
│ │
x ─────┼→ F(x) ───────┤
│ ↓
└────────────→ +
↓
y
数学:
y = F(x) + x
也就是说网络不直接学习:
H(x)
而是学习:
F(x) = H(x) - x
这让深层网络更容易优化。
二十七、ResNet为什么如此重要?
因为Residual Connection后来不仅影响CNN,也影响了Transformer。
现代Transformer中:
x
↓
Attention
↓
Add(x)
↓
LayerNorm
也存在类似:
Residual Connection
因此:
ResNet不仅是CNN架构,它影响了现代深度学习架构设计。
二十八、Batch Normalization
BatchNorm用于稳定网络训练。
基本思想:
原始激活
↓
Normalize
↓
Scale
↓
Shift
即:
x
↓
(x - μ) / √(σ² + ε)
↓
γx + β
它可以:
- 稳定训练
- 改善梯度传播
- 加快收敛
经典CNN结构:
Conv
↓
BatchNorm
↓
ReLU
二十九、Dropout
Dropout是一种正则化方法。
训练过程中:
Neuron
Neuron
Neuron
Neuron
随机关闭部分神经元。
例如:
○ ○ × ○ × ○
目的是减少:
Overfitting
不过现代CNN中,随着BatchNorm、Data Augmentation、Weight Decay等方法普及,Dropout的使用方式已经发生变化。
三十、CNN完整结构
一个经典CNN可以表示:
Input Image
│
↓
Conv2D
│
↓
BatchNorm
│
↓
ReLU
│
↓
Conv2D
│
↓
ReLU
│
↓
MaxPooling
│
↓
Conv Block
│
↓
Conv Block
│
↓
Global Average Pool
│
↓
Linear
│
↓
Softmax
│
↓
Classification
三十一、Softmax是什么?
假设模型输出:
[2.1, 0.8, -1.2]
Softmax将它转成概率:
[0.75, 0.20, 0.05]
公式:
P_i = e^z_i / Σ e^z_j
最终:
Cat: 0.75
Dog: 0.20
Car: 0.05
预测:
Cat
三十二、CNN是如何训练出来的?
整个训练过程:
Image
↓
CNN Forward
↓
Prediction
↓
Loss
↓
Backpropagation
↓
Gradient
↓
Optimizer
↓
Update Weights
↓
Repeat
例如:
loss.backward()
optimizer.step()
三十三、Loss Function
分类任务常用:
Cross Entropy Loss
例如:
criterion = nn.CrossEntropyLoss()
如果真实标签:
Cat
模型预测:
Cat = 0.9
Dog = 0.1
Loss较低。
如果:
Cat = 0.01
Dog = 0.99
Loss很高。
模型通过Loss知道:
当前预测距离正确答案有多远。
三十四、CNN反向传播到底发生了什么?
Forward:
Input
↓
Conv
↓
ReLU
↓
Conv
↓
Loss
Backward:
Loss
↓
∂Loss/∂Conv2
↓
∂Loss/∂ReLU
↓
∂Loss/∂Conv1
↓
∂Loss/∂Kernel
最终更新:
Kernel
所以CNN中的:
Edge Detector
Texture Detector
Shape Detector
并不是人工写出来的。
而是:
通过反向传播自动学习出来的。
三十五、CNN如何学习一个Edge Detector?
假设模型发现:
Kernel A
能够让某种边缘产生较高激活。
那么训练过程会:
Prediction错误
↓
Loss
↓
Gradient
↓
调整Kernel
↓
Edge响应增强
经过数百万次训练样本后:
随机Kernel
↓
有意义的Feature Detector
逐渐形成。
这就是Representation Learning。
三十六、感受野 Receptive Field
CNN另一个非常重要的概念:
Receptive Field
一个神经元最终能够“看到”原始图片中的多大区域?
例如:
Layer 1
3×3
感受野:
3×3
再经过一个:
3×3
理论感受野变成:
5×5
再加一层:
7×7
因此:
Network越深
↓
Receptive Field越大
浅层:
Local Features
深层:
Global / Semantic Features
三十七、Dilation Convolution
普通卷积:
● ● ●
● ● ●
● ● ●
Dilation可以扩大Kernel的间隔:
● ● ●
● ● ●
● ● ●
这样可以:
增大感受野,同时不显著增加参数量。
常用于:
- Semantic Segmentation
- Image Processing
- Dense Prediction
三十八、Depthwise Separable Convolution
普通卷积:
Input
↓
Standard Conv
↓
Output
Depthwise Separable Convolution:
Input
↓
Depthwise Conv
↓
Pointwise Conv
↓
Output
Pointwise就是:
1 × 1 Conv
这种设计可以显著降低计算量。
典型代表:
MobileNet
三十九、1×1 Convolution有什么用?
很多人第一次看到:
Conv2d(kernel_size=1)
会觉得:
1×1卷积不是没有空间感受野吗?
它的重要作用之一是:
改变Channel维度。
例如:
56 × 56 × 256
经过:
1 × 1 Conv
64 filters
得到:
56 × 56 × 64
空间尺寸不变,但Channel从:
256 → 64
因此1×1 Conv可以理解成:
对每一个像素位置上的Channel向量进行一次Linear Projection。
四十、CNN计算量如何估算?
卷积层FLOPs通常与:
H × W × Cin × Cout × K²
有关。
例如:
H = 56
W = 56
Cin = 64
Cout = 128
K = 3
计算规模大约:
56 × 56 × 64 × 128 × 9
因此CNN优化时需要重点关注:
Feature Map Size
Channels
Kernel Size
Batch Size
四十一、CNN为什么适合GPU?
CNN本质上包含大量:
Matrix Operation
Tensor Operation
Parallel Computation
例如:
Image
↓
Millions of Multiply-Add
↓
GPU
GPU拥有大量计算核心,非常适合执行这类高度并行的运算。
PyTorch:
model.cuda()
就可以把模型放到GPU上。
四十二、PyTorch实现一个CNN
一个简单的CNN:
import torch
import torch.nn as nn
class CNN(nn.Module):
def __init__(self, num_classes=10):
super().__init__()
self.features = nn.Sequential(
nn.Conv2d(3, 32, 3, padding=1),
nn.BatchNorm2d(32),
nn.ReLU(),
nn.Conv2d(32, 64, 3, padding=1),
nn.BatchNorm2d(64),
nn.ReLU(),
nn.MaxPool2d(2),
nn.Conv2d(64, 128, 3, padding=1),
nn.BatchNorm2d(128),
nn.ReLU(),
nn.AdaptiveAvgPool2d(1)
)
self.classifier = nn.Linear(
128,
num_classes
)
def forward(self, x):
x = self.features(x)
x = torch.flatten(x, 1)
return self.classifier(x)
这里:
Input
3 × H × W
↓
Conv 32
↓
Conv 64
↓
MaxPool
↓
Conv 128
↓
Global Average Pool
↓
128
↓
Linear
↓
Classes
四十三、为什么使用AdaptiveAvgPool2d?
传统CNN经常:
Flatten
↓
Fully Connected
例如:
7 × 7 × 512
Flatten:
25088
然后:
25088 → 4096
参数量巨大。
使用:
nn.AdaptiveAvgPool2d(1)
直接得到:
1 × 1 × 512
因此:
512 → Classes
参数大幅下降。
四十四、CNN中的Data Augmentation
训练图像模型时,数据增强非常重要。
常见:
Random Crop
Random Flip
Rotation
Color Jitter
Resize
Normalization
例如:
from torchvision import transforms
transform = transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
])
为什么有效?
因为我们希望模型学习:
Object
而不是:
Specific Pixel Arrangement
例如猫向左:
Cat →
和猫向右:
← Cat
应该属于同一类别。
四十五、CNN在目标检测中的应用
CNN不只是分类。
目标检测任务:
Image
↓
CNN Backbone
↓
Feature Maps
↓
Detection Head
↓
Bounding Boxes
例如:
┌──────────────────────┐
│ │
│ ┌───────┐ │
│ │ Cat │ │
│ └───────┘ │
│ ┌───┐ │
│ │Dog│ │
│ └───┘ │
└──────────────────────┘
经典模型:
R-CNN
Fast R-CNN
Faster R-CNN
YOLO
SSD
RetinaNet
很多经典检测模型都以CNN作为Backbone。
四十六、CNN在图像分割中的应用
语义分割:
Image
↓
CNN Encoder
↓
Feature
↓
Decoder
↓
Pixel-level Prediction
经典架构:
U-Net
FCN
DeepLab
最终输出:
每一个Pixel
↓
Class
例如:
Pixel 1 → Road
Pixel 2 → Road
Pixel 3 → Car
Pixel 4 → Person
四十七、CNN与Transformer的关系
近年来:
CNN
↓
ViT
↓
Swin Transformer
↓
Vision-Language Model
↓
Multimodal LLM
Transformer在视觉领域快速发展。
但是不能简单认为:
CNN已经被Transformer淘汰。
二者解决问题的思路不同。
四十八、CNN vs Vision Transformer
CNN:
Local
↓
Hierarchical
↓
Global
Transformer:
Patch
↓
Attention
↓
Global Interaction
CNN天然具有:
Locality
Translation Equivariance
Parameter Sharing
Transformer更加擅长:
Long-range Dependency
Global Context
Flexible Attention
四十九、为什么Transformer需要大量数据?
CNN拥有比较强的Inductive Bias:
Locality
Spatial Structure
Translation Equivariance
也就是说CNN:
对图像结构已经有先验假设。
Transformer的先验更弱。
因此通常需要更多数据来学习:
什么是局部关系?
什么是空间关系?
什么是物体结构?
这也是CNN在数据规模有限的视觉任务中仍然具有价值的原因之一。
五十、现代CNN已经发生了什么变化?
现代CNN已经不再是简单:
Conv
↓
Pool
↓
Conv
↓
Pool
而是逐渐演化为:
Residual
Depthwise Conv
Attention
Normalization
Large Kernel
Multi-scale
Feature Pyramid
代表架构包括:
ResNet
DenseNet
MobileNet
EfficientNet
ConvNeXt
其中ConvNeXt尤其值得关注。
五十一、ConvNeXt:现代CNN重新思考
ConvNeXt的思想之一是:
把Transformer时代的一些设计经验重新应用到CNN。
例如:
Large Kernel
LayerNorm
Depthwise Conv
Modern Training Recipe
这说明一个非常重要的事实:
CNN和Transformer并不是完全割裂的两套体系。
现代视觉模型正在不断融合两者的思想。
五十二、CNN真正的核心知识体系
如果把CNN压缩成一张知识地图:
CNN
│
├── Tensor
│
├── Convolution
│ ├── Kernel
│ ├── Filter
│ ├── Stride
│ ├── Padding
│ └── Dilation
│
├── Feature
│ ├── Edge
│ ├── Texture
│ ├── Shape
│ └── Semantic
│
├── Downsampling
│ ├── MaxPool
│ ├── AvgPool
│ └── Stride Conv
│
├── Nonlinearity
│ └── ReLU
│
├── Normalization
│ └── BatchNorm
│
├── Optimization
│ ├── Loss
│ ├── Backprop
│ └── Optimizer
│
├── Architecture
│ ├── LeNet
│ ├── AlexNet
│ ├── VGG
│ ├── ResNet
│ ├── MobileNet
│ └── ConvNeXt
│
└── Applications
├── Classification
├── Detection
├── Segmentation
├── OCR
└── Video
五十三、作为AI Engineer,CNN应该学到什么程度?
如果目标是AI应用开发,不一定需要自己实现一个完整CNN训练框架。
但是以下内容必须理解:
第一层:必须掌握
Tensor
Conv
Kernel
Channel
Stride
Padding
Pooling
ReLU
Feature Map
第二层:深入理解
Forward
Backpropagation
Gradient
Loss
Optimizer
Receptive Field
BatchNorm
Residual
第三层:模型架构
LeNet
AlexNet
VGG
ResNet
MobileNet
EfficientNet
ConvNeXt
第四层:工程实践
PyTorch
CUDA
GPU
Mixed Precision
Data Augmentation
Distributed Training
Model Export
Inference
五十四、CNN最重要的本质
如果只记住CNN的几个核心思想,可以记住:
CNN
│
┌─────────┼─────────┐
↓ ↓ ↓
Local Sharing Hierarchy
│ │ │
↓ ↓ ↓
局部 参数共享 层级特征
│ │ │
└─────────┼─────────┘
↓
Visual Representation
↓
Classification / Detection
Segmentation / Recognition
CNN真正厉害的地方不是:
“用一个3×3的Kernel扫描图片。”
而是:
通过局部连接和参数共享,把原始像素逐层转换成越来越抽象的视觉表示。
最终:
Pixels
↓
Edges
↓
Textures
↓
Shapes
↓
Objects
↓
Semantics
这就是CNN最核心的思想。
五十五、从CNN进一步理解现代AI
如果继续向现代AI发展,可以沿着下面的技术演化理解:
CNN
│
├── ResNet
│
├── Object Detection
│
├── Semantic Segmentation
│
├── Vision Transformer
│
├── CLIP
│
├── Vision-Language Model
│
└── Multimodal LLM
最终会发现:
CNN
↓
Computer Vision
↓
Visual Representation
↓
Multimodal Representation
↓
Vision-Language Model
↓
Multimodal Agent
所以学习CNN并不是学习一项“过时技术”,而是在学习:
现代视觉AI的基础计算思想。
结语
CNN经历了从LeNet、AlexNet、VGG到ResNet,再到MobileNet、EfficientNet和ConvNeXt的发展。
它解决的核心问题始终没有改变:
如何让神经网络高效地从空间结构数据中学习层级化特征。
从工程角度看,CNN最值得掌握的不是背诵网络结构,而是理解:
Input Tensor
↓
Convolution
↓
Feature Extraction
↓
Non-linearity
↓
Downsampling
↓
Hierarchical Representation
↓
Prediction
↓
Loss
↓
Backpropagation
↓
Weight Update
一旦真正理解这条链路,后面学习:
ResNet
MobileNet
EfficientNet
ConvNeXt
ViT
Swin Transformer
CLIP
Vision-Language Model
Multimodal LLM
都会容易很多。
CNN不是计算机视觉的终点,而是理解现代视觉AI的一个重要起点。