一、前言
此示例说明如何使用 HOG 功能和多类 SVM 分类器对数字进行分类。
对象分类是许多计算机视觉应用中的一项重要任务,包括监控、汽车安全和图像检索。例如,在汽车安全应用程序中,您可能需要将附近的对象分类为行人或车辆。无论要分类的对象类型如何,创建对象分类器的基本过程是:
-
获取带有所需对象图像的标记数据集。
-
将数据集分区为训练集和测试集。
-
使用从训练集中提取的特征训练分类器。
-
使用从测试集中提取的特征测试分类器。
为了说明这一点,此示例展示了如何使用 HOG(定向梯度直方图)特征和多类 SVM(支持向量机)分类器对数字进行分类。这种类型的分类通常用于许多光学字符识别 (OCR) 应用程序。
二、数字数据集
合成数字图像用于训练。每个训练图像都包含一个被其他数字包围的数字,这模仿了数字通常一起看到的方式。使用合成图像很方便,它可以创建各种训练样本,而无需手动收集它们。对于测试,手写数字扫描用于验证分类器对与训练数据不同的数据的性能。虽然这不是最具代表性的数据集,但有足够的数据来训练和测试分类器,并显示该方法的可行性。
用于将与每个标签关联的图像数制成表格。在此示例中,训练集由 101 位数字中的每一个的 10 张图像组成。测试集由每个数字 12 张图像组成。
显示一些训练和测试图像
在训练和测试分类器之前,将应用预处理步骤来消除收集图像样本时引入的噪声伪影。这为训练分类器提供了更好的特征向量。
三、使用 HOG 功能
用于训练分类器的数据是从训练图像中提取的 HOG 特征向量。因此,确保 HOG 特征向量编码有关对象的适量信息非常重要。该函数返回一个可视化输出,可以帮助形成一些关于“适量信息”含义的直觉。通过改变 HOG 像元大小参数并可视化结果,您可以看到像元大小参数对特征向量中编码的形状信息量的影响。
可视化显示,单元格大小 [8 8] 不会编码太多形状信息,而单元格大小 [2 2] 编码大量形状信息,但显著增加了 HOG 特征向量的维数。一个很好的折衷方案是 4 x 4 的像元大小。此大小设置编码足够的空间信息以直观地识别数字形状,同时限制 HOG 特征向量中的维度数,这有助于加快训练速度。在实践中,应通过重复的分类器训练和测试来改变HOG参数,以确定最佳参数设置。
四、训练数字分类器
数字分类是一个多类分类问题,您必须将图像分类为十个可能的数字类中的一个。在此示例中,统计和机器学习工具箱™中的函数用于使用二进制 SVM 创建多类分类器。
首先从训练集中提取 HOG 特征。这些功能将用于训练分类器。接下来,使用提取的特征训练分类器。
五、评估数字分类器
使用测试集中的图像评估数字分类器,并生成混淆矩阵以量化分类器的准确性。
与训练步骤一样,首先从测试图像中提取 HOG 特征。这些功能将用于使用经过训练的分类器进行预测。
该表以百分比形式显示混淆矩阵。矩阵的列表示预测的标签,而行表示已知标签。对于此测试集,数字 0 经常被错误分类为 6,很可能是由于它们的形状相似。在 9 和 3 中也可以看到类似的错误。与使用此合成数据集创建的分类器相比,使用更具代表性的数据集(如 MNIST [2] 或 SVHN [3])进行训练,其中包含数千个手写字符,可能会产生更好的分类器。
六、总结
此示例演示了使用计算机视觉工具箱中的函数和统计和机器学习工具箱中的函数创建多类对象分类器的基本过程。尽管这里使用了 HOG 特征和 ECOC 分类器,但其他特征和机器学习算法可以以相同的方式使用。例如,您可以探索使用不同的特征类型来训练分类器;或者,您可以看到使用统计和机器学习工具箱™中提供的其他机器学习算法(例如 k 近邻)的效果。
七、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序下载:基于matlab使用HOG功能和多类SVM分类器对数字进行分类资源-CSDN文库