图像分类(image classification)简介
文章目录
- 经典网络:
- **1. LeNet-5(1998)**
- **2. AlexNet(2012)**
- **3. VGGNet(2014)**
- **4. GoogLeNet / Inception v1(2014)**
- **5. ResNet(2015)**
- **6. DenseNet(2017)**
- **7. MobileNet系列(2017起)**
- **8. EfficientNet(2019)**
- **9. Vision Transformer(ViT, 2020)**
- **其他重要模型**
- **应用场景建议**
- 开源数据集
- **1. MNIST**
- **2. CIFAR-10 / CIFAR-100**
- **3. ImageNet**
- **4. Fashion-MNIST**
- **5. SVHN(Street View House Numbers)**
- **6. Caltech-101 / Caltech-256**
- **7. Places365**
- **8. COCO(Common Objects in Context)**
- **9. Oxford Flowers-102**
- **10. Tiny ImageNet**
- **其他重要数据集**
- **数据集获取方式**
- **选择建议**
- 评价指标
- **1. 基础指标**
- **(1) 准确率 (Accuracy)**
- **(2) 混淆矩阵 (Confusion Matrix)**
- **(3) 精确率 (Precision)**
- **(4) 召回率 (Recall / Sensitivity)**
- **(5) F1-Score**
- **2. 多分类任务的扩展指标**
- **(1) 宏平均 (Macro-Average)**
- **(2) 微平均 (Micro-Average)**
- **(3) 加权平均 (Weighted Average)**
- **(4) Top-k 准确率 (Top-k Accuracy)**
- **3. 数据不均衡时的专用指标**
- **(1) ROC曲线与AUC值**
- **(2) PR曲线 (Precision-Recall Curve)**
- **(3) Cohen's Kappa系数**
- **(4) 马修斯相关系数 (MCC)**
- **4. 其他实用指标**
- **(1) 分类报告 (Classification Report)**
- **(2) 混淆矩阵可视化**
- **(3) 特定领域指标**
- **5. 指标选择建议**
- **总结**
(csdn同步)
经典网络:
在图像分类任务中,许多经典的神经网络模型推动了深度学习的发展。以下是具有里程碑意义的模型及其核心特点:
1. LeNet-5(1998)
- 提出者:Yann LeCun
- 特点:最早的卷积神经网络(CNN)之一,用于手写数字识别(MNIST)。
- 结构:2层卷积 + 3层全连接,使用Sigmoid激活函数和平均池化。
2. AlexNet(2012)
- 关键突破:2012年ImageNet竞赛冠军(Top-5错误率15.3%),首次验证CNN在大规模分类任务中的有效性。
- 创新点:
- 使用ReLU激活函数加速训练。
- 引入Dropout防止过拟合。
- 多GPU并行训练。
- 结构:5层卷积 + 3层全连接。
3. VGGNet(2014)
- 核心思想:通过堆叠小卷积核(3×3)构建深层网络,简化结构设计。
- 变体:VGG16(16层)和VGG19(19层)。
- 影响:证明了网络深度对性能的重要性。
4. GoogLeNet / Inception v1(2014)
- 创新点:
- Inception模块:并行使用不同尺寸的卷积核(1×1、3×3、5×5)和池化,融合多尺度特征。
- 引入辅助分类器缓解梯度消失。
- 后续版本:Inception v3(优化卷积分解)、Inception-ResNet(结合残差连接)。
5. ResNet(2015)
- 里程碑:ImageNet 2015冠军(Top-5错误率3.57%),首次训练超百层网络。
- 残差学习(Residual Block):通过跳跃连接(Skip Connection)解决梯度消失问题,使网络深度可达152层(ResNet-152)。
- 变体:ResNet-50、ResNet-101等。
6. DenseNet(2017)
- 密集连接(Dense Block):每一层的输入是前面所有层的输出拼接,促进特征复用,减少参数数量。
7. MobileNet系列(2017起)
- 目标:轻量化模型,适用于移动端。
- 关键技术:
- 深度可分离卷积(Depthwise Separable Convolution)降低计算量。
- MobileNet v2引入倒残差结构(Inverted Residual)和线性瓶颈层。
8. EfficientNet(2019)
- 核心方法:复合缩放(Compound Scaling),平衡网络的深度、宽度和输入分辨率,实现高效性能。
- 变体:EfficientNet-B0到B7,参数量与精度逐步提升。
9. Vision Transformer(ViT, 2020)
- 突破:将Transformer结构引入图像分类,将图像分割为Patch序列处理。
- 特点:依赖大规模数据(如JFT-300M),在ImageNet上表现优于CNN。
其他重要模型
- SqueezeNet:极简参数(<1MB),保持AlexNet精度。
- ShuffleNet:通道混洗(Channel Shuffle)降低计算成本。
- NASNet:通过神经架构搜索(NAS)自动设计网络结构。
- Xception:扩展Inception,用深度可分离卷积替代传统卷积。
应用场景建议
- 轻量级部署:MobileNet、ShuffleNet、EfficientNet。
- 高精度需求:ResNet、ViT、EfficientNet。
- 历史研究参考:LeNet、AlexNet、VGG。
这些模型不仅推动了图像分类的进步,还为后续目标检测、分割等任务提供了基础架构。随着Transformer和NAS技术的发展,模型设计逐渐向自动化、高效化演进。
开源数据集
在图像分类任务中,许多经典的开源数据集被广泛用于模型训练和性能评估。以下是常用的、具有代表性的数据集及其特点:
1. MNIST
- 年份:1998
- 类别数:10(手写数字0-9)
- 图像数量:60k训练 + 10k测试
- 分辨率:28×28 灰度图
- 特点:最简单的入门级数据集,常用于验证算法基础能力。
2. CIFAR-10 / CIFAR-100
- 年份:2009
- 类别数:CIFAR-10(10类)、CIFAR-100(100类)
- 图像数量:50k训练 + 10k测试
- 分辨率:32×32 彩色图
- 特点:小尺寸自然图像(如动物、交通工具),适合测试轻量模型的泛化能力。
3. ImageNet
- 年份:2009(持续更新)
- 类别数:1k(常用子集) / 21k(全量)
- 图像数量:约1.2M训练 + 50k验证(ILSVRC 2012子集)
- 分辨率:可变(通常缩放到224×224或更大)
- 特点:
- 图像分类领域的“黄金标准”,涵盖广泛自然物体类别。
- 推动了许多经典模型(如AlexNet、ResNet)的诞生。
- 需注意:全量数据需申请下载,常用子集可通过Kaggle或学术申请获取。
4. Fashion-MNIST
- 年份:2017
- 类别数:10(服装、鞋包等)
- 图像数量:60k训练 + 10k测试
- 分辨率:28×28 灰度图
- 特点:MNIST的升级版,更具实际意义,适合替代原始MNIST。
5. SVHN(Street View House Numbers)
- 年份:2011
- 类别数:10(门牌号数字0-9)
- 图像数量:73k训练 + 26k测试
- 分辨率:32×32 彩色图
- 特点:从谷歌街景中截取的门牌号图像,背景复杂,适合测试鲁棒性。
6. Caltech-101 / Caltech-256
- 年份:2003 / 2007
- 类别数:101类 / 256类
- 图像数量:每类约40-800张(共约9k / 30k)
- 分辨率:可变(约300×200)
- 特点:物体分类经典数据集,但类别样本不均衡。
7. Places365
- 年份:2016
- 类别数:365(场景类别,如“森林”“机场”)
- 图像数量:约1.8M训练 + 36.5k验证
- 分辨率:可变(通常处理为256×256)
- 特点:场景分类基准数据集,适合研究场景理解任务。
8. COCO(Common Objects in Context)
- 年份:2014(持续更新)
- 类别数:80(物体类别)
- 图像数量:约118k训练 + 5k验证
- 分辨率:可变(高分辨率)
- 特点:虽然主要用于目标检测和分割,但也支持多标签分类任务。
9. Oxford Flowers-102
- 年份:2008
- 类别数:102(花卉种类)
- 图像数量:约1k训练 + 6k测试
- 分辨率:可变(高分辨率)
- 特点:细粒度分类任务(Fine-Grained Classification)的经典数据集。
10. Tiny ImageNet
- 年份:2015
- 类别数:200
- 图像数量:100k训练 + 10k验证 + 10k测试
- 分辨率:64×64 彩色图
- 特点:ImageNet的简化版,适合计算资源有限的场景。
其他重要数据集
- STL-10:10类未标记+标记数据,用于半监督学习。
- CUB-200-2011(鸟类细粒度分类):200种鸟类,11k+图像。
- Food-101:101类食物图像,5k训练+5k测试。
- iNaturalist:长尾分布数据集,涵盖动植物物种(如iNat-2021包含10k类)。
- CheXpert:医学X光图像分类数据集(14类病理标签)。
数据集获取方式
- 官方渠道:Kaggle、官网(如ImageNet需申请)、学术机构发布页面。
- 框架内置接口:通过PyTorch(
torchvision.datasets
)或TensorFlow(tf.keras.datasets
)直接加载(如MNIST、CIFAR)。 - 学术云平台:Google Dataset Search、Papers with Code等。
选择建议
- 入门学习:MNIST → CIFAR-10 → Fashion-MNIST
- 研究验证:ImageNet(子集)、CUB-200(细粒度)
- 工业级训练:ImageNet、COCO、Places365
- 轻量化测试:Tiny ImageNet、CIFAR-100
- 领域特定:CheXpert(医学)、Food-101(食品)
这些数据集覆盖了从简单到复杂、通用到领域的多样化需求,是图像分类算法开发和性能评估的重要基础资源。
评价指标
在图像分类任务中,选择合适的评价指标对模型性能的评估至关重要。以下是常用的核心评价指标及其适用场景和计算方法:
1. 基础指标
(1) 准确率 (Accuracy)
- 公式:
[
\text{Accuracy} = \frac{\text{正确预测的样本数}}{\text{总样本数}}
] - 适用场景:类别均衡的二分类或多分类任务。
- 局限性:数据不均衡时容易误导(例如99%的负样本,模型全预测负类也能达到99%准确率)。
(2) 混淆矩阵 (Confusion Matrix)
- 内容:
- TP (True Positive):正类预测为正类
- TN (True Negative):负类预测为负类
- FP (False Positive):负类预测为正类
- FN (False Negative):正类预测为负类
- 作用:直观展示分类结果,是计算其他指标的基础。
(3) 精确率 (Precision)
- 公式:
[
\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}
] - 意义:预测为正类的样本中,实际为正类的比例。
- 适用场景:注重减少误报(如垃圾邮件检测)。
(4) 召回率 (Recall / Sensitivity)
- 公式:
[
\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}
] - 意义:实际为正类的样本中,被正确预测的比例。
- 适用场景:注重减少漏报(如疾病诊断)。
(5) F1-Score
- 公式:
[
\text{F1} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
] - 意义:精确率和召回率的调和平均,平衡两者矛盾。
- 适用场景:类别不均衡或需要综合评估精确率和召回率。
2. 多分类任务的扩展指标
(1) 宏平均 (Macro-Average)
- 计算方式:对每个类别的指标(如Precision、Recall)单独计算后取算术平均。
- 特点:平等看待每个类别,适合类别均衡的场景。
(2) 微平均 (Micro-Average)
- 计算方式:将所有类别的TP、FP、FN汇总后计算全局指标。
- 特点:受大类别影响更大,适合类别不均衡但关注整体性能的场景。
(3) 加权平均 (Weighted Average)
- 计算方式:按每个类别的样本数加权平均。
- 特点:在类别不均衡时更合理。
(4) Top-k 准确率 (Top-k Accuracy)
- 定义:模型预测概率前k高的类别中包含真实标签的比例。
- 适用场景:细粒度分类或类别语义相似的任务(如ImageNet常用Top-5)。
3. 数据不均衡时的专用指标
(1) ROC曲线与AUC值
- ROC曲线:以假正率(FPR)为横轴,真正率(TPR)为纵轴绘制的曲线。
- AUC值:曲线下面积,衡量模型区分正负类的能力,值越接近1越好。
- 适用场景:二分类不均衡任务(如欺诈检测)。
(2) PR曲线 (Precision-Recall Curve)
- 绘制方式:以召回率为横轴,精确率为纵轴。
- 特点:在不均衡数据中比ROC曲线更敏感。
- AP (Average Precision):PR曲线下面积,综合评估精确率和召回率。
(3) Cohen’s Kappa系数
- 公式:
[
\kappa = \frac{p_o - p_e}{1 - p_e}
]
其中 (p_o) 是实际一致率,(p_e) 是随机一致率。 - 意义:排除随机猜测后的分类一致性评估,范围[-1, 1],值越高越好。
- 适用场景:标注者一致性评估或类别高度不均衡的任务。
(4) 马修斯相关系数 (MCC)
- 公式:
[
\text{MCC} = \frac{\text{TP} \times \text{TN} - \text{FP} \times \text{FN}}{\sqrt{(\text{TP}+\text{FP})(\text{TP}+\text{FN})(\text{TN}+\text{FP})(\text{TN}+\text{FN})}}
] - 特点:综合考虑所有类别,范围[-1, 1],对不均衡数据鲁棒。
4. 其他实用指标
(1) 分类报告 (Classification Report)
- 内容:输出每个类别的精确率、召回率、F1-Score及平均值。
- 实现(Python示例):
from sklearn.metrics import classification_report print(classification_report(y_true, y_pred, target_names=class_names))
(2) 混淆矩阵可视化
- 实现(Python示例):
import seaborn as sns from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_true, y_pred) sns.heatmap(cm, annot=True, fmt="d", cmap="Blues")
(3) 特定领域指标
- 医学图像:特异性(Specificity)、敏感性(Sensitivity)。
- 工业质检:误检率(False Alarm Rate)、漏检率(Miss Rate)。
5. 指标选择建议
场景 | 推荐指标 |
---|---|
类别均衡的多分类 | 准确率、宏平均F1、混淆矩阵 |
类别不均衡的二分类 | AUC-ROC、PR曲线、F1-Score、MCC |
细粒度分类(如动物品种) | Top-k准确率、每类精确率/召回率 |
医学诊断等高风险任务 | 敏感性、特异性、Cohen’s Kappa |
实时性要求高的轻量模型 | 准确率、模型推理速度(FPS) |
总结
- 基础任务:优先使用准确率、混淆矩阵、F1-Score。
- 不均衡数据:选择AUC-ROC、PR曲线、MCC或加权平均。
- 模型对比:结合多个指标(如同时报告准确率和F1)。
- 可视化:通过混淆矩阵和ROC曲线直观分析模型弱点。
通过合理选择指标,可以更全面地评估模型性能,尤其在复杂场景中避免单一指标的片面性。