使用图像数据集进行探索性数据分析

数据挖掘 机器学习 Python 神经网络 r 计算机视觉
2021-09-18 12:02:49

在 Kaggle 上的机器学习内核中,我经常看到带有结构化数据的 EDA。所以,我想知道,对于图像数据集的 EDA 是否有任何推荐/标准程序。你进行什么样的统计分析,你画什么样的图,你有什么目标?

4个回答

看看HASYv2 数据集我尝试做尽可能多的探索性工作,以确保其他人可以直接使用数据集尝试更有趣的事情。

图像格式特定的东西

  • (最小值/中值/平均值/最大值)(宽度/高度/面积)
  • 图像格式
  • 时间戳
  • Exiff 元数据

对于这种东西,你可能想看看edapy.

图像/ML 特定的东西

您可以对图像执行的操作:

  • 计算平均图像
    • 按类别平均图像
  • 特征脸(或者更确切地说是“特征图像”)
  • 费雪脸

您可以计算像素的相关性,例如图 3

在此处输入图像描述

分类特定的东西

  • 绘制类的分布。
  • 标准分类算法(CNN、VGG-16)的行为
  • 混淆矩阵排序(第 48 - 52 页,尤其是图 5.12 和 5.13):查找相似的类

在此处输入图像描述

由于我们谈论的是视觉数据,我建议对相似图像执行从预训练神经网络中提取的图像特征的聚类,例如,如果它的相机图像模型在 imagenet 上训练,如果它的 CG(计算机生成图像,例如卡通)在类似数据集上训练的模型,并执行 T-SNE 可视化,并直观地检查集群。这可能是在图像数据集上执行 EDA 的一种方式。

图像数据集上 T-SNE 的示例图像:链接

很多方法可以为基于 CV 的模型处理 EDA,因为 CV 模型可以解决的问题有很多维度。我喜欢将第一步分为两类:

Annotation Metrics:你的数据集中类的分布是什么?哪些班级人数过多,哪些班级人数不足?一个类的所有实例是否在数据集中共享相同的位置和方向,或者它们是否不同?这种 EDA 通常看起来像数据集中类的直方图或饼图(下面是显示 Coco val 2017 数据集中存在的类的饼图);这使得很容易看出哪些类与它们在该领域的出现不一致。一旦你知道了这个问题的答案,你就可以收集更多的数据或增加你所拥有的。

Coco Val Instances 2017 类饼图

Image Metrics:你在用什么样的图像训练你的模型?这些图像的条件(亮度、尺寸、分辨率)是否与您在现场获得的相同?更经典的计算机视觉指标的 EDA 可以看起来像散点图、条形图或任何您将用于通用 EDA 的可视化技术,因为图像指标可以像任何其他统计数据一样归结为数字。图像指标是相当标准的,因为计算机视觉比花哨的 ML 技术存在的时间要长得多。下面是 Coco val 2017 数据集中蓝色通道的像素值散点图示例 - 可以清楚地看到大多数图像聚集在哪里,以及异常值在哪里。

Coco Val Instances 2017 蓝色像素值散点图

计算机视觉的 EDA 就像任何其他领域的 EDA - 困难的部分是在深入研究 EDA 之前了解图像处理和注释所特有的指标。一旦你对这两个分析分支有了很好的理解,就更容易将经典的 EDA 技术应用于大型图像和注释数据集。要更全面地了解用于 CV 应用程序的 EDA,请查看我为工作而写的这篇博客。EDA 之所以如此强大,是因为它可以帮助生成可操作的见解,从而使您的最终解决方案在部署后变得更加强大。

视频中显示的 Lev Manovich 的想法显示了如何通过将图像显示为图表中的点来最有效地将图片数据绘制到图表上。

当某一点出现有趣的行为时,您可以立即观察图像。

有一个关于在xy空间上绘制时间序列数据的例子,从每日曲线的形式来看,一天有异常。直接放大照片就可以看到发生了火灾的景观。从平均值黑白图中,您不会立即获得这种观察结果。