电子书

第 2 章

准备数据


您要处理的数据具有异构性。这些数据具有多个来源(传感器、数据库、音频文件等)、采用多种格式、涉及不同领域,且具有不同的时间间隔。同时,数据还含有噪声。

如何有效准备所有这些数据十分关键。如果想在 AI 系统中使用这些数据,则必须对其进行滤波、清理以及标注。

这项工作说起来简单,做起来却费时费力。例如:

  • 如果数据集过大,无法加载至内存中,该怎么办?
  • 如何对数据进行预处理才能让网络给出准确结果?
  • 标注所有数据的最快方式是什么?
  • 如果数据量不足以训练网络,该怎么办?

下面介绍 MATLAB 如何帮助您应对此类挑战。

大型数据集可能表现为两种形式:无法放入可用内存的过大文件,或者需要较长时间才能完成处理的文件。大型数据集也可能是大量小文件的集合。

MATLAB 提供了处理大型数据集所需的工具。具体包括:

数据存储。您可以按需随时加载数据,而不必将所有数据一并加载至内存中。数据存储相当于指向数据的指针。

tall 数组。tall 数组支持您处理以数组方式存储的、行数过多以至无法加载至内存中的数值数据。

bigImage。bigimage 对象能够将大图像表示为可独立加载和处理的较小分块。

理想情况下,所有图像都应该清晰、锐利,以原始画质呈现,不需要进行任何预处理。不过,视觉检查系统所用的数据基本上不可能是原始画质。光照条件可能不够理想,导致一些主要特征不鲜明。另一方面,图像中可能充斥着网络不需要的特征:例如,半导体数据包含过多形状和图像,使得异常检测极为困难。

数据预处理能让您事半功倍。清晰整洁的图像能极大地改善算法预测准确度。例如,下方的绘图对比了预处理前后的网络结果。

 

Figure 1

对于每个输入图像,网络会根据目标存在缺陷的可能性打分。对数据进行预处理后,如右侧绘图所示,所有缺陷单位均集中在左侧。显然,对图像进行预处理后,网络可以更好地分辨零部件是否存在缺陷。

根据数据情况与分类目标,您可以选用以下方法对图像进行预处理:

  • 配准错位图像。如果各图像均以相同的方式对齐,则可更轻松地对其进行分类。
  • 调整图像强度。增强图像,使其在背景中突出显示。
  • 分割或阈值分割。使用聚类等方法将图像从复杂背景、金属碎屑或其他视觉干扰中分离出来。
  • 执行区域分析。根据形状、尺寸、颜色等特征定义缺陷。

 

Figure 1

深度学习离不开大量标注数据。标注越是充分、准确,网络的性能也就越好。

数据标注定义了您想在网络中进行识别和分类的数据特征。不过,数据标注极为耗时且极易出错:想象一下,在数千张图像中手动绘制边界框,或者手动定义这么多图像中每个像素的类,会是多大的工作量!

MATLAB 提供各种交互式工具,帮助您自动执行这一极为耗时的步骤。例如:

图像标注器与视频标注器可对图像区域进行分类,并自动在视频中的每一帧上应用分类。

信号标注器与音频标注器,它们与图像标注器类似,内置了多项自动化功能,可提高信号数据的标注速度。

大图像标注器支持以交互方式标注大图像。您不必为提取补片、标注补片、重构图像之类的步骤费神。借助该工具,您可以直接在图像中移动并对各部分进行标注。

如果需要实现更高的准确度,或要将模型应用于更广泛的信号类型或使用场景,则可能需要额外数据。您可能需要另一个(可能更复杂的)模型,该模型需要更多数据和标签。

除了生成新数据,一种常见的策略是通过数据增强根据原始数据集生成额外数据。数据增强一般可使用简单的几何变换方法实现。

MATLAB 中的数据变换命令会对数据集应用随机变换,例如裁剪、旋转、调整大小、平移以及翻转。您还可执行颜色变换操作,比如色调和对比度抖动,从而扩展数据集。

 

Figure 1

您可以将这些文件作为新图像输出并添加至数据集中。