跳转至

Image Classificatin

Data-driven approach

  • 图像分类的问题:存在 semantic gap,计算机没有那种直觉,只能看到像素(数字)。

    • fine-grained categories,例如不同类的猫。
    • background clutter,背景可能和物体有聚合在一起。
    • illumination changes,例如同类物体在不同亮度下。
    • Occlusion,要识别的东西看你无法看不见全貌。
  • Machine Learning: Data-Driven Approach

    • Collect a dataset of images and labels
    • Use ML to train a classifier
    • Evaluate the classifier on new images
    • 不是用 human knowledge,而是 data-driven. 通常我们的模型会有 2 个 API:
      • train 返回某些统计模型。
      • predict 利用模型预测新图像。
  • Image Classification Datasets

    • MNIST

      • 10 classes(0 to 9)
      • 28*28 grayscale image
      • 50k training images, 10k test images

      Results from MNIST often do not hold on more complex datasets.
      MNIST 数据集比较简单,在这个数据集上表现很好并不足以说明这个模型足够好。

    • CIFAR-10

      • 10 classes
      • 50k training images(5k per class)
      • 10k testing images(1k per class)

      这个数据集比较 challenging,因为很难识别。

    • ImageNet

      • ~1.3M training images (~1.3K per class)
      • 50K validation images (50 per class)
      • 100K test images (100 per class)
      • test labels are secret!
      • performance metric: Top 5 accuracy Algorithm predicts 5 labels for each image; one of them needs to be right.

        预测前五个只要有一个对了,就认为预测成功。

      是图像分类的 gold standard.

    • MIT Places

      • ~8M training images
      • 18.25K val images (50 per class)
      • 328.5K test images (900 per class)
    • Omniglot
      • 1623 categories: characters
      • from 50 different alphabets
      • 20 images per category
      • Meant to test few shot learning

如何用更大的数据集来提高我们算法 robust 分类的能力。

First classifier: Nearest Neighbor

  • Idea: Memorize all data and labels. Predict the label of the most similar training image.
    记住所有数据和标签。预测时进行比较,找到最相似的图像,返回其标签。
  • Distance Metric
    • L1 distance \(d_1(I_1-I_2)=\sum_p|I_1^p - I_2^p|\)
  • Performance
    • training: \(O(1)\)
    • testing: \(O(N)\) this is bad! we can afford slow training, but need fast testing.

      实际上有算法计算近似的最近邻。

Problem

最近的邻居往往是视觉上比较类似的图像,但是这种方法在实际中并不总是有效的。


Nearest Neighbor Decision Boundaries

Untitled

  • 决策边界是两个分类区域的边界(can be noisy, affetecd by outliers)
  • 为了平滑这些决策,我们采用 KNN 的方式。即选前 k 近邻,进行多数投票。

    Example


    Untitled

    白色区域无法决定出结果(有 3 种不同颜色的点),需要其他启发式的方法。

  • Distance Metric
    不同的距离度量,决策边界有不同的性质。

    • L1 Manhattan
    • L2 Euclidean \(d_2(I_1, I_2)=\sqrt{\sum\limits_p (I_1^p - I_2^p)^2}\)

    如果距离度量选择正确,我们可以把 KNN 引用在任何类型的数据上。(虽然简单,但 robust)

Hyperparameters

  • 超参数:我们需要在学习中做出的选择,不一定能从数据中学习,而是直接设置。

    • What is the best value of K to use?
    • What is the best distance metric to use?

    Very problem-dependent. In general need to try them all and see what works best for our data / task. * Idea: - Choose hyperparameters that work best on the data (training set)

    BAD: K=1 总是在数据集上最好的。(因为数据总是能找到相同的)
    
    • Split data into train and test, choose hyperparameters that work best on test data.

      BAD: 不知道算法会在新的数据上的表现(被测试集污染)

    • Split data into train, val, and test; choose hyperparameters on val and evaluate on test.

      只有在测试的时候才接触你的测试集。

    • Cross-Validation: Split data into folds, try each fold as validation and average the results.

      交叉验证,将数据分为不同块。

      例如下面,我们可以用 1234 来训练,5 来验证;1235 来训练,4 来验证。etc.

      Example

      Untitled

      你可以为每个 fold 找到一个超参数的设置,然后平均得到结果。

      但是成本昂贵,在小的数据集是可以的,but not used too frequently in deep learning.

      交叉验证的结果


      Untitled

More about K-Nearest Neighbor

  • KNN 可以实现一个有趣的功能:Universal Approximation.

    • As the number of training samples goes to infinity, nearest neighbor can represent any(*) function!

      可以近似于任何函数。

      KNN 近似


      Untitled

  • Problem: Curse of Dimensionality

    维数灾难。

    For uniform coverage of space, number of training points needed grows exponentially with dimension.
    为了让训练集覆盖整个空间,我们需要的数据集呈指数级增炸。

    Example

    假设 1 维的时候有 4 个点,2 维就需要 4^2,3 维需要 4^3 个点才能实现相同的覆盖密度。

    对于 CIFAR-10 的图像,我们要覆盖空间(32*32 维的),需要 \(2^{32\times32}\approx 10^{308}\) 个图像。

    我们无法收集足够的数据。

  • KNN 在实际中很少用于像素。

    • 预测慢。
    • 无法获得足够的数据。
    • 原始像素值的距离度量在语义上意义不大。
    • But Nearest Neighbor with ConvNet features works well!

      不是用原始像素,而是神经网络提取出的特征向量。

Summary

Summary

  • In Image classification we start with a training set of images and labels, and must predict labels on the test set
  • Image classification is challenging due to the semantic gap: we need invariance to occlusion, deformation, lighting, intraclass variation, etc
  • Image classification is a building block for other vision tasks
  • The K-Nearest Neighbors classifier predicts labels based on nearest training examples
  • Distance metric and K are hyperparameters
  • Choose hyperparameters using the validation set; only run on the test set once at the very end!

评论