图像分类
图像分类是计算机视觉领域最基础也最重要的任务之一。给定一张图像,模型需要从预定义的类别集合中选出最匹配的标签。这项看似简单的任务催生了深度学习革命,推动了整个 AI 领域的发展。
任务定义
图像分类的核心是学习一个映射函数 f:
f(图像 X) → 类别标签 y
- 输入:一张 RGB 图像,通常表示为形状
(H, W, 3)的张量 - 输出:类别概率分布,取概率最大的类别作为预测结果
- 训练信号:带标注的图像-标签对,使用交叉熵损失函数优化
图像分类的难点在于类内差异大(同一只猫可以有无数种姿势、光照、角度)和类间相似(不同品种的猫在外观上高度相似),需要模型学习具有泛化能力的视觉特征。
ImageNet 竞赛历史
ImageNet 大规模视觉识别挑战赛(ILSVRC)是推动图像分类技术发展的最重要的基准之一,共包含 120 万张训练图像、1000 个类别。
2012 年:AlexNet 引爆深度学习革命
2012 年之前,计算机视觉领域主流方法依赖手工设计的特征(SIFT、HOG),配合 SVM 分类器,Top-5 错误率长期徘徊在 26% 以上。
2012 年,Geoffrey Hinton 团队的 AlexNet 以 15.3% 的 Top-5 错误率赢得 ILSVRC,比第二名低了近 11 个百分点。这一突破验证了深度卷积神经网络(CNN)在大规模视觉识别中的有效性,正式开启了深度学习时代。
AlexNet 的关键创新:
- 使用 ReLU 激活函数代替 Sigmoid,大幅加速收敛
- 在 GPU(NVIDIA GTX 580)上并行训练
- 使用 Dropout 防止过拟合
- 数据增强(随机裁剪、水平翻转、颜色抖动)
2013-2019 年:CNN 架构快速演进
| 年份 | 模型 | Top-5 错误率 | 关键创新 |
|---|---|---|---|
| 2012 | AlexNet | 15.3% | 深度 CNN + ReLU + Dropout |
| 2014 | VGGNet | 7.3% | 全部使用 3×3 小卷积核,网络更深 |
| 2014 | GoogLeNet/Inception | 6.7% | Inception 模块,多尺度并行卷积 |
| 2015 | ResNet-152 | 3.57% | 残差连接,训练超过 100 层网络 |
| 2019 | EfficientNet | 2.9% | 复合缩放(宽度/深度/分辨率均衡扩展) |
CNN 架构演进详解
VGGNet(2014)
VGG 系列(VGG-16、VGG-19)证明了深度是提升性能的关键。通过统一使用 3×3 的卷积核,两个 3×3 卷积等价于一个 5×5 感受野,且参数量更少、非线性更强。
输入 → [Conv3×3 × N → MaxPool] × 5 → FC → FC → Softmax
VGGNet 结构简单、可解释性强,至今仍是特征提取迁移学习的常用 backbone。
ResNet(2015)
ResNet(深度残差网络)解决了深层网络训练中的梯度消失问题。核心思想是引入残差连接(Skip Connection):
输出 = F(x) + x # 学习残差而非全量映射
这使得梯度可以直接通过捷径通道回传,支持训练 50、101、152 甚至 1000 层以上的网络。ResNet 是目前工业界最广泛使用的 backbone 之一。
EfficientNet(2019)
EfficientNet 提出了复合缩放方法:同时按比例扩展网络的深度(层数)、宽度(通道数)和分辨率(输入图像大小)。相比 ResNet,EfficientNet 在相同 FLOPs 预算下取得更高精度,计算效率显著提升。
Vision Transformer(ViT):将图像视为序列
2020 年,Google 提出 Vision Transformer(ViT),首次将 Transformer 架构直接应用于图像分类,颠覆了 CNN 主导的格局。
核心思想:图像 Patch 化
ViT 将图像切分为固定大小的 Patch(如 16×16 像素),每个 Patch 线性投影为一个 embedding 向量,加上位置编码后作为序列送入标准 Transformer Encoder:
原始图像 (224×224×3)
→ 切分为 196 个 16×16 Patch
→ 每个 Patch 线性投影为 768 维向量
→ 加入 [CLS] token + 位置编码
→ Transformer Encoder(12 层)
→ [CLS] token 输出 → 分类头
ViT 的优劣势
- 优势:全局注意力机制能捕获长距离像素依赖,无归纳偏置(inductive bias),数据量足够时性能超越 CNN
- 劣势:需要大量训练数据(JFT-300M 级别),在小数据集上不如 CNN;计算复杂度与序列长度的平方成正比
后续改进
- DeiT:通过知识蒸馏让 ViT 在 ImageNet 上无需额外数据也能训练
- Swin Transformer:引入窗口注意力机制,将计算复杂度降为线性,成为下游任务的通用 backbone
- MAE(Masked Autoencoder):自监督预训练 ViT,随机遮掩 75% 的 Patch 并重建
当前 SOTA
在 ImageNet-1K 分类任务上,当前最佳模型(2024 年)Top-1 精度已超过 92%,主要由以下方向推动:
- 更大的预训练数据:在 JFT、LAION 等数十亿规模数据集上预训练
- 自监督学习:MAE、DINO v2 等方法不依赖标注数据即可学到强大的视觉表示
- 模型集成:多个 ViT 变体集成进一步提升精度
迁移学习在分类中的应用
实际业务中很少从头训练分类模型,迁移学习是标准做法:
- 选取预训练 backbone:ResNet-50、ViT-B/16、EfficientNet-B4 等
- 替换分类头:将最后的全连接层改为与目标类别数匹配的新层
- 微调策略:
- 特征提取:冻结 backbone,只训练分类头(数据量极少时)
- 全量微调:在目标数据集上端到端更新所有参数(数据量充足时)
- 逐层解冻:先训练分类头,再逐步解冻上层网络(折中方案)
评测指标
- Top-1 Accuracy:模型预测概率最高的类别与真实标签一致的比例,是最严格的评测标准
- Top-5 Accuracy:真实标签在模型预测的前 5 名类别中的比例,ImageNet 竞赛的传统指标
- 混淆矩阵:可视化各类别之间的错分情况,识别模型的系统性错误
- 推理延迟(Latency):在目标设备(GPU/CPU/边缘端)上的单张图像推理时间,工程部署时的关键指标