当前位置: 首页 > article >正文

图像分类(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曲线直观分析模型弱点。

通过合理选择指标,可以更全面地评估模型性能,尤其在复杂场景中避免单一指标的片面性。


http://www.kler.cn/a/523026.html

相关文章:

  • C# 与.NET 日志变革:JSON 让程序“开口说清话”
  • 求解旅行商问题的三种精确性建模方法,性能差距巨大
  • Elasticsearch——Elasticsearch性能优化实战
  • CRM 微服务
  • python:洛伦兹变换
  • 基于PostgreSQL的自然语义解析电子病历编程实践与探索(上)
  • 2001-2021年 全国各地级市宽带接入用户统计数据
  • npm cnpm pnpm npx yarn的区别
  • 《机器学习数学基础》补充资料:第343页结论证明
  • linux常用加固方式
  • 大语言模型LLM在地理信息GIS中应用场景
  • 【Validator】自定义字段、结构体补充及自定义验证,go案例讲解ReportError和errors.As在其中的使用
  • 2. Java-MarkDown文件解析-工具类
  • 20【变量的深度理解】
  • 最大值的期望 与 期望的最大值
  • mysql学习笔记-事务基础知识
  • 渗透测试之WAF规则触发绕过规则之规则库绕过方式
  • Linux进程调度与等待:背后的机制与实现
  • 大数据学习之Kafka消息队列、Spark分布式计算框架一
  • AWS SimSpace Weaver
  • 如何在本地部署deepseek r1模型?
  • 物业软件推动物业行业数字化转型 实现高效管理和优质客户体验
  • 【PyTorch】6.张量形状操作:在深度学习的 “魔方” 里,玩转张量形状
  • Couchbase UI: Query
  • 具身智能技术趋势
  • 编程语言中的常见Bug及解决方案