使用特征提取器和降维构建图像分类/聚类任务的管道(MNIST 数据示例)

信息处理 图像处理 matlab 计算机视觉 机器学习 降维
2022-01-04 02:44:43

在 MNIST 中,有 28x28 的手写数字图像。
在不涉及任何深度学习的情况下,为了分类需要提取哪些特征?

降维如何进入处理管道?

1个回答

特征提取

图像有许多现代已知的特征。他们之中:

  1. 轻快的功能
  2. 快速功能
  3. 哈里斯功能
  4. 风特点
  5. MSER 特征
  6. ORB 特征
  7. 筛选特征
  8. 冲浪功能
  9. LBP 特征
  10. 猪的特点

这些都是经典和流行的功能。由于深度学习的蓬勃发展,人们对研究新功能的投资越来越少。

基本上,每个任务的最佳特征提取是同时提取相关特征和低维度的特征。没有单一的最优特征提取器。尽管对于自然图像,我们可以看到现代网络(深度学习)可以很好地泛化。

以下部分中的附加代码是通用的,您可以使用不同的功能来获得更好的结果。

图像分类管道(无深度学习)

备注:我们将使用 MNIST 数据集分析这项工作。虽然结果很好,但我没有交叉验证任何步骤。所以它是概念的表示。然而,对于现实世界,应该优化每个块。

在经典机器学习中,标准管道可能类似于:

                               Input Image
                                    │
                                    │
      ┌─────────────────────────────▼─────────────────────────┐
      │                                                       │
      │                      Pre Processing                   │
      │                                                       │
      └─────────────────────────────┬─────────────────────────┘
                                    │
                                    │
      ┌─────────────────────────────▼─────────────────────────┐
      │                                                       │
      │ Feature Extraction and / or Dimensionality Reduction  │
      │                                                       │
      └─────────────────────────────┬─────────────────────────┘
                                    │
                                    │
      ┌─────────────────────────────▼─────────────────────────┐
      │                                                       │
      │                        Classifier                     │
      │                                                       │
      └───────────────────────────────────────────────────────┘

备注
上述流程使用ASCII Flow

这里的重点是特征提取/降维/特征选择(它们可以按顺序完成,但有一些。

我们在 MNIST 中拥有的每张图像都是 28x28 的图像。即我们在中有数据。 我们将构建我们的管道如下:R784

  1. 预处理
    我们什么都不做。虽然可以通过一些小技巧(旋转、噪声、移位等)大大增加训练样本的数量。
  2. 特征提取
    我们将使用LPB 特征这是图像处理任务的一个众所周知且非常通用的功能。
  3. 降维
    我们将使用LDA 进行监督线性降维也可以使用 PCA。但是接下来这个阶段的输出属性会完全不同。
  4. 分类器
    我们将使用带高斯核的 SVM。

备注:请注意,可能直接在带有分类器的数据上使用 t-SNE 会产生更好的结果。因此,在这种情况下,t-SNE 既是特征提取器又是降维。任何好的特征提取器都应该这样做。但问题在于将 t-SNE 用于测试集。

应用 LDA 后,我们得到(只看前 2 个特征):

在此处输入图像描述

与 t-SNE / UMAP 相比,结果略好于我们在使用线性判别分析 (LDA) 的图像聚类中得到的结果

使用分类器,我们得到以下混淆矩阵:

在此处输入图像描述

我们得到了91.48%成功率。
在我们的时代,它一点也不令人印象深刻。但它仍然显示了一个管道的公式。

深度学习的神奇之处在于,第一层通过学习而不是硬编码的特征提取器/降维来完成这项工作。

该代码可在我的StackExchange Codes Signal Processing Q80949 GitHub 存储库中找到(查看SignalProcessing\Q80994文件夹)。