第14章 计算机视觉与传统机器学习
在深度学习爆发之前,计算机视觉(Computer Vision, CV)领域的主要研究方向,是如何让机器从图像中“提取可用于机器学习的特征”,并用这些特征配合传统算法(如 SVM、KNN、Random Forest 等)完成分类、检测、识别等任务。
本章系统介绍传统机器学习在计算机视觉中的关键方法、特征工程技巧与经典应用案例。
14.1 图像特征(SIFT、HOG、LBP)
📷 1️⃣ 图像特征的概念
图像的像素本身只是数值(亮度、颜色),并不能直接代表“语义”。 图像特征提取的目标是:
将原始像素数据转化为对机器学习算法有意义的数值向量表示。
特征要尽可能:
- 稳定(对光照、旋转、尺度变化不敏感)
- 判别性强(不同类别的图像差异大)
- 可压缩(维度较低,便于计算)
🔹 2️⃣ SIFT(Scale-Invariant Feature Transform)
发明人:David Lowe(1999) 目标:找到图像中不随尺度、旋转、亮度变化而改变的关键点。
核心思想:
- 构建高斯金字塔(多尺度图像);
- 在不同尺度的图像中寻找局部极值点;
- 计算关键点周围梯度方向分布;
- 用 128 维向量描述关键点(描述符);
- 在图像匹配、拼接、目标识别中广泛应用。
优点:鲁棒性强、匹配效果好。 缺点:计算开销大,速度慢。
🔹 3️⃣ HOG(Histogram of Oriented Gradients)
发明人:Dalal & Triggs(2005) 经典用途:行人检测(Pedestrian Detection)
基本思路:
- 将图像分为小块(Cell);
- 统计每个 Cell 的梯度方向直方图;
- 对多个 Cell 归一化,形成 Block;
- 拼接成整体特征向量。
优点:对光照、阴影变化不敏感,计算效率高。 缺点:不具备旋转、尺度不变性。
🔹 4️⃣ LBP(Local Binary Pattern)
核心思想: 比较中心像素与周围像素亮度,大于中心像素记为 1,小于记为 0,形成二进制模式。
LBP 特征用途:
- 人脸识别(经典)
- 纹理分类
- 场景识别
特点:
- 简单快速;
- 对光照变化鲁棒;
- 但对旋转和噪声敏感。
🔹 5️⃣ 其他传统特征
| 特征 | 说明 |
|---|---|
| SURF | SIFT 的加速版,使用积分图和近似滤波器 |
| Gabor | 模仿视觉皮层神经元响应的滤波器 |
| Color Histogram | 颜色分布特征 |
| Edge/Corner Features | 如 Harris、FAST、Canny 边缘检测等 |
14.2 图像分类与目标检测
🧩 图像分类的传统流程
在深度学习之前,图像分类几乎都遵循以下流程:
- 图像预处理:灰度化、归一化、去噪;
- 特征提取:如 SIFT、HOG;
- 特征编码:Bag of Visual Words(BoVW)、Fisher Vector;
- 分类器训练:SVM、KNN、Random Forest;
- 评估预测。
📌 BoVW 模型(经典)
- 借鉴 NLP 的「词袋模型」;
- 将局部特征(如 SIFT)聚类成“视觉词汇表”;
- 图像用这些词频统计表示;
- 最后用 SVM 分类。
🎯 目标检测的传统方法
目标检测需要找出“图像中目标的位置 + 类别”。
深度学习前的主流方法:
- Sliding Window + Classifier 在图像上滑动窗口,对每个区域提取 HOG 特征,使用 SVM 分类;
- DPM(Deformable Part Model) 模拟物体由多个部分组成的结构(Felzenszwalb, 2008);
- Selective Search + SVM 在深度学习出现之前,R-CNN 就是基于这种候选区域思想发展的。
这些方法计算量大,但为后来的 CNN 检测算法(如 Faster R-CNN)奠定了基础。
14.3 人脸识别中的机器学习
人脸识别是计算机视觉最早的成功领域之一。
📷 经典流程:
-
人脸检测
- Viola-Jones 算法(2001):基于 Haar 特征 + AdaBoost 分类器
- 经典、实时、高效,被广泛用于早期相机“人脸框检测”
-
人脸特征提取
- PCA(Eigenfaces)
- LDA(Fisherfaces)
- LBP(纹理特征)
-
分类与识别
- KNN 或 SVM 分类
- 最近邻匹配 + 阈值判断
📘 在深度学习出现前,人脸识别主要依靠统计学习(PCA/LDA)与纹理特征。 而 2014 年之后(DeepFace, FaceNet),深度学习彻底取代了这些传统方法。
14.4 视觉特征与深度学习的衔接
传统视觉算法与深度学习之间并非割裂,而是连续演化:
| 阶段 | 特征提取方式 | 分类器 | 典型方法 | 特点 |
|---|---|---|---|---|
| 早期(1990s) | 手工特征(SIFT, HOG) | SVM / KNN | BoVW, DPM | 特征依赖人工经验 |
| 过渡期(2010s) | 特征学习(Autoencoder, Sparse Coding) | SVM / Softmax | Deep Feature + SVM | 尝试自动学习特征 |
| 深度学习时代(2012-) | 端到端 CNN | Softmax / Transformer Head | AlexNet, ResNet, ViT | 特征自动学习、性能爆发 |
💡 深度学习的本质突破:
- 不再手工提取特征,而是通过反向传播自动学习“最佳特征”;
- 从“人工设计特征” → “数据驱动学习特征”的范式转变。
✅ 小结
| 模块 | 关键思想 | 代表算法 |
|---|---|---|
| 图像特征提取 | 提取可判别的局部/全局特征 | SIFT, HOG, LBP |
| 图像分类 | 特征 + 分类器(SVM/KNN) | BoVW, HOG+SVM |
| 目标检测 | 滑窗 + 分类器 | DPM, Viola-Jones |
| 人脸识别 | 特征降维 + 分类 | PCA, LDA, LBP |
| 深度衔接 | 从人工特征 → 自动学习特征 | CNN, ViT |
