Repository navigation
Module 03: Computer Vision
zimingttkx edited this page Dec 13, 2025
·
1 revision
计算机视觉 - 系统学习 CNN 架构演进与视觉任务。
| Attribute | Value |
|---|---|
| Prerequisites | Module 02 |
| Duration | 3-4 weeks |
| Notebooks | 18+ |
| Difficulty | ⭐⭐⭐ Intermediate |
- ✅ 理解卷积神经网络的原理
- ✅ 掌握经典 CNN 架构 (LeNet → ViT)
- ✅ 应用迁移学习和微调技术
- ✅ 使用 Grad-CAM 等可视化技术解释模型
LeNet (1998) → AlexNet (2012) → VGG (2014)
5 layers 8 layers 16-19 layers
60K params 60M params 138M params
↓ ↓ ↓
GoogLeNet (2014) → ResNet (2015) → DenseNet (2016)
Inception Skip connections Dense connections
22 layers 50-152 layers 121-264 layers
↓ ↓ ↓
EfficientNet (2019) → Vision Transformer (2020) → Swin (2021)
Compound scaling Self-attention Shifted windows
5.3M-66M params 86M-632M params 88M-197M params
| Topic | Key Concepts | Notebooks |
|---|---|---|
| Convolution | Filters, Stride, Padding | 01_convolution.ipynb |
| Pooling | Max, Average, Global | 02_pooling.ipynb |
| Architecture Design | Feature Extraction + Classifier | 03_architecture.ipynb |
Key Equations:
Convolution:
(I * K)ᵢⱼ = Σₘ Σₙ I(i+m, j+n) · K(m, n)
Output Size:
O = (I - K + 2P) / S + 1
where I=input, K=kernel, P=padding, S=stride
| Architecture | Key Innovation | Notebooks |
|---|---|---|
| LeNet-5 | First successful CNN | 01_lenet.ipynb |
| AlexNet | ReLU, Dropout, GPU | 02_alexnet.ipynb |
| VGG | Small filters (3×3) | 03_vgg.ipynb |
| GoogLeNet | Inception modules | 04_googlenet.ipynb |
| ResNet | Residual connections | 05_resnet.ipynb |
| DenseNet | Dense connections | 06_densenet.ipynb |
| EfficientNet | Compound scaling | 07_efficientnet.ipynb |
| Technique | Description | Notebooks |
|---|---|---|
| Feature Extraction | Freeze backbone | 01_feature_extraction.ipynb |
| Fine-tuning | Unfreeze layers | 02_fine_tuning.ipynb |
| Progressive Resizing | Curriculum learning | 03_progressive.ipynb |
Example:
base_model = keras.applications.ResNet50(
weights='imagenet',
include_top=False,
input_shape=(224, 224, 3)
)
base_model.trainable = False
model = keras.Sequential([
base_model,
keras.layers.GlobalAveragePooling2D(),
keras.layers.Dense(256, activation='relu'),
keras.layers.Dropout(0.5),
keras.layers.Dense(num_classes, activation='softmax')
])| Technique | Purpose | Notebooks |
|---|---|---|
| Grad-CAM | Class activation maps | 01_gradcam.ipynb |
| Occlusion Sensitivity | Region importance | 02_occlusion.ipynb |
| Filter Visualization | Feature detectors | 03_filters.ipynb |
| Model | ImageNet Top-1 | Params | FLOPs |
|---|---|---|---|
| ResNet-50 | 76.1% | 25.6M | 4.1G |
| ResNet-152 | 78.3% | 60.2M | 11.6G |
| EfficientNet-B0 | 77.1% | 5.3M | 0.4G |
| EfficientNet-B7 | 84.3% | 66M | 37G |
| ViT-B/16 | 77.9% | 86M | 17.6G |
| ViT-L/16 | 79.7% | 304M | 61.6G |
AI-Practices | GitHub | Documentation | MIT License