计算机视觉中的深度学习2: 图片分类

计算机视觉中的深度学习2: 图片分类

Slides:百度云

计算机与人眼的区别

对于一张灰度图片,计算机能看到的是像素大小的0~255的灰度值;对于RGB图片,则是一张像素大小的3通道矩阵,即800x600x3。

计算机视觉的挑战

  1. 视角变化的挑战
    1. 视角的变化带来的像素的变化是非常巨大的。
    2. 在不同的角度拍摄一只猫,人类很容易分辨这是同一种猫,而像素的变化却非常巨大,只有设计出了更加完备的算法才能让计算机程序更稳定地运行。
  2. 图片交叉的挑战
    1. 多只猫会重叠在一起。
  3. 粒度更细的分类
    1. 我们不仅仅需要分辨这是猫,我们还要分辨这是哪一个品种的猫。
  4. 杂乱的背景的影响
  5. 光线的变化
  6. 形状的变化

图片分类的作用

  1. 用在别的计算机视觉应用中
    1. Object detection
    2. Image captioning

图片分类的算法

  1. 传统计算机视觉算法
    1. 检测边缘,检测夹角等等
    2. 缺点:不够通用,当我们输入了一个非常复杂的算法能够识别猫了,同样的算法没法解决一个识别狗的问题。
  2. 机器学习方法
    1. 依赖数据源和分类器来进行识别
    2. 几个著名的数据集:
      1. MNIST:手写数字识别,10类
      2. CIFAR10:更大的RGB数据集,10类
      3. CIFAR100:同上,但有100类
      4. ImageNet:1000类,更大的数据集;广泛用于论文中
      5. MIT Places: 365类
    3. 训练集中用于训练的像素个数
      计算机视觉中的深度学习2: 图片分类

Nearest Neighbor

  1. 计算L1距离
    计算机视觉中的深度学习2: 图片分类
  2. 选出距离需要预测的图片最近的那个图片的类型

计算机视觉中的深度学习2: 图片分类

训练时间O(1),预测时间O(N)

缺点:

  1. 预测的速度太慢了。我们希望能够花更多时间在训练上,而不是预测上。
  2. 选出的类是总体来看长得非常相似的图片,而不是相似的图片上的物体。

K Nearest Neighbor

第一种算法是k=1的情况,在outlier上有着更糟糕的表现,因为一旦训练集有一些outlier,将会极大地影响边缘处的表现

计算机视觉中的深度学习2: 图片分类

当我们使用k=3时,我们有了更加平滑的分界线,也有了更加健壮的处理outlier的情况。

计算机视觉中的深度学习2: 图片分类

使用不同的距离计算方式

  1. L1距离
  2. L2距离(欧拉距离)
  3. 对于特殊的数据集,采用特殊的距离计算方式,可能会比传统距离计算方式有更优秀的结果。
    1. 例如,用tf-idf similarity来比较研究论文使用

示例网站

超参数

不能通过训练来学习的得到的参数,需要借用人类的知识去设置。(但是不排除通过别的神经网络来训练获得另一个神经网络的超参数。)

网络上所谓的调参工程师,其实也就是通过不断地训练,验证来获得最好的超参数,最终在测试集上面进行测试。

计算机视觉中的深度学习2: 图片分类

另类的Nearest Neighbor

  1. 结合ConvNet
    1. 通过ConvNet提取出图片的特征,比如,一个数组表示不同的特征值
    2. 再对这个特征值数组采用Nearest Neighbor算法,效果非常好

总结

  • 在图像分类中,我们从图像和标签的训练集开始,并且必须在测试集上预测标签。
  • 由于人类视觉和计算机视觉上的差距,图像分类具有挑战性:我们需要对遮挡,变形,光照,类内变异等保持不变。
  • 图像分类是其他视觉任务的基础。
  • K最近邻居分类器基于最近的训练示例预测标签距离度量和K是超参数。使用验证集选择超参数;最后只在测试集上运行一次!